Код: Выделить всё
function Initialize()
{
   StrategyName = "MA_EW";
   AddParameter("Pfast", 6, "", 1); //EMA period
   AddParameter("Pslow", 58, "", 1); //WMA period
   AddParameter("P2", 0.3, "", 1); // Первоначальный стоплосс Long
   AddParameter("P3", 0.3, "", 1); // Первоначальный стоплосс Short
   AddParameter("p4", 0.3, "", 1); // Перестановка стоплосс Long
   AddParameter("p5", 0.3, "", 1); // Перестановка стоплосс Short
   AddInput("Input1", Inputs.Candle, 15, true, "RIM7=ФОРТС");
   LongLimit = 1;
   ShortLimit = -1;
}
function OnUpdate()
{
   // evge 06.06.2017 http://alfadirect4.ru
   // Extended TrailingStop :)
   // Перестановка стопа на каждом баре при открытой позиции, на % параметров p4, p5 от минимума и максимума последних 2х баров.
   if (CurrentPosition() != 0) 
   {
      CancelStopLoss();
      //Если мы в long, то берем последние 2 бара, определяем минимум и ставим стоп на % ниже, указанный в параметре p4
      //Если мы в short, то берем последние 2 бара, определяем максимум и ставим стоп на % выше, указанный в параметре p5
      var Low = Math.Min(Input1.Low[0], Input1.Low[1]);
      var High = Math.Max(Input1.High[0], Input1.High[1]);
      var StopPrice = CurrentPosition() > 0 ?  Low - Low * 0.01 * p4 : High + High * 0.01 * p5;
      StopLoss(StopPrice, SignalPriceType.Price);
   }   
   // Long
   if ( CrossAbove(EMA(Input1.Close, Pfast), WMA(Input1.Close, Pslow)) && Pfast < Pslow )
   {
      EnterLong();
      StopLoss(P2, SignalPriceType.DeltaInPercentFromAveragePrice);
   }
   
   // Short
   if ( CrossBelow(EMA(Input1.Close, Pfast), WMA(Input1.Close, Pslow)) && Pfast < Pslow )
   {
      EnterShort();
      StopLoss(P3, SignalPriceType.DeltaInPercentFromAveragePrice);
   }
   
}
параметры по умолчанию из стратегии Pfast = 6, Pslow = 58, ...