Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1386
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Улыбнуло) не должно)
Если битва за - торгануть с нормальным спредом, просто вынести его "предел" в input и просто игнорить торговлю если спред выше предела.
Спред могут диллинги растягивать и без ролловера.
У меня спред плавает довольно таки немало, от 10 единиц до 45
нужно ждать чтобы скринить 45
При этом функция считает средним 17, что вполне устраивает.
1 час после ролловера он подымается до 100-140, погоняю код и погляжу, как себя поведёт дальше.
Впрочем, можно прописать так:
Вроде правильно должно работать.
Что-то не нравится мне такая логика.
Первый вход в функцию:
res = 0;
Следовательно условие
не выполнено.
А дальше вникать что-то нет желания. Для чего вдруг такое условие?
в общем вся логика мне не понятна.Что-то не нравится мне такая логика.
Первый вход в функцию:
res = 0;
Следовательно условие
не выполнено.
А дальше вникать что-то нет желания. Для чего вдруг такое условие?
в общем вся логика мне не понятна.1. Это условие только на время 1 час после ролловера, когда время 22 часа. Но это только при первом запуске, а терминал то работает с советником всегда, значит пустая она единожды.
Возможно её нужно объявить так-же static, на случай смены таймфрейма
2. if(tc>LONG_MAX-1) = обнуляем переменную tc, если вышли за допустимые пределы long. Это вряд-ли произойдёт, так-как терминал иногда перегружается, на тех-же выходных, к примеру.
---
Изменил код, это наверное окончательно:
P.S. Поставил на тест
P.S.S. Подправил код
----
P.S.S.S. Добавил ещё 1 час времени после ролловера, иначе писал очень высокий спред на некоторых дилингах.
Итоговый вариант отработал 20 часов и результат просто прекрасный
Средний дневной спред 10-45 пп, но в основном 10-17, средний посчитан как 19
Всем спасибо за участие, если есть что добавить - пишите!
Возможно её нужно объявить так-же static, на случай смены таймфрейма
Проникся, вроде должно работать, "не должно" беру обратно), теперь действительно нужно просто разобраться с моментами обнуления/присвоения.
Встречал на форуме обсуждение, но не могу найти.
Нужно ограничиться одной позицией на баре, которая может быть открыта в любую минуту, сейчас такой вариант, но он на мой взгляд "тяжёлый"
Чем это можно заменить, чтобы облегчить?
Встречал на форуме обсуждение, но не могу найти.
Нужно ограничиться одной позицией на баре, которая может быть открыта в любую минуту, сейчас такой вариант, но он на мой взгляд "тяжёлый"
Чем это можно заменить, чтобы облегчить?
"Нужно ограничиться одной позицией на баре, которая может быть открыта в любую минуту..."
слишком общая формулировка, имеется ввиду что один раз в бар в данном символе можно отправить OrderSend?
"Нужно ограничиться одной позицией на баре, которая может быть открыта в любую минуту..."
слишком общая формулировка, имеется ввиду что один раз в бар в данном символе можно отправить OrderSend?
Да. Советник работает на тайме Н1 и может открыть позицию в 10:17, нужно чтобы до 11:00, то есть на текущем баре - он больше не открывал.
Да. Советник работает на тайме Н1 и может открыть позицию в 10:17, нужно чтобы до 11:00, то есть на текущем баре - он больше не открывал.
ёпрст, опять не полные условия на мой взгляд, "дьявол в мелочах", по простому если текстом
открыл позицию - поставил "флаг запрета" и/или сохранил "время"(без разницы какое лишь бы одно и тоже(источник) для сравнения)
открылся новый бар - снял "флаг запрета" ...
Вопрос: а если позиция была как-то изменена?
Пример как определяю новый бар - doTB делитель в секундах, для H1 - 3600.0
BARii[].time - время баров с M1, а может быть произвольное и с любым разрывом, если больше или равно 1 значит "время" из разных "баров"
ёпрст, опять не полные условия на мой взгляд, "дьявол в мелочах", по простому если текстом
открыл позицию - поставил "флаг запрета" и/или сохранил "время"(без разницы какое лишь бы одно и тоже(источник) для сравнения)
открылся новый бар - снял "флаг запрета" ...
Вопрос: а если позиция была как-то изменена?
Пример как определяю новый бар - doTB делитель в секундах, для H1 - 3600.0
BARii[].time - время баров с M1, а может быть произвольное и с любым разрывом, если больше или равно 1 значит "время" из разных "баров"
Чем-то меня вариант на флагах тогда не устроил, уже не помню чем, но заменил на
Ладно, ещё подумаю над другой реализацией
Чем-то меня вариант на флагах тогда не устроил, уже не помню чем, но заменил на
Ладно, ещё подумаю над другой реализацией
А чем эта реализация тормозит? Аналогично моему коду определяет два времени в одном "баре" или в разных. Просто в моем варианте "истина" когда в разных "барах", в Вашем варианте "истина" когда в одном баре, просто обхожу сравнение == с "0" особенно целым, во, и мне наверное можно условие заменить на >0.0 или >0.9, нужно подумать...