/**E_MARTIN Developed by evge; Algorithm = Усреднение;**/ function Initialize() { StrategyName = "E_MARTIN"; AddParameter("StartPos", 100, "", 1); AddParameter("TP", 0.1, "", 1); AddParameter("SL", -10, "", 1); AddParameter("PeriodSMA", 13, "", 1); AddParameter("PeriodEMA", 8, "", 1); AddInput("Input1", Inputs.Candle, 5, true, "SBER=МБ ЦК"); LongLimit = 1000; ShortLimit = -1000; AddGlobalVariable("Dir", Types.Int, 0); // Текущее направление } function OnUpdate() { // пример стратегии с усреднением // evge 01.03.2017 http://alfadirect4.ru var S = SMA(Input1.Close, PeriodSMA); var E = EMA(Input1.Close, PeriodEMA); var Pos = CurrentPosition(); var Lot = (Pos == 0) ? (int)StartPos : Math.Abs(Pos); // Условие входа в лонг var isLong = E[1] < S[1] && E[0] > S[0] && Dir >= 0; // Условие входа в шорт var isShort = E[1] > S[1] && E[0] < S[0] && Dir <= 0; if (isLong) Dir = 1; if (isShort) Dir = -1; // Вход if (Pos == 0) { if ( isLong ) { EnterLong(Lot); } else if ( isShort ) { EnterShort(Lot); } } // Усреднение if ( Pos != 0 && CurrentPLper() < 0 ) { if ( isLong && Pos > 0 ) { EnterLong(Lot); } else if ( isShort && Pos < 0 ) { EnterShort(Lot); } } // Выход по Take if ( (CurrentPLper() > TP) ) { ClosePosition(); Dir = 0; } // Стоп :( if ( (CurrentPLper() < SL) ) { ClosePosition(); Dir = 0; } }