Помогите! Не открывается ордер в цикле!

 

Всем привет!

В общем, не открывается ордер в цыкле… писал я код так: 

Перед началом вот описание переменных:

double lot = 0.01;

double stop_loss = 0;

double take_profit = 0;

int magic_nomber = 12345;

string comment = "Описание позиции"; 

Далее:

while (true)

         {

         OrderSend(Symbol(), OP_BUY, lot, NormalizeDouble(Ask,Digits), 0, stop_loss, take_profit, comment, magic_nomber, 0, CLR_NONE);   

         Sleep (5000);

       }

Или еще так пробовал:

for(;;)

   {

   Sleep(5000);

   OrderSend(Symbol(), OP_BUY, lot, NormalizeDouble(Ask,Digits), 0, stop_loss, take_profit, comment, magic_nomber, 0, CLR_NONE);

   } 

Если же просто без цыкла то ордера открываются отлично… 

 

Для начала нормализуйте лот и разберитесь с комментами.

 

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

Еще заметил ордер может открыться только раз или не открыться вообще… 

 

NormalizeDouble(переменная лота,разрядность) - этим. тп и сл - хоть и нули, но будет  тоже не лишне нормализовать.

 

Я уже понял свою ошибку.

Оказывается просто напросто забыл о RefreshRates(); работает теперь все как надо.

Тем не менее спасибо за инфу!

Вы говорите NormalizeDouble(переменная лота,разрядность),  Разрядность это я так понимаю Digits писать надо?

 

 
gtx1024:

Я уже понял свою ошибку.

Оказывается просто напросто забыл о RefreshRates(); работает теперь все как надо.

Тем не менее спасибо за инфу!

Вы говорите NormalizeDouble(переменная лота,разрядность),  Разрядность это я так понимаю Digits писать надо?

 


Дижитс это разрядность валютной пары, а у лота разрядность 2 знака после запятой...
Причина обращения: