Всем привет. Продолжу легкий ликбез в области тестирования и создания систем торговли.
Сегодня решил выложить ряд формул для метастока, индикаторов под литерой А в квике.
Сразу определимся, для чего я это делаю. Среди великого множества дико богатых и удачливых трейдеров на этом ресурсе, ещё оказывается появляются личности незнакомые с основами тех анализа, личности, тестирующие системы из расчета цен закрытия, но делающие сделки по открытию расчетной свечи и т.д. В общем и целом попытаюсь уменьшить индекс тупизма и незнания на Smart-labе.
Еще, мнение своё можете сразу засунуть куда подальше и писать только по делу. Пост тупо информационный.
- AC («Ускорение/Замедление») –
Mov(H,5,S)-Mov(H,34,S) — Mov(Mov(H,5,S)-Mov(H,34,S),5,S)
(5 и 34 стандарные параметры)
2. ADX («Индекс направления движения усредненной цены»)
PlusDM:= If(HIGH>Ref(HIGH,-1),Abs(HIGH-Ref(HIGH,-1)), 0);
MinusDM:= If(LOW<Ref(LOW,-1), Abs(Ref(LOW,-1)-LOW), 0);
tr:=Max(Max(Abs(HIGH-LOW), Abs(HIGH-Ref(CLOSE,-1))),Abs(LOW-Ref(CLOSE,-1)));
SDIPlus:= If(tr<>0,(100 * PlusDM/TR),0);
SDIMinus:= If(tr<>0,(100 * MinusDM/TR),0);
DIPlus:= Mov(SDIPlus,12,E);
DIMinus:= Mov(SDIMinus,12,E);
DXX:=Abs(DIPlus-DIMinus)/(DIPlus+DIMinus);
{Rule}
100*Mov(DXX,12,E)
(период 12 )
- A/D («Накопление/распределение»)
ADn:=(2*CLOSE-HIGH-LOW)/(HIGH-LOW)*VOLUME;
ADn+Ref(ADn,-1)
- AMA (Adaptive Moving Average)
Periods := Input(«Time Periods»,1,1000, 10);
Direction := CLOSE — Ref(CLOSE,-periods);
Volatility := Sum(Abs(ROC(CLOSE,1,$)),periods);
ER := Abs(Direction/Volatility);
FastSC := 2/(2 + 1);
SlowSC := 2/(30 + 1);
SSC := ER * (FastSC — SlowSC) + SlowSC;
Constant := Pwr(SSC,2);
AMA := If(Cum(1) = periods +1, Ref(CLOSE,-1)+ constant * (CLOSE- Ref(CLOSE,-1)),PREV + constant * (CLOSE — PREV));
AMA
(период вводим сами)
- AO («Чудесный осциллятор»)
Mov((HIGH+LOW)/2,5,S)-Mov((HIGH+LOW)/2,34,S)
(соответственно 5 и 34 периоды )
- ATR (Average True Range)
{Get the required ATR period;}
period:=Input(«ATR Period :»,1,100,5);
{Calculate the biggest difference based on the true range concept;}
diff1:=Max(H-L,Abs(H-Ref(C,-1)));
diff2:=Max(diff1,Abs(L-Ref(C,-1)));
{Use Wilders’ moving average method to calculate the Average True Range;}
Mov(diff2,period*2-1,E)
Далее, при тестировании систем не обязательно пользоваться только ценами открыт, закрыт, хаи и лаи при указании когда совершать сделки. Откройте глаза и ставьте значения индикаторов. Тогда проскальзывание будет мин.
- ATR Trailing Stop
{Get the required ATR period;}
period:=Input(«ATR Period :»,1,100,5);
{Calculate the biggest difference based on the true range concept;}
diff1:=Max(H-L,Abs(H-Ref(C,-1)));
diff2:=Max(diff1,Abs(L-Ref(C,-1)));
{Use Wilders’ moving average method to calculate the Average True Range;}
Mov(diff2,period*2-1,E)
Удачи…… и прилагайте усилия для получения прибыли
P.S. перепишите минусы и ковычки, писал в ворде отсюда и микрокосяк
H>Mov(H,5,E) AND Mov(h,5,E)>Mov(h,20,E)
в графе order type — stop-- пишем
Max( Max(Mov(h,5,E),Mov(h,20,E)),open)
т.е. мы выбираем максимальное между средней с периодом 5, 20 и ценой открытия, т.к. open может оказаться максимумом. Непосредственно high не используем т.к. нас интересует только цена в момент пересечения. как то так…
MIN(MIN(Mov(L,5,E),Mov(L,20,E)),open)
просто сходство реала и метастока почти 100% и сделки пойдут только по ценам от формул. так то так
не обязательно след… delay order openind ставь 0 и будет текущий, по откр, закр, хаю или лаю, что выберешь, иначе сработает формула…
но не надо забывать что система может быть заточена строго под условие к примеру OPEN и формулу можно не писать, всё равно будет опен
При построении 3 линий, т.е.:
Первая как написана при Pr:=C;
Вторая при Pr:=H;
третья при Pr:=L;
Получаем канал.
Использую эту линию для написания MACD да для других индикаторах.
Посмотрите как они прекрасны на дневных графиках.
Интересно работать в канале.
P1:=6; Pr:=C; MA:=Mov(Pr,P1,TRI); Shift:=Round(p1/2); center:=LastValue(Shift); CMA:=Ref(MA,center); y:=LastValue(CMA+PREV-PREV); CMA:=If(y>0,y,Pr); CMA1:=Ref(Mov(Pr,P1-1,TRI),center-1); y:=LastValue(CMA1+PREV-PREV); CMA1:=If(y>0,y,Pr); CMA2:=Ref(Mov(Pr,P1-2,TRI),center-2); y:=LastValue(CMA2+PREV-PREV); CMA2:=If(y>0,y,Pr); CMA3:=Ref(Mov(Pr,P1-3,TRI),center-3); y:=LastValue(CMA3+PREV-PREV); CMA3:=If(y>0,y,Pr); CMA4:=Ref(Mov(Pr,P1-4,TRI),center-4); y:=LastValue(CMA4+PREV-PREV); CMA4:=If(y>0,y,Pr); CMA5:=Ref(Mov(Pr,P1-5,TRI),center-5); y:=LastValue(CMA5+PREV-PREV); CMA5:=If(y>0,y,Pr); CMAP:= If(Cum(1)=LastValue(Cum(1)-center+1),CMA1, If(Cum(1)=LastValue(Cum(1)-center+2),CMA2, If(Cum(1)=LastValue(Cum(1)-center+3),CMA3, If(Cum(1)=LastValue(Cum(1)-center+4),CMA4, If(Cum(1)=LastValue(Cum(1)-center+5),CMA5,CMA))))); CMAP;