if( tm3 < TimeCurrent()) return;
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2016.11.04 14:09
Не могу ничего написать в ЛС. Пробовал через Хром и FF.
не могу ответить в ЛС.
Ваше условие открытия - это срабатывание if. Поэтому return лишний.
Из-за
не могу ответить в ЛС.
Ваше условие открытия - это срабатывание if. Поэтому return лишний.
Странно не могу понять, в другом советнике этот кусок кода работает прекрасно, но там есть return
datetime tm2 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + OpenTime);
datetime tm3 = tm2 + OpenPeriod*60;
if(OpenTimeOnOff == true)
if(TimeCurrent() < tm2 || TimeCurrent() > tm3) return;
Это условие на оборот даёт период когда советнику работать, например 1 час в сутки.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
MQL4 для MT4. Проблема у меня такая, советник открывает сделку и после ней должно пройти 2 часа, чтобы открыть следующую (иначе он может открыть много сделок на одном событии).
Как я попытался это воплотить в жизнь, таким образом:
datetime tm2 = TimeTradeSell();
datetime tm3 = tm2 + 90*60;
if( tm3 < TimeCurrent()) return;
{
// Условие открытия сделки
}
//Функции
datetime TimeTradeSell() //Получает из истории цену закрытия последнего ордера Sell
{
datetime TimeClose = 0;
for(int i=0;i<OrdersHistoryTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
{
TimeClose=OrderCloseTime();
}
return(TimeClose);
}
Но как вы уже догадались, ни фига не работает. Сова просто открывает первую сделку, а дальше отказывается открывать сделки. Может я вообще не правильно подхожу к решению задачи?