|
Формулы для MetaStock
Библиотека торговых систем
Заранее прошу извинить, если вы обнаружите ошибки в формулах - какие-то знаки и скобки могли потеряться. Метасток поправит их, когда вы будете вставлять формулы в тестер. В конце концов, главное не формула, а идея.
1. Системы на основе скользящих средних
1MA-S&R Система с открытием и закрытием позиций по пересечеию одной скользящей средней (Stop & Revers, S&R – открытие новой позиции всегда означает закрытие предыдущей позиции, противоположно направленной) Enter Long C > Mov(C,opt1,E) AND Ref(C,-1) <= Ref( Mov(C,opt1,E), -1) Exit Long C < Mov(C,opt1,E) Enter Short C < Mov(C,opt1,E) AND Ref(C,-1) >= Ref( Mov(C,opt1,E), -1) Exit Short C > Mov(C,opt1,E)
MAcross&PbСhan Enter Long BarsSince(Cross(C, Mov(C, opt1, S))) < opt2 AND BarsSince(Cross(C, Mov(C, opt1, S)))>0 AND L < LLV(Ref(LOW, -1), opt3) Exit Long C < Mov(C, opt1, S) Enter Short BarsSince(Cross( Mov(C, opt1, S), C)) < opt2 AND BarsSince(Cross( Mov(C, opt1, S), C)) >0 AND H > HHV(Ref(HIGH, -1), opt3) Exit Short C > Mov(C, opt1, S) Comment. Позиция закрывается, в случае закрытия цены по другую сторону cкользящей средней. Вариант выхода из позиции по пересечению противоположной границы канала получается, если правила выхода из позиций заменить на: Exit Long L < LLV(Ref(LOW, -1), opt3) Exit Short H > HHV(Ref(HIGH, -1), opt3) Чтобы получить вариант с открытием позиций по тренду, указываемому системой направлений, к правилу открытия длинных позиций надо добавить AND DX(opt4) > opt5 AND PDI(opt4) > MDI(opt4), а к правилу открытия коротких позиций добавить AND DX(opt4) > opt5 AND PDI(opt4) < MDI(opt4)
1MA-3CC_eаc 3 consecutive closing beyond MA with exit after closing on backward cross Открытие позиции на пересечении МА при тройном закрытии за MАn, с выходом из позиции по обратному пересечению МА opt1 – длина МА (n) Enter Long C> Mov(C,opt1,S) AND Ref(C> Mov(C,opt1,S), -1) AND Ref(C> Mov(C,opt1,S), -2) Exit Long C< Mov(C,opt1,S) Enter Short C<= Mov(C,opt1,S) AND Ref(C<= Mov(C,opt1,S), -1) AND Ref(C<= Mov(C,opt1,S), -2) Exit Short C> Mov(C,opt1,S) Comment. Позиция закрывается, в случае закрытия цены по другую сторону скользящей средней. Возможен вариант, когда для закрытия используется МА другой длины, чем МА открытия.
2MАcross_S&R S&R система с открытием позиций по пересечению двух скользящих средних Enter Long Cross( Mov(C, opt1, S), Mov(C, opt2, S)) Exit Long Cross( Mov(C, opt2, S), Mov(C, opt1, S)) Enter Short Cross( Mov(C, opt2, S), Mov(C, opt1, S)) Exit Short Cross( Mov(C, opt1, S), Mov(C, opt2, S))
3MАcrossovers Система с тремя скользящими средними; позиция открывается по пересечению короткой и самой медленной МА, а закрывается по противоположному пересечению короткой и средней МА. Enter Long Cross(Mov(C, opt1, S), Mov(C, opt3, S)) Exit Long Mov(C, opt1, S) < Mov(C, opt2, S) Enter Short Cross( Mov(C, opt3, S), Mov(C, opt1, S)) Exit Short Mov(C, opt1, S) > Mov(C, opt2, S)
4MАcrossovers Stop&Revers система, позиции открываются по пересечению пары скользящих средних, если другая пара МА подтверждает направление этого пересечения Enter Long Cross(Mov(C, opt1, S), Mov(C, opt2, S)) AND Mov(C, opt3, S) > Mov(C, opt4, S) OR Cross(Mov(C, opt3, S), Mov(C, opt4, S)) AND Mov(C, opt1, S) > Mov(C, opt2, S) Exit Long Cross(Mov(C, opt2, S), Mov(C, opt1, S)) AND Mov(C, opt3, S) < Mov(C, opt4, S) OR Cross(Mov(C, opt4, S), Mov(C, opt3, S)) AND Mov(C, opt1, S) < Mov(C, opt2, S) Enter Short Cross(Mov(C, opt2, S), Mov(C, opt1, S)) AND Mov(C, opt3, S) < Mov(C, opt4, S) OR Cross(Mov(C, opt4, S), Mov(C, opt3, S)) AND Mov(C, opt1, S) < Mov(C, opt2, S) Exit Short Cross(Mov(C, opt1, S), Mov(C, opt2, S)) AND Mov(C, opt3, S) > Mov(C, opt4, S) OR Cross(Mov(C, opt3, S), Mov(C, opt4, S)) AND Mov(C, opt1, S) > Mov(C, opt2, S)
MACDsystem Stop&Revers система, позиции открываются по пересечению линии MACD и сигнальной (сглаженной) линии Enter Long Cross(Mov(C,opt1,E) - Mov(C,opt2, E), Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E)) Exit Long Cross(Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E), Mov(C,opt1,E) - Mov(C,opt2, E)) Enter Short Cross(Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E), Mov(C,opt1,E) - Mov(C,opt2, E)) Exit Short Cross(Mov(C,opt1,E) - Mov(C,opt2, E), Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E))
2. Системы на основе ценовых диапазонов
Envel_break Stop&Revers система прорыва конверта Enter long Cross(C,(1+opt1)* Mov(C, opt2, S)) Exit long Cross((1-opt1)* Mov(C, opt2, S), C) Enter short Cross((1-opt1)* Mov(C, opt2, S), C) Exit short Cross(C,(1+opt1)* Mov(C, opt2, S))
Envel_ antitrend Антитрендовая Stop&Revers система возврата в конверт Enter long Cross((1-opt1)* Mov(C, opt2, S), C) Exit long Cross(C,(1+opt1)* Mov(C, opt2, S)) Enter short Cross(C,(1+opt1)* Mov(C, opt2, S)) Exit short Cross((1-opt1)* Mov(C, opt2, S), C)
ExtraOpt Extraordinary opportunities system. Open на выходе МА из конверта. Enter Long Cross(Mov(C,opt1,S), (1+opt3) * Mov(C,opt2,S)) AND Mov(C,opt1,S)> Ref(Mov(C,opt1,S),-1) Enter Short Cross((1-opt3)*Mov(C,opt2,S), Mov(C,opt1,S)) AND Mov(C,opt1,S)< Ref(Mov(C,opt1,S),-1) Comment. Добавлено условие, чтобы МА в момент пересечения границы конверта была направлена в сторону пересечения (росла при выходе выше верхней линии и убывала при выходе ниже нижней линии).
BolBand_reversal Антитрендовая система, открытие позиций при возврате внутрь Bollinger Band; позиция закрывается при пересечении противоположной границы канала Enter Long Cross(C, BBandBot(C, opt1, S, opt2)) Exit Long Cross(C, BBandTop(C, opt1, S, opt3)) Enter Short Cross( BBandTop(C, opt1, S, opt2), C) Exit Short Cross(BBandBot(C, opt1, S, opt3), C)
BolBand&RSI Антитрендовая система, позиции открываются, если Bollinger Bands и RSI одновременно показывают состояние перекупленности/перепроданности Enter Long Cross(BBandBot(C, opt1, S, opt2), C) AND RSI(opt3) < opt5 Exit Long Cross(C, BBandTop(C, opt1, S, opt2)) AND RSI(opt3) > opt4 Enter Short Cross(C, BBandTop(C, opt1, S, opt2)) AND RSI(opt3) > opt4 Exit Short Cross(BBandBot(C, opt1, S, opt2), C) AND RSI(opt3) < opt5 Comment. Возможные варианты этих систем: для закрытия используется линия с другим параметром усреднения, чем для открытия, или с другим параметром рассеяния.
Кeltner Channel Enter Long Cross(C, Mov((C+H+L)/3, opt1, S) + Mov(H-L, opt1, S)) Exit Long C < Mov((C+H+L)/3, opt1, S) Enter Short Cross(Mov((C+H+L)/3, opt1, S) - Mov(H-L, opt1, S), C) Exit Short C> Mov((C+H+L)/3, opt1, S)
STARC Band Enter Long Cross(C, Mov(C,opt1, S) + opt2* ATR(opt3)) Exit Long C < Mov(C, opt1, S) Enter Short Cross(Mov(C, opt1, S) - opt2* ATR(opt3), C) Exit Short C > Mov(C, opt1, S)
Parabolic&MA(проверить) Enter Long Ref(C,-1)[SAR(opt1, opt2)] AND C > Mov(C, opt3,S) Enter Short Ref(C,-1)>Ref(SAR(opt1, opt2),-1) AND CAND C < Mov(C, opt3,S)
VolatilitySyst_ATR Enter Long Cross(C,Ref(C + opt2* ATR(opt1), -1)) Enter Short Cross(Ref(C - opt2* ATR(opt1), -1), C)
ChannelReturning Stop&Revers система возврата в канал Enter Long Cross(LLV(Ref(LOW, -1) , opt1), C) Exit Long Cross(C, HHV(Ref(HIGH, -1), opt1)) Enter Short Cross(C, HHV(Ref(HIGH, -1), opt1)) Exit Short Cross(LLV(Ref(LOW, -1) , opt1), C)
ChannellBreakout Stop&Revers система прорыва канала Enter Long Cross(C, HHV(Ref(HIGH, -1), opt1)) Exit Long Cross(LLV(Ref(LOW, -1) , opt1), C) Enter Short Cross(LLV(Ref(LOW, -1) , opt1), C) Exit Short Cross(C, HHV(Ref(HIGH, -1), opt1))
ChanBreak&PullBack Channel breakout with pull back. Открытие на прорыве диапазона с последующим откатом; opt1 – параметр окна просмотра границ канала, opt2 – параметр продолжительности ожидания отката opt3 - параметр окна просмотра канала отката Enter Long BarsSince(Cross(C, HHV(Ref(HIGH, -1), opt1))) < opt2 AND BarsSince(Cross(C, HHV(Ref(HIGH, -1), opt1))) >0 AND L < LLV(Ref(LOW, -1), opt3) AND L > LLV(Ref(LOW, -1) , opt1) Exit Long C < LLV(Ref(LOW, -1), opt1) {OR Cross(C, HHV(Ref(HIGH, -1), opt1)) AND BarsSince(Cross(C, HHV(Ref(HIGH, -1), opt1))) >1} Enter Short BarsSince(Cross(LLV(Ref(LOW, -1), opt1), C)) < opt2 AND BarsSince(Cross(LLV(Ref(LOW, -1), opt1), C)) > 0 AND H > HHV(Ref(HIGH, -1), opt3) AND H < HHV(Ref(HIGH, -1), opt1) Exit Short C > HHV(Ref(HIGH, -1), opt1) {OR Cross(LLV(Ref(LOW, -1), opt1), C) AND BarsSince(Cross(LLV(Ref(LOW, -1), opt1), C)) > 1} Comment. Исключается открытие на свече, которая пробила границу канала. Если за период ожидания отката цена пересекла противоположную границу канала, то позиция не открывается. Открытая позиция ликвидируется, если цена пересекла противоположную границу канала.
LinRegr_extr Противотрендовая система с границами канала – типа линейного прогноза экстремумов; открытие на откате внутрь канала. Enter Long LOW > TSF(LOW, opt1) AND Ref(LOW, -1) > TSF(LOW, opt1) AND Ref(LOW, -2) > TSF(LOW, opt1) Enter Short HIGH < TSF(HIGH, opt1) AND Ref(HIGH, -1) < TSF(HIGH, opt1) AND Ref(HIGH, -2) < TSF(HIGH, opt1)
3. Торговые системы на основе трендовых индикаторов
ADX_Wilders Открытие позиции на пересечении +DI и -DI, при условии, что ADX растет. Уровень открытия позиции – экстремум свечи, на которой имело место пересечение +DI и –DI. Этот экстремум должен быть достигнут не позже, чем на opt2 свече после пересечения +DI и –DI. Enter Long Cross(C, ValueWhen(1, Cross(PDI(opt1),MDI(opt1)) AND Ref(ADX(opt1),-1) < ADX(opt1), HIGH) ) AND BarsSince(Cross(PDI(opt1),MDI(opt1)) AND Ref(ADX(opt1),-1) < ADX(opt1)) < opt2 Enter Short Cross(ValueWhen(1, Cross(MDI(opt1),PDI(opt1)) AND Ref(ADX(opt1),-1) < ADX(opt1), LOW),C) AND BarsSince(Cross(MDI(opt1),PDI(opt1)) AND Ref(ADX(opt1),-1) < ADX(opt1)) < opt2
ADX&MA Открытие позиции в начале нового движения (при пересечении +DI и –DI), либо на трендовом рынке (ADX выше порога opt4) при пересечении цены и скользящей средней Enter Long Cross(C,ValueWhen(1,Cross(PDI(opt1),MDI(opt1)),HIGH)) AND BarsSince(Cross(PDI(opt1),MDI(opt1))) < opt2 OR C > Mov(C, opt3, S) AND ADX(opt1) > opt4 Enter Short Cross(ValueWhen(1,Cross(MDI(opt1),PDI(opt1)), LOW),C) AND BarsSince(Cross(MDI(opt1),PDI(opt1))) < opt2 OR C < Mov(C, opt3, S) AND ADX(opt1) > opt4
ADXtop&Pullback Открытие позиций на откате от границы канала после появления максимума ADX. Enter Long BarsSince(Ref(ADX(opt1),-2) <= Ref(ADX(opt1),-1) AND Ref(ADX(opt1),-1) > ADX(opt1) AND ADX(opt1) > opt2 AND PDI(opt1) > MDI(opt1) ) < opt3 AND C < LLV(Ref(LOW, -1), opt4) Enter Short BarsSince(Ref(ADX(opt1),-2) <= Ref(ADX(opt1),-1) AND Ref(ADX(opt1),-1) > ADX(opt1) AND ADX(opt1) > opt2 AND PDI(opt1) < MDI(opt1) ) < opt3 AND C > HHV(Ref(HIGH, -1), opt4)
ADX-Burst-2МА System ADX burst trend-seeking system. ADX-импульсная трендовая система. (Вспомогательный индикатор, полезный при компьютерном исследовании системы: ADXburst - величина 1-периодного изменения индикатора ADX, т.е. Momentum1(ADX) Periods:= Input("Enter ADX periods", 8, 144, 14); Abs(ADX(Periods)- Ref(ADX(Periods),-1)) Индикатор ADXburst определяет момент открытия позиции (ADXburst>1 указывает на скачок графика), а направление позиции диктуется расположением двух МА). Enter Long Mov(C, opt1, S) > Mov(C, opt2, S) AND Abs(ADX(opt3)- Ref(ADX(opt3),-1)) > 1 Enter Short Mov(C, opt1, S) < Mov(C, opt2, S) AND Abs(ADX(opt3)- Ref(ADX(opt3),-1)) > 1
TAT System Trend-antitrend system. При растущем ADX (ADX>MA(ADX)) open на выходе из канала (buy new high, sell new low), при падающем ADX open внутрь канала ((buy new low, sell new high) Enter Long H > HHV(Ref(HIGH,-1),opt1) AND ADX(opt2) > Mov(ADX(opt2), opt3, S) OR L < LLV(Ref(LOW, -1), opt1) AND ADX(opt2) < Mov(ADX(opt2), opt3, S) Enter Short H > HHV(Ref(HIGH,-1),opt1) AND ADX(opt2) < Mov(ADX(opt2), opt3, S) OR L < LLV(Ref(LOW, -1), opt1) AND ADX(opt2) > Mov(ADX(opt2), opt3, S)
RAVI&MaSystem Enter Long Abs(Mov( C, opt1, S) - Mov(C, opt2, S))/Mov( C, opt2, S) > opt3 AND C > Mov( C, opt4, S) Enter Short Abs(Mov( C, opt1, S) - Mov(C, opt2, S))/Mov( C, opt2, S) > opt3 AND C < Mov( C, opt4, S)
7.6.4. Системы на основе осцилляторов
RSI_os/ob Sell при пересечении осциллятором RSI уровня перекупленности сверху вниз, buy при пересечении уровня перепроданности снизу вверх Enter Long Cross(RSI(opt1), opt2) Enter Short Cross(opt3, RSI(opt1))
RSIos/ob_&2MAantitrend Антитрендовая система, направление тренда определяется расположением двух МА, позиции открываются против тренда по выходу RSI из областей перекупленности/перепроданности Enter Long Cross(RSI(opt1), opt2) AND Mov(C, opt4, S) < Mov(Mov(C, opt4, S), opt5, S) Exit Long Cross(opt3, RSI(opt1)) OR Cross(Mov(Mov(C, opt4, S), opt5, S), Mov(C, opt4, S)) Enter Short Cross(opt3, RSI(opt1)) AND Mov(C, opt4, S) > Mov(Mov(C, opt4, S), opt5, S) Exit Short Cross(RSI(opt1), opt2) OR Cross( Mov(C, opt4, S), Mov(Mov(C, opt4, S), opt5, S))
2MARSIcross&Boll_AT Антитрендовая Stop&Revers система с открытием позиций по пересечению двух скользящих средних от RSI; BolligerBand используется для определения состояний перекупленности/перепроданности рынка Enter Long Cross(Mov(RSI(opt1), opt2,S), Mov(Mov(RSI(opt1), opt2,S) , opt3,S)) AND C < BBandBot(C, opt4, S, opt5) Enter Short Cross(Mov(Mov(RSI(opt1), opt2,S) , opt3,S) , Mov(RSI(opt1), opt2,S)) AND C > BBandTop(C, opt4, S, opt5)
Stochastic_os/ob Sell при пересечении осциллятором Stochastic уровня перекупленности сверху вниз, buy при пересечении уровня перепроданности снизу вверх Enter Long Cross(Stoch(opt1,opt2), opt3) Enter Short Cross(opt4,Stoch(opt1,opt2))
Stochastic_os/ob&DMItrend Открытие позиций при пересечении осциллятором Stochastic уровней перекупленности/перепроданности, а также при пресечении быстрой и медленной линий Stochastic в направлении, указываемом DMS Enter Long Cross(Stoch(opt1,opt2),opt3) OR Cross(Stoch(opt1,opt2),Mov(Stoch(opt1,opt2), opt5,S)) AND PDI(opt6) > MDI(opt6) AND ADX(opt6)> Ref(ADX(opt6), -1) Enter Short Cross(opt4,Stoch(opt1,opt2))OR Cross(Mov(Stoch(opt1,opt2), opt5,S), Stoch(opt1,opt2)) AND PDI(opt6) < MDI(opt6) AND ADX(opt6)> Ref(ADX(opt6), -1)
Stoch_RightCross Открытие позиций по правым пересечениям быстрой и медленной линий осциллятора Stochastic Enter Long Cross(Stoch(opt1,opt2),Mov(Stoch(opt1,opt2), opt3,S)) AND Ref(Mov(Stoch(opt1,opt2),opt3,S),-1) < Mov(Stoch(opt1,opt2), opt3,S) Enter Short Cross(Mov(Stoch(opt1,opt2), opt3,S), Stoch(opt1,opt2)) AND Ref(Mov(Stoch(opt1,opt2),opt3,S),-1) > Mov(Stoch(opt1,opt2), opt3,S)
Double_MACD Enter Long Cross(Mov(C,opt1,S) - Mov(C,opt2, S), Mov(Mov(C,opt1,S) - Mov(C,opt2, S),opt3,S)) AND Mov(C,opt4,S) - Mov(C,opt5, S) > Mov(Mov(C,opt4,S) - Mov(C,opt5, S), opt6, S) Enter Short Cross(Mov(Mov(C,opt1,S) - Mov(C,opt2, S),opt3,S), Mov(C,opt1,S) - Mov(C,opt2, S)) AND Mov(C,opt4,S) - Mov(C,opt5, S) < Mov(Mov(C,opt4,S) - Mov(C,opt5, S), opt6, S)
наверх
|