Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А на каком таймфрейме вы проверяете эксперт?
на H4
на H4
Меня смущают переходы по времени из datetime в int и наоборот. Может там ошибка ?
на H4
Получается, что после открытия первого ордера следующий откроется только через 10 дней? Вы хотели получить именно такой результат?
Это не принципиально. Искать нужно во времени
ничего себе "не принципиально". вам совершенно правильно указали на принципиальную ошибку
Верхний вариант не будет работать правильно. Если условие if (OrderMagicNumber()==magic && OrderType()== type) ложно, то дальше идет брейк и мы можем не попасть на желаемый ордер
вы может быть удивитесь, но ваш ответ неверный. в верхнем варианте брейк пойдёт в любом случае
по времени тоже косяк - поиск по времени открытия ордров и присвоение значений переменных timeopenbuy и timeopensell
for(i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS))
{
if (OrderSymbol()!=Symbol())continue;
if (OrderMagicNumber()!= magic)continue;
if (OrderType()== 0)
{
tikbuy = OrderTicket();
timeopenbuy = OrderOpenTime();
}
if (OrderType()== 1)
{
tiksell = OrderTicket();
timeopensell = OrderOpenTime();
}
}
}
надо производить не только в функции init(), которая запускается только 1 раз при прицеплении советника к графику, но и в start(), которая отрабатывает на каждом тике, перед проверкой условий на открытие новых ордеров
или я не прав?
Если есть логическая в одной функции, то она может быть и в других.
На вскидку вижу явные недочеты в логике:
1. вот вход на покупку:
Вот функция открытия в длинную позицию:
Видно, что открытие ордера не всегда является результатом работы этой функции. Например, если обработчик ошибок возвращает не единицу OPENBUY вообще непонятно что возвращает.
Но в первом цикле, без анализа результата работы OPENBUY, просто устанавливается переменная timeopenbuy так, как будто ордер всегда открыт после работы этой функции.
2. Если исполнение Маркет - работать не будет ....
3. решение для выставления одного ордера на бар проблемное ....
Дальше даже смотреть нет смысла...
Получается, что после открытия первого ордера следующий откроется только через 10 дней? Вы хотели получить именно такой результат?
Почему чепез 10 дней ? Через интервал периода
ничего себе "не принципиально". вам совершенно правильно указали на принципиальную ошибку
Признаю, функция ордерчек была неправильной, но это не решило проблему
Признаю, функция ордерчек была неправильной, но это не решило проблему
может вам лучше взять уроки по обучению программированию?
ваш код настолько "сырой" и богат на логические ошибки - что тут одно слово "безнадёга" на данном этапе
если хотите научиться - именно научить себя - писать программы - да ещё и за деньги, то мой вам совет - станьте активным участником-подсказчиком в ветке "вопросы новичков" https://www.mql5.com/ru/forum/131277/page343 - и школа хорошая и опыт появится
а так вы просто морочите голову заказчикам своим "профессиональным" исполнением