Как цену открытия ордера записать в переменную? - страница 2

 
sanyooooook:

ЗЫ: код программы выполняется, если отправка ордера не завершена и пришел новый тик?

Так ведь новый тик не приведёт к перезапуску start() если функция не отработала.

sanyooooook:

Лучше сделать выбор позиции пока не выберется, если после нужно будет работать с этой позицией.

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

 
goldtrader:

Так ведь новый тик не приведёт к перезапуску start() если функция не отработала.

ну значит и переменная Bid не обновится )
 

и если уж на то пошло то можно так

double OpenPrice=Bid;
int ticket=OrderSend(Symbol(),OP_SELL,0.01,OpenPrice,5,0,0,"OrderOpenOne",14774,0,CLR_NONE);
//OrderSelect(ticket, SELECT_BY_TICKET );
 
опять же по какой цене откроется ордер? наверно ты это имел ввиду? тогда да я не прав
 
sanyooooook:
опять же по какой цене откроется ордер? наверно ты это имел ввиду? тогда да я не прав
Я имел ввиду что ордер может открыться и не по биду/аску, а например с проскальзыванием и это не будет учтено в твоём варианте. Наиболее надёжный вариант - это получать цену открытия с помощью OrderOpenPrice если конечно важен каждый пункт.
 
goldtrader:
Я имел ввиду что ордер может открыться и не по биду/аску, а например с проскальзыванием и это не будет учтено в твоём варианте. Наиболее надёжный вариант - это получать цену открытия с помощью OrderOpenPrice если конечно важен каждый пункт.
согласен
 
    int ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,5,0,0,"OrderOpenOne",14774,0,CLR_NONE);
    while(OrderSelect(ticket,SELECT_BY_TICKET)==false)
    {
        Sleep(100);
    }
    double OpenPrice=OrderOpenPrice();
 
sanyooooook:

Ещё один штрих:

    int ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,5,0,0,"OrderOpenOne",14774,0,CLR_NONE);
    if (ticket>0)                                               // Если позиция открылась
    {
       while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
       {
          Sleep(100);
       }
       double OpenPrice=OrderOpenPrice();
    }

 
goldtrader:

Ещё один штрих:


)), ну да