Скачать MetaTrader 5

Подскажите пожалуйста

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй программу в Cobe Base. Миллионы трейдеров ее увидят!
sasha1995
45
sasha1995 2012.12.23 17:11 
Хочу сделать чтобы советник торговал строго в 16:00. Но когда пишу 
if(TimeToStr(TimeCurrent(),TIME_SECONDS) == "16:00:00")


То он выполняет скрипт по 4 раза..
в чем проблема ?
moskitman
4027
moskitman 2012.12.23 17:27  
Возможно проблема в том, что в 16:00:00 тестер выдает 4 тика: open, high, low и close, на каждом из которых выполняется ваш скрипт.
sasha1995
45
sasha1995 2012.12.23 17:29  
А как можно сказать советнику чтобы определять максимум и минимум ровно один раз и ровно в 16 00?
moskitman
4027
moskitman 2012.12.23 17:31  
sasha1995:
А как можно сказать советнику чтобы определять максимум и минимум ровно один раз и ровно в 16 00?

Ввести переменную, типа bool, которой после первого выполнения присвоить значение, не позволяющее выполнять действие второй раз.

Конкретнее только с куском кода.

sasha1995
45
sasha1995 2012.12.23 17:35  

Воть )

if(TimeToStr(TimeCurrent(),TIME_SECONDS) == "16:00:00"){

   double max = High[iHighest(NULL,PERIOD_H1,MODE_HIGH,3,0)] + 100 * Point;

   double min = Low[iLowest(NULL,PERIOD_H1,MODE_LOW,3,0)] - 100 * Point;

   Print("Время = ",TimeToStr(TimeCurrent(),TIME_SECONDS),"Максимум = ", max," Минимум = ",min);

   OrderSend(Symbol(),OP_BUYSTOP,0.01,max,3,min,max + 500 * Point,"Bigdog 500пп. Дата " + TimeCurrent(),123,0,Green);

   OrderSend(Symbol(),OP_SELLSTOP,0.01,min,3,max,min - 500 * Point,"Bigdog 500пп, Дата" + TimeCurrent(),123,0,Black);

   OrderSend(Symbol(),OP_BUYSTOP,0.01,max,3,min,max + 1000 * Point,"Bigdog 1000пп. Дата " + TimeCurrent(),123,0,Green);

   OrderSend(Symbol(),OP_SELLSTOP,0.01,min,3,max,min - 1000 * Point,"Bigdog 1000пп, Дата" + TimeCurrent(),123,0,Black);

}

moskitman
4027
moskitman 2012.12.23 17:39  

Ну, во-первых за один тик возможно исполнение только одной команды OrderSend()

Далее:  

bool hvatit=false;

if(TimeToStr(TimeCurrent(),TIME_SECONDS) == "16:00:00" && !hvatit )
{

   double max = High[iHighest(NULL,PERIOD_H1,MODE_HIGH,3,0)] + 100 * Point;

   double min = Low[iLowest(NULL,PERIOD_H1,MODE_LOW,3,0)] - 100 * Point;

   Print("Время = ",TimeToStr(TimeCurrent(),TIME_SECONDS),"Максимум = ", max," Минимум = ",min);

   OrderSend(Symbol(),OP_BUYSTOP,0.01,max,3,min,max + 500 * Point,"Bigdog 500пп. Дата " + TimeCurrent(),123,0,Green);

   OrderSend(Symbol(),OP_SELLSTOP,0.01,min,3,max,min - 500 * Point,"Bigdog 500пп, Дата" + TimeCurrent(),123,0,Black);

   OrderSend(Symbol(),OP_BUYSTOP,0.01,max,3,min,max + 1000 * Point,"Bigdog 1000пп. Дата " + TimeCurrent(),123,0,Green);

   OrderSend(Symbol(),OP_SELLSTOP,0.01,min,3,max,min - 1000 * Point,"Bigdog 1000пп, Дата" + TimeCurrent(),123,0,Black);

//-------------- запрещаем выполнение во второй и последующие разы ------------------------
hvatit=true;
//-----------------------------------------------------------------------------------------

}
Oleg
2377
Oleg 2012.12.23 17:41  
sasha1995:
Хочу сделать чтобы советник торговал строго в 16:00. Но когда пишу 
if(TimeToStr(TimeCurrent(),TIME_SECONDS) == "16:00:00")


То он выполняет скрипт по 4 раза..
в чем проблема ?

Возможно вам надо смотреть не на текущее время, а на время открытия бара (чтобы оно равнялось 16:00).
А после этого блокировать торговлю на этом же баре какой-нибудь переменной, которая будет впоследствии обнуляться,
а процесс будет повторен на след. день, и т.д.
sasha1995
45
sasha1995 2012.12.23 17:45  
Спасибо всё пошло ))
Mikhail Kozhemyako
1235
Mikhail Kozhemyako 2012.12.23 17:48  
sasha1995:
Хочу сделать чтобы советник торговал строго в 16:00. Но когда пишу 
if(TimeToStr(TimeCurrent(),TIME_SECONDS) == "16:00:00")


То он выполняет скрипт по 4 раза..
в чем проблема ?


Да просто в Ваши 16:00:00 до 16:00:01 Вполне могут уложиться даже не четыре а гораздо больше тиков.
Alexander
2441
Alexander 2012.12.23 18:02  
Sepulca:


Да просто в Ваши 16:00:00 до 16:00:01 Вполне могут уложиться даже не четыре а гораздо больше тиков.

Сколько, например?
Vladimir
1592
Vladimir 2012.12.23 18:12  

А эта ветка зачем ? прошу не отвечать в спам-темах

https://www.mql5.com/ru/forum/142582/page32

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий