Добрый вечер!
Используйте серию AB, вместо A
и во втором правиле у вас не заданы параметры у индикатора, а берутся явно заданные значения
10, 3, 0
Код: Выделить всё
if ( (MY.MAngle(Input1, 10, 3, 0).GetValue("A", 0) < 0) )
заменить на
Код: Выделить всё
if ( (MY.MAngle(Input1, P1, P2, 0).GetValue("AB", 0) < 0) )
весь исправленный код
Код: Выделить всё
function Initialize()
{
StrategyName = "BABIKOFF_MAngle";
AddParameter("P1", 0, "Period SMA", 1);
AddParameter("P2", 0, "Period Angle", 1);
AddInput("Input1", Inputs.Candle, 15, false, "SBER=МБ ЦК");
LongLimit = 0;
ShortLimit = 0;
AddChartIndicator("MY.MAngle", new Dictionary <string, string>{{"Period", "P1"},{"PeriodAngle", "P2"},{"MAType", "0"}});
}
function OnUpdate()
{
/// ПРАВИЛО 1
if ( (MY.MAngle(Input1, P1, P2, 0).GetValue("AB", 0) > 0) )
{
EnterLong();
}
/// ПРАВИЛО 2
if ( (MY.MAngle(Input1, P1, P2, 0).GetValue("AB", 0) < 0) )
{
EnterShort();
}
}
тот же результат, но код проще, понятнее:
Код: Выделить всё
function Initialize()
{
StrategyName = "BABIKOFF_MAngle";
AddParameter("P1", 0, "Period SMA", 1);
AddParameter("P2", 0, "Period Angle", 1);
AddInput("Input1", Inputs.Candle, 15, false, "SBER=МБ ЦК");
LongLimit = 0;
ShortLimit = 0;
AddChartIndicator("MY.MAngle", new Dictionary <string, string>{{"Period", "P1"},{"PeriodAngle", "P2"},{"MAType", "0"}});
}
function OnUpdate()
{
var M = MY.MAngle(Input1, P1, P2, 0)["AB"];
if ( M[0] > 0 )
{
EnterLong();
}
if ( M[0] < 0 )
{
EnterShort();
}
}
вариант без открытия сделок на каждом баре, а только на пересечении
Код: Выделить всё
function Initialize()
{
StrategyName = "BABIKOFF_MAngle";
AddParameter("P1", 0, "Period SMA", 1);
AddParameter("P2", 0, "Period Angle", 1);
AddInput("Input1", Inputs.Candle, 15, false, "SBER=МБ ЦК");
LongLimit = 0;
ShortLimit = 0;
AddChartIndicator("MY.MAngle", new Dictionary <string, string>{{"Period", "P1"},{"PeriodAngle", "P2"},{"MAType", "0"}});
}
function OnUpdate()
{
var M = MY.MAngle(Input1, P1, P2, 0)["AB"];
if ( M[0] > 0 && M[1] < 0)
{
EnterLong();
}
if ( M[0] < 0 && M[1] > 0)
{
EnterShort();
}
}