Стратегии и роботы > Открытие Сессии

Обсуждение, описание стратегий и роботов, идеи для стратегий
aaiun
Сообщения: 6
Зарегистрирован: 19 сен 2018, 15:20

Открытие Сессии

Непрочитанное сообщение aaiun » 19 сен 2018, 18:09

Добрый день! Спасибо, что поддерживаете ресурс, очень помогает. Никак не получается в стратегии использовать открытие сессии, хотя бы в 10.00 today. Индикатором выводится, но не передает значение в стратегию. Измучился и завис). Могли бы мне помочь. Условие простое, если выше открытия, покупаем, ниже- продаем.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: Открытие Сессии

Непрочитанное сообщение evge » 19 сен 2018, 18:24

Приветствую!

Нужно ввести доп. глоб. переменную в которую и будем сохранять цену открытия

Код: Выделить всё

function Initialize()
{
//...
AddGlobalVariable("OpenPrice", Types.Double, 0);
//...
}


когда дата текущего бара не равна дате бара предыдущего запоминаем значение в введенной ранее глоб. переменной.

Код: Выделить всё

function OnUpdate()
{
//..
if (BarDate(0) != BarDate(1)) OpenPrice = Input1.Open[0];
//..
}


aaiun писал(а):Индикатором выводится, но не передает значение в стратегию. Измучился и завис)


здесь непонятно.
никогда такого не было и вот опять

aaiun
Сообщения: 6
Зарегистрирован: 19 сен 2018, 15:20

Re: Открытие Сессии

Непрочитанное сообщение aaiun » 19 сен 2018, 18:36

Код: Выделить всё

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], а не открытие сессии. если запускать советника не с самого утра.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: Открытие Сессии

Непрочитанное сообщение evge » 19 сен 2018, 18:41

В таком коде сработает только EnterLong() и всё. Т.к. больше позиция не будет равна 0 никогда.

OpenPrice будет равен Open первого бара текущего дня.
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: Открытие Сессии

Непрочитанное сообщение evge » 19 сен 2018, 18:55

Код: Выделить всё

/**

**/

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();

}
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей