Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих" - страница 7

 
Что же, нашел в поиске буду разбираться спасибо!
 

Подскажите пожалуйста, а можно ли запрограммировать советника, для открытия советника в конкретный день недели, что бы он открывал и закрывал позиции в конкретный день недели?

 
Grenjohn:

Подскажите пожалуйста, а можно ли запрограммировать советника, для открытия советника в конкретный день недели, что бы он открывал и закрывал позиции в конкретный день недели?

Можно
 
Grenjohn:

Подскажите пожалуйста, а можно ли запрограммировать советника, для открытия советника в конкретный день недели, что бы он открывал и закрывал позиции в конкретный день недели?

Можно.
 
Dima_S:
Можно.
Синхронно)))
 

Спасибо, но я вот так понял, что при наступлении такого-то события (указанного мной времени), функция должна сработать, но почему-то не получается.

Позиция не открывается!!??

 

 extern int tp = 1000;

extern int sl = 1000;

extern double Lots = 0.2;

int ticket;

void OnStart()

{

datetime date1=D'2014.10.28.13.22.13';

 if(OrdersTotal()==0)

 {

 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-sl*Point,Bid+tp*Point,"",123,0,Red);

 }

 if (OrdersTotal()==1 && Hour( )==13 && Minute( )==23 && Seconds ( )>=00)

 {

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

 bool close1=OrderClose(ticket,Lots,Bid,20,Green);

 }

 return(0);

}

 

Я поясню, что мне нужно, что бы каждую неделю(один раз в неделю), в такой-то день, в такой-то час, в такую-то секунду, позиция открывалась, затем через несколько секунд закрывалась.

 
Grenjohn:
Давайте мы будем уважать друг друга. Вставляйте код правильно, чтобы можно было его читать. Как это сделать, Вам уже показывали.
 

Простите пожалуйста, я не понял тогда как использовать эту кнопку, сейчас кажется понял.

extern int tp = 1000;
extern int sl = 1000;
extern double Lots = 0.2;
int ticket;
void OnStart()
{
datetime date1=D'2014.10.28.13.22.13';
 if(OrdersTotal()==0)
 {
 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-sl*Point,Bid+tp*Point,"",123,0,Red);
 }
 if (OrdersTotal()==1 && Hour( )==13 && Minute( )==23 && Seconds ( )>=00)
 {
 bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
 bool close1=OrderClose(ticket,Lots,Bid,20,Green);
 }
 return(0);
}
 
Grenjohn:

Простите пожалуйста, я не понял тогда как использовать эту кнопку, сейчас кажется понял.

Все дело в условии:

if( OrdersTotal() == 0 )

Здесь не хватает проверки на то, что наступила указанная Вами дата date1. Сейчас у Вас ордер должен открываться сразу с появлением первого тика, если нет открытых ордеров! Т.е. нужно сделать также, как и тут,

if (OrdersTotal()==1 && Hour( )==13 && Minute( )==23 && Seconds ( )>=00)

только указать корректный день, час, минуту, секунду(несколько секунд). 

Да и еще. Цены sl и tp нужно нормализовать, иначе м.б. ошибки.

 

Что-то он у меня совсем перестал присоединяться к графику и подскажите пожалуйста, что значит нормализовать цены sl и tp?

extern int tp = 1000;
extern int sl = 1000;
extern double Lots = 0.3;
int ticket;
void OnStart()
{
datetime date1=D'2014.10.28.15.08.30';
 if(OrdersTotal()==0 && Hour( )==15 && Minute( )==08 && Seconds( )>=30)
 {
 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-sl*Point,Bid+tp*Point,"",123,0,Red);
 }
 if (OrdersTotal()==1 && Hour( )==15 && Minute( )==09 && Seconds( )>=00)
 {
 bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
 bool close1=OrderClose(ticket,Lots,Bid,20,Green);
 }
 return(0);
}