khoroshЕсли переменной LastOpenTime присваивается значение текущего времени в момент открытия ордера, то это значение практически будет равно значению переменной
OrderOpenTime().
в этом случае да т.е в момент открытия ордера и если присвоить, но через десять сек TimeCurrent будет больше чем LastOpenTime на 10 сек
if(Trade && Ваши условия входа для Buy){OrderSend(..OP_BUY...);LastOpenTime=TimeCurrent();Trade=false;} А здесь оно всегда равно
if(Trade && Ваши условия входа для Buy){OrderSend(..OP_BUY...);LastOpenTime=TimeCurrent();Trade=false;} А здесь оно всегда равно
Вы не правы. Значение TimeCurrent() передаётся переменной LastOpenTime только в момент открытия ордера. После открытия ордера
значение LastOpenTime меняться не будет до открытия следующего ордера.
Статические переменные хранятся в постоянной области памяти программы, их значения не теряются при выходе из функции. Любые переменные в блоке, кроме формальных параметров функции, могут быть определены как статические. Статическая переменная может быть проинициализирована соответствующей ее типу константой, в отличие от простой локальной переменной, которая может быть проинициализирована любым выражением. Если нет явной инициализации, то статическая переменная инициализируется нулем. Статические переменные инициализируются однократно перед вызовом специализированной функции init(), то есть при выходе из функции, внутри которой объявлена статическая переменная, значение этой переменной не теряется.
это тоже самое,что у меня, но не работает
поэтому и спрашиваю здесь
OrderOpenTime().
в этом случае да т.е в момент открытия ордера и если присвоить, но через десять сек TimeCurrent будет больше чем LastOpenTime на 10 сек
TimeCurrent=OrderOpenTime = LastOpenTime
for(int i=OrdersTotal() −1;i>=0;i--)if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(TimeCurrent() - OrderOpenTime()>0)
LastOpenTime = OrderOpenTime();
18:00:00 открываем ордер
OrderOpenTime()=
18:00:00TimeCurrent()=
18:00:00LastOpenTime=
TimeCurrent()=
18:00:00 еслиLastOpenTime=
TimeCurrent()
18:00:01
OrderOpenTime()=
18:00:00TimeCurrent()=
18:00:01LastOpenTime=
TimeCurrent()=
18:00:01 еслиLastOpenTime=
TimeCurrent()
TimeCurrent()-
LastOpenTime = 0 всегда если
LastOpenTime=
TimeCurrent()
так надеюсь понятно?
Ошибка здесь:
18:00:01
LastOpenTime=
TimeCurrent()=
18:00:01
Как я уже писал выше LastOpenTime не будет меняться пока не сработают условия для открытия следующего ордера и его открытия.
А в условии как раз проверяется прошло ли 60 секунд с момента открытия предыдущего ордера. А раз 60 сек не прошло значит переменной
LastOpenTime значение TimeCurrent()=18:00:01 присвоено не будет!