Как написать функцию открытия отложенного ордера? - страница 3

 
sadam:
Integer:
Можно использоват парметр функции OrderSend() ExpirationTime

Что вызывает затруднение, удаление ордеров или определение момента в ремени когда ордера надо удалять или идентификация сегодняшнего ордера? Собственно вот и план: определеить момент времени когда надо удалять ордера, просматривая ордера определить те которые были установлены сегодня, и удалить.

А как это всё написать ?

Пример какой приведи, если можешь .

1.Определить момент времени когда надо удалить ордер ? Какая функция....
2.Просмотреть все ордера и определить те которые были установлены и не сработали ? Какая функция...
3.Удаление ордеров. Какая функция....
 
int MskOffset = 1;        // Сдвиг локального времени от времени терминала
int TradeEndHour = 18;    // Снять ордера в 18-27
int TradeEndMinute = 27;  // по локальному времени
datetime T1;
datetime ExpTime;
T1 = iTime(Symbol(),PERIOD_H1,1);
oExpTime = T1 - TimeHour(T1+MskOffset*3600)*3600 - TimeMinute(T1)*60 + (TradeEndHour)*3600 + TradeEndMinute*60;
...
    Res = OrderSend(Symbol(),BUY_STOP,oLot,oPrice,oSlip,oSL,oTP,oComment,oMagNum,oExpTime);
...
Примерно так. Время до истечения отложенного ордера задается по времени сервера и должно быть не менее 10 минут от текущего.
 
PSmith:
int MskOffset = 1;        // Сдвиг локального времени от времени терминала
int TradeEndHour = 18;    // Снять ордера в 18-27
int TradeEndMinute = 27;  // по локальному времени
datetime T1;
datetime ExpTime;
T1 = iTime(Symbol(),PERIOD_H1,1);
oExpTime = T1 - TimeHour(T1+MskOffset*3600)*3600 - TimeMinute(T1)*60 + (TradeEndHour)*3600 + TradeEndMinute*60;
...
    Res = OrderSend(Symbol(),BUY_STOP,oLot,oPrice,oSlip,oSL,oTP,oComment,oMagNum,oExpTime);
...
Примерно так. Время до истечения отложенного ордера задается по времени сервера и должно быть не менее 10 минут от текущего.
По моему это что-то не то......

Мне надо узнать какие сегоднешние ордера не открылись и удалить их сегодня в определенное время .... например в 18.30 
 
sadam:

По моему это что-то не то......

Мне надо узнать какие сегоднешние ордера не открылись и удалить их сегодня в определенное время .... например в 18.30

Блок вызвать в определённое время, например, в 18:30

for (int i = OrdersTotal()-1; i > 0; i--)
{
    if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
    if (OrderType()>1 && DateToStr(OrderOpenTime(),TIME_DATE)==DateToStr(TimeCurrent(),TIME_DATE))
        OrderDelete(OrderTicket());
}

В коде нет проверок на ошибки выполнения, нет проверки тикета ордера (предполагается, что эксперт торгует на счёте в одиночестве).
Если нужно удалить все, а не только сегодняшние ордера, проверку по дате выполнять не нужно.
 

Как правильно реализовать функцию Datetime expiration в OrderSend


if ( OrderSend ( Symbol(), OP_SELLSTOP, Lot, _OpenPriceLevel, 
                    0, _StopLossLevel, 
                   _TakeProfitLevel, "", _MagicNumber, ?????? ) < 0 )
Причина обращения: