Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Закажи разработку и отслеживай ее через мобильный телефон.
khorosh
8104
khorosh 2011.10.26 18:00  
charony:

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

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

Я не вижу, что у вас то же самое. Если не работает значит не то же самое.
pako
3322
pako 2011.10.26 18:14  
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();

khorosh
8104
khorosh 2011.10.26 18:28  


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

Вы не правы. Значение TimeCurrent()  передаётся переменной LastOpenTime  только в момент открытия ордера. После открытия ордера
значение LastOpenTime меняться не будет до открытия следующего ордера.
pako
3322
pako 2011.10.26 18:40  
попробую еще раз, может и не прав
khorosh
8104
khorosh 2011.10.26 18:47  
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 присвоено не будет!

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