Открытие Сессии
Добавлено: 19 сен 2018, 18:09
aaiun
Добрый день! Спасибо, что поддерживаете ресурс, очень помогает. Никак не получается в стратегии использовать открытие сессии, хотя бы в 10.00 today. Индикатором выводится, но не передает значение в стратегию. Измучился и завис). Могли бы мне помочь. Условие простое, если выше открытия, покупаем, ниже- продаем.
Re: Открытие Сессии
Добавлено: 19 сен 2018, 18:24
evge
Приветствую!
Нужно ввести доп. глоб. переменную в которую и будем сохранять цену открытия
Код: Выделить всё
function Initialize()
{
//...
AddGlobalVariable("OpenPrice", Types.Double, 0);
//...
}
когда дата текущего бара не равна дате бара предыдущего запоминаем значение в введенной ранее глоб. переменной.
Код: Выделить всё
function OnUpdate()
{
//..
if (BarDate(0) != BarDate(1)) OpenPrice = Input1.Open[0];
//..
}
aaiun писал(а):Индикатором выводится, но не передает значение в стратегию. Измучился и завис)
здесь непонятно.
Re: Открытие Сессии
Добавлено: 19 сен 2018, 18:36
aaiun
Код: Выделить всё
function Initialize()
{
StrategyName = "3";
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 1;
ShortLimit = -1;
AddGlobalVariable("OpenPrice", Types.Double, 0);
}
function OnUpdate()
{
if (BarDate(0) != BarDate(1)) {OpenPrice = Input1.Open[0];}
if (CurrentPosition() == 0 && (Input1.Close[0] > OpenPrice))
{
EnterLong();
}
if ( CurrentPosition() == 0 && (Input1.Close[0] < OpenPrice) )
{
EnterShort();
}
}
только получается, что в OpenPrice подставляется последнее значение Open[0], а не открытие сессии. если запускать советника не с самого утра.
Re: Открытие Сессии
Добавлено: 19 сен 2018, 18:41
evge
В таком коде сработает только EnterLong() и всё. Т.к. больше позиция не будет равна 0 никогда.
OpenPrice будет равен Open первого бара текущего дня.
Re: Открытие Сессии
Добавлено: 19 сен 2018, 18:55
evge
Код: Выделить всё
/**
**/
function Initialize()
{
StrategyName = "MyMTS2";
AddParameter("P1", 0, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 1;
ShortLimit = -1;
AddGlobalVariable("OpenPrice", Types.Double, 0);
}
function OnUpdate()
{
if (BarDate(0) != BarDate(1)) OpenPrice = Input1.Open[0];
if (OpenPrice != 0) return;
if (Input1.Close[0] > OpenPrice) EnterLong();
if (Input1.Close[0] < OpenPrice) EnterShort();
}