как исправить код, чтобы следующий ордер открывался позже предыдущего на одну минуту - страница 4

 
charony:

это тоже самое,что у меня, но не работает

поэтому и спрашиваю здесь

Я не вижу, что у вас то же самое. Если не работает значит не то же самое.
 
khorosh Если переменной LastOpenTime присваивается значение текущего времени в момент открытия ордера, то это значение практически будет равно значению переменной

OrderOpenTime().


в этом случае да т.е в момент открытия ордера и если присвоить, но через десять сек TimeCurrent будет больше чем LastOpenTime на 10 сек

if(Trade && Ваши условия входа для Buy){OrderSend(..OP_BUY...);LastOpenTime=TimeCurrent();Trade=false;}  А здесь оно всегда равно


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();

 


if(Trade && Ваши условия входа для Buy){OrderSend(..OP_BUY...);LastOpenTime=TimeCurrent();Trade=false;}  А здесь оно всегда равно

Вы не правы. Значение TimeCurrent()  передаётся переменной LastOpenTime  только в момент открытия ордера. После открытия ордера
значение LastOpenTime меняться не будет до открытия следующего ордера.
 
попробую еще раз, может и не прав
 
charony:

18:00:00 открываем ордер

OrderOpenTime()=

18:00:00

TimeCurrent()=

18:00:00

LastOpenTime=

TimeCurrent()=

18:00:00 если

LastOpenTime=

TimeCurrent()

18:00:01

OrderOpenTime()=

18:00:00

TimeCurrent()=

18:00:01

LastOpenTime=

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 присвоено не будет!

 
DhP khorosh РЕСПЕКТ И МНОГО СПАСИБО
все заработало
Статические переменные хранятся в постоянной области памяти программы, их значения не теряются при выходе из функции. Любые переменные в блоке, кроме формальных параметров функции, могут быть определены как статические. Статическая переменная может быть проинициализирована соответствующей ее типу константой, в отличие от простой локальной переменной, которая может быть проинициализирована любым выражением. Если нет явной инициализации, то статическая переменная инициализируется нулем. Статические переменные инициализируются однократно перед вызовом специализированной функции init(), то есть при выходе из функции, внутри которой объявлена статическая переменная, значение этой переменной не теряется.
Причина обращения: