Код: Выделить всё
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, ...