Советник не работает стабильно, помогите

 

Всем привет!

Я записал самый простой советник. Но, к сожалению, он иногда работает, а иногда нет. Не понимаю в чем ошибка и как исправить. Посоветуйте, пожалуйста.

Задача советника: открывать позицию на sell или buy по рыночной цене в указанное время (день, час, минута, секунд), и закрывать эту позицию в указанное время (день, час, минута, секунд). Например, через 2 минуты.

Я в один терминал сразу ставлю 5-6 таких советников по разным парам. Первый открывает и закрывает позицию, все отлично! Но, второй советник то вообще не открывает, или открывает, но не закрывает. Остальные вообще не открывают.

В чем проблема, укажите, пожалуйста, уже замучилсяJ.

Если у кого нибудь есть такой готовый советник, скинте мне на майл, пожалуйста. Если нету, запишите, пожалуйста, если труда не составит, и есть время.

Мой майл:  mr.ahamax@mail.ru

Заранее искренне благодарю!

 

 

 

int ticket;

int start()

{

if(OrdersTotal()==0 && DayOfWeek()==5 && Hour()==18 && Minute()==39 && Seconds()==57)  

ticket=OrderSend("GBPUSD",OP_BUY,0.1,Ask,10,0,0,"",123,0,Red);


if(OrdersTotal()==1 && DayOfWeek()==5 && Hour()==18 && Minute()==41 && Seconds()==57) 

{

bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);


bool close1=OrderClose(ticket,0.1,Bid,10,Violet);

}

return(0);

 } 

 
ahamax:

Всем привет!

Я записал самый простой советник. Но, к сожалению, он иногда работает, а иногда нет. Не понимаю в чем ошибка и как исправить. Посоветуйте, пожалуйста.

Задача советника: открывать позицию на sell или buy по рыночной цене в указанное время (день, час, минута, секунд), и закрывать эту позицию в указанное время (день, час, минута, секунд). Например, через 2 минуты.

Я в один терминал сразу ставлю 5-6 таких советников по разным парам. Первый открывает и закрывает позицию, все отлично! Но, второй советник то вообще не открывает, или открывает, но не закрывает. Остальные вообще не открывают.

В чем проблема, укажите, пожалуйста, уже замучилсяJ.

Если у кого нибудь есть такой готовый советник, скинте мне на майл, пожалуйста. Если нету, запишите, пожалуйста, если труда не составит, и есть время.

Мой майл:  mr.ahamax@mail.ru

Заранее искренне благодарю!

 

 

 

int ticket;

int start()

{

if(OrdersTotal()==0 && DayOfWeek()==5 && Hour()==18 && Minute()==39 && Seconds()==57)  

ticket=OrderSend("GBPUSD",OP_BUY,0.1,Ask,10,0,0,"",123,0,Red);


if(OrdersTotal()==1 && DayOfWeek()==5 && Hour()==18 && Minute()==41 && Seconds()==57) 

{

bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);


bool close1=OrderClose(ticket,0.1,Bid,10,Violet);

}

return(0);

 } 

Здесь есть советник для открытия в заданное время. А здесь есть несколько советников для закрытия. 

 

Огромное спасибо за сайт. Посмотрел, но не смог найти то, что хотел. Зато объявил причину нестабильной работы советника. Это происходит от реквот и других причин. Но к счастью, есть решение, надо добавить в советник  NUMBER OF TRY. То есть, количество попыток открытия позиции или закрытия позиции. 3,5,7 пока не откроет или закроет.

Думаю, что это решит проблему советника. Но я не знаю, как добавить NUMBER OF TRY. Я совсем недавно начал изучать программирование.

По этому, если кто-нибудь знает, как добавить эту функцию, пожалуйста, поделитесь. Если не составит труда, пожалуйста, откорректируйте мой советник с добавлением функции NUMBER OF TRY для открытия и закрытия. Отправьте на мой майл — mr.ahamax@mail.ru,или выставьте обратно на форум, что бы кому надо, мог пользоваться тоже.

Буду благодарен за помощь.  

 
Думаю просто нужной секунды не бывает - ее перескакивает
 
В момент открытия ордера переменной присвоить время открытия.

if (время_сейчас - переменная >= "необходимый временной промежуток")
{
   закрыть ордер;
}

Не приходилось иметь дела с временем, но по идее выглядеть это должно так.
 
ahamax:

Всем привет!

Я записал самыйпростой советник. Но, к сожалению, он иногда работает, а иногда нет. Не понимаюв чем ошибка и как исправить. Посоветуйте, пожалуйста.

Задача советника:открывать позицию на sell или buy по рыночной цене в указанное время (день,час, минута, секунд), и закрывать эту позицию в указанное время (день, час,минута, секунд). Например, через 2 минуты.

Я в один терминалсразу ставлю 5-6 таких советников по разным парам. Первый открывает и закрываетпозицию, все отлично! Но, второй советник то вообще не открывает, или открывает,но не закрывает. Остальные вообще не открывают.

В чем проблема,укажите, пожалуйста, уже замучилсяJ.

Если у кого нибудь есть такой готовый советник, скинте мне на майл, пожалуйста. Если нету, запишите,пожалуйста, если труда не составит, и есть время.

Мой майл:  mr.ahamax@mail.ru

Заранее искреннеблагодарю!

 

 

 

int ticket;

int start()

{

if(OrdersTotal()==0 && DayOfWeek()==5 && Hour()==18 && Minute()==39 && Seconds()==57)  

ticket=OrderSend("GBPUSD",OP_BUY,0.1,Ask,10,0,0,"",123,0,Red);


if(OrdersTotal()==1 && DayOfWeek()==5 && Hour()==18 && Minute()==41 && Seconds()==57) 

{

bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);


bool close1=OrderClose(ticket,0.1,Bid,10,Violet);

}

return(0);

 } 


Проблема в OrdersTotal()==0.
Если хоть что-то открыто, больше ничего не откроется.
 
ahamax:

Огромное спасибо за сайт. Посмотрел, но не смог найти то, что хотел. Зато объявил причину нестабильной работы советника. Это происходит от реквот и других причин. Но к счастью, есть решение, надо добавить в советник  NUMBER OF TRY. То есть, количество попыток открытия позиции или закрытия позиции. 3,5,7 пока не откроет или закроет.

Думаю, что это решит проблему советника. Но я не знаю, как добавить NUMBER OF TRY. Я совсем недавно начал изучать программирование.

По этому, если кто-нибудь знает, как добавить эту функцию, пожалуйста, поделитесь. Если не составит труда, пожалуйста, откорректируйте мой советник с добавлением функции NUMBER OF TRY для открытия и закрытия. Отправьте на мой майл — mr.ahamax@mail.ru,или выставьте обратно на форум, что бы кому надо, мог пользоваться тоже.

Буду благодарен за помощь.  

На том же сайте можете найти функцию открытия позиции. В этой функции предусмотрено несколько попыток открытия. Есть на форуме MQL4 ветка "Полезные функции" автор KimIV. Там приведены множество функций. Для некоторых функций приведены тесты, в которых вы можете посмотреть как подключать функции и как вызывать их из тела функции start().
 
paukas:

Проблема в OrdersTotal()==0.
Если хоть что-то открыто, больше ничего не откроется.

Нет, все закрыто. Все равно не открывает.

 
bartolom:
Думаю просто нужной секунды не бывает - ее перескакивает

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

Пожалуйста если кто нибудь знает как поставить функцию NumberOfTry, подскажите или откорректируйте советник. У меня не получается. 

 
Pecmop:
В момент открытия ордера переменной присвоить время открытия.

if (время_сейчас - переменная >= "необходимый временной промежуток")
{
   закрыть ордер;
}

Не приходилось иметь дела с временем, но по идее выглядеть это должно так.

Я не знаю, как это можно реализовать. Думаю что, лучший вариант добавить функцию NumberOfTry. И указать большое значение. Тогда советник точно откроет позицию.

Если кто знает, как поставить функцию NumberOfTry  напишите. Откорректируйте советник.