Order ticket - № ордера, который виден на закладке "Торговля" и на закладке "История Счёта"
order pool - порядковый номер ордера в этих же закладках. Если выбрать OrderSelect( №№, SELECT_BY_POS, MODE_TRADES ), ордер с порядковым номером №№ выберется из открытых позиций (и установленных ордеров). Если выбрать OrderSelect( №№, SELECT_BY_POS, MODE_HISTORY ), выберется уже закрытый ордер с номером №№. Примечание - отсчёт начинается с 0. Т.е. первый ордер идёт под номером 0, второй под номером 1 и т.д.
пример использования:
order pool - порядковый номер ордера в этих же закладках. Если выбрать OrderSelect( №№, SELECT_BY_POS, MODE_TRADES ), ордер с порядковым номером №№ выберется из открытых позиций (и установленных ордеров). Если выбрать OrderSelect( №№, SELECT_BY_POS, MODE_HISTORY ), выберется уже закрытый ордер с номером №№. Примечание - отсчёт начинается с 0. Т.е. первый ордер идёт под номером 0, второй под номером 1 и т.д.
пример использования:
int _GetLastError; int _OrdersTotal = OrdersTotal(); for ( int z = _OrdersTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS ) ) { _GetLastError = GetLastError(); Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError, " ( ", ErrorDescription( _GetLastError ), " )" ); continue; } if ( OrderMagicNumber() == _MagicNumber && OrderSymbol() == TradeInfoLib_Symbol ) { // тут производим какие-то действия с выбранным ордером, если его символ соответствует символу графика и MagicNumber соответствует заранее определённому _MagicNumber
пример 2:
int Send_Result = OrderSend ( Send_Symbol, Send_OrderType, Send_Volume, Send_OpenPrice, Send_Slippage, Send_StopLoss, Send_TakeProfit, Send_Comment, Send_MagicNumber, Send_Expiration, Send_Color ); //---- проверяем - действительно ли открылась позиция и, если нет, выводим информацию и выходим, возвращая -4. for ( int x = 0; x < 5; x ++ ) { Sleep(1000); if ( OrderSelect( Send_Result, SELECT_BY_TICKET ) ) { break; } Send_GetLastError = GetLastError(); if ( Send_GetLastError != 0 ) { Print ( 1, "OrderSelect( " + Send_Result + ", SELECT_BY_TICKET )", "Error #" + Send_GetLastError + " ( " + ErrorDescription( Send_GetLastError ) + " )" ); continue; } Print ( "Ордер не был установлен/Позиция не была открыта" ); return(-4); }
Обращаю внимание, что надо делать ОБЯЗАТЕЛЬНУЮ проверку результата ордерселект. Т.е. проверять GetLastError() после вызова ф-ции.
Огромное спасибо!
Т.е. чтобы выбрать последний закрытый ордер например на проверку был ли он с профитом или с лоссом, нужно выбрать его по позиции из истории ( OrderSelect( HistoryTotal(), SELECT_BY_POS, MODE_HISTORY) )?
Верно? А потом с помомощью функции OrderTicket() определить его тикет - другого пути указать тикет ордера я пока не придумал. Если вы знаете - буду очень рад поучиться.
Еще раз спасибо за толкование!
Т.е. чтобы выбрать последний закрытый ордер например на проверку был ли он с профитом или с лоссом, нужно выбрать его по позиции из истории ( OrderSelect( HistoryTotal(), SELECT_BY_POS, MODE_HISTORY) )?
Верно? А потом с помомощью функции OrderTicket() определить его тикет - другого пути указать тикет ордера я пока не придумал. Если вы знаете - буду очень рад поучиться.
Еще раз спасибо за толкование!
Огромное спасибо!
Т.е. чтобы выбрать последний закрытый ордер например на проверку был ли он с профитом или с лоссом, нужно выбрать его по позиции из истории ( OrderSelect( HistoryTotal(), SELECT_BY_POS, MODE_HISTORY) )?
Верно? А потом с помомощью функции OrderTicket() определить его тикет - другого пути указать тикет ордера я пока не придумал. Если вы знаете - буду очень рад поучиться.
Еще раз спасибо за толкование!
Т.е. чтобы выбрать последний закрытый ордер например на проверку был ли он с профитом или с лоссом, нужно выбрать его по позиции из истории ( OrderSelect( HistoryTotal(), SELECT_BY_POS, MODE_HISTORY) )?
Верно? А потом с помомощью функции OrderTicket() определить его тикет - другого пути указать тикет ордера я пока не придумал. Если вы знаете - буду очень рад поучиться.
Еще раз спасибо за толкование!
Так как индекс идет от нуля, то скорее так:
if(OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)) // проверка обязательна { }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Научите пожалуйста правильно пользоваться функцией OrderSelect!
Прошу дать пояснения к вопросом по ходу встроенной справки!
bool OrderSelect( int index, int select, int pool=MODE_TRADES)
Selects order by index or ticket to further processing. If the function fails, the return value will be false. To get the extended error information, call GetLastError().
Parameters
index - Order index or order ticket depending from second parameter.
select - Selecting flags. It can be any of the following values:
SELECT_BY_POS - index in the order pool,
-------- что такое order pool ?
SELECT_BY_TICKET - index is order ticket.
--------Order ticket - что такое Order ticket ?
pool - Optional order pool index. Used when select parameter is SELECT_BY_POS.It can be any of the following values:
MODE_TRADES (default)- order selected from trading pool(opened and pending orders),
MODE_HISTORY - order selected from history pool (closed and canceled order).
Т.е. я хотел бы узнать, что это за величины, т.к. чтобы произвести какие либо действия с ордером- нужно указать его тикет, а для этого нужно его из чего то выбрать.
Буду очень признателен всем, кто ответит!
Да прибудет с Вами PROFIT!!!