Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1802
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добро. Попробую по-русски простыми словами.
Вы собрались на рыбалку.
А можно сразу же из кладовки (OnInit) взять всё необходимое для рыбалки, порыбачить без беготни и, вернувшись домой, сложить всё в кладовку и холодильник (OnDeinit).
Знать вы могли об этом здесь на форуме. Просто иногда нужно слушать и слышать что вам говорят.
А то получается, вопрос задали, получили ответ, сказали - фигня, и делаете так как вам кажется.
Сначала нужно вопрос обдумать, поспрашивать, а уже потом браться за редактор.
Вы в курсе, что в программировании самое простое - это печатать код? А львиную долю разработки занимает обдумывание логики.
Какая-то простите нелепая аналогия. В таком случае давайте будем все переменные, объекты классов и т.д. делать глобальными, а не создавать по мере необходимости или может граф. объект это что-то другое (уж точно не удочка или сачок :)) ? Так что мой подход вполне рациональный и оправданный, просто mql или метатрейдер лажает.
Так будет пропускать сигнал
Чего то или туплю, или все таки, нет условия, если есть открытые ордера И есть сигнал, и бар уже новый.
Если сигналы длинные, больше бара кратно, то работать будет и по первому тику бара.
Вопрос только, а когда нужно открывать ордер, в момент появления сигнала, или на первом тике следующего бара.Чего то или туплю, или все таки, нет условия, если есть открытые ордера И есть сигнал, и бар уже новый.
Если сигналы длинные, больше бара кратно, то работать будет и по первому тику бара.
Вопрос только, а когда нужно открывать ордер, в момент появления сигнала, или на первом тике следующего бара.Извините, что поднимаю вопрос второй раз.
но есть проблема. которую пока не могу решить, а именно
открытие серии ордеров (один за другим) на одной свече.
Мне нужно, чтобы советник не мог открыть новый ордер на той же самой свече.
думал решить через Sleep() но Макар сказал что процесс лучше не останавливать.
код сейчас выглядит так:
Перед открытием проверяйте есть ли открытая позиция на этой свече. Если нет, то открывайте.
В принципе, открытый ордер обычно закрыться на тиках уже открытого бара. MakarFX и Артём правильно заметили. Поэтому, правильно будет сделать так:
В принципе, открытый ордер обычно закрыться на тиках уже открытого бара. MakarFX и Артём правильно заметили. Поэтому, правильно будет сделать так:
Прав Артем, надо так
Прав Артем, надо так
Здесь результат будет тот же. Только код более запутан. Ты пишешь один и тот же код в двух разных функциях. И это будет менее читабельно. Хотя, каждый пишет как ему удобно или нравится...
Чего-то все нагородили.
У открытой позиции есть время её открытия. Время открытия можно сопоставить со временем свечи - узнать входит ли время открытия позиции внутрь свечи (а это текущая свеча)
И для чего постоянно во всех примерах узнаёте количество ордеров? И, если ордеров ноль, то открываете. Это очень сильно ограничивает возможности.
Вообще, привязываться к количеству ордеров/позиций - это только для очень узкого направления стратегий.
Здесь результат будет тот же. Только код более запутан. Ты пишешь один и тот же код в двух разных функциях. И это будет менее читабельно. Хотя, каждый пишет как ему удобно или нравится...
Твой код
(Открылся бар и ордеров нет)
проверили сигнал - сигнала нет
... ждем следующий бар
Ты повторил ту же ошибку, что и прошлый раз
P.S.
это
должно выполняться после открытия ордераПрав Артем, надо так
В вашем коде при одной открытой позиции другая уже не откроется по противоположному сигналу. Т.е., сначала, при поступлении сигнала, нужно проверить есть ли противоположная позиция и закрыть её.
Но, повторюсь - всё такое сильно ограничивает возможности доработки стратегий.
Нужно уходить от привязки к наличию/отсутствию ордеров (особенно в четвёрке - там за ордера приняты и отложенные ордера (что верно), и позиции (что не правильно)).
Нет, иметь по рукой количество ордеров и позиций по их типам - правильно и нужно. Но опираться при сигналах только на отсутствие любых ордеров - такое себе...
Вообще, правильно - это иметь в наличии функции для подсчёта ордеров и позиций (одна функция, заполняющая структуру при изменении количества ордеров и позиций), функции открытия/закрытия позиций, функции установки ордеров и сигнальные функции. Функции различных тралов и получения данных от индикаторов. Плюс - уметь сравнивать данные позиции (открытой или закрытой) с какими-либо величинами.
Из этого набора можно составить любую стратегию.