Как сделать так, чтоб мой робот не открывал одновременно кучу Абсолютно одинаковых позиций?К примеру некоторое время назад открылись 5 позиций gbp/jpy, и все 5 по цене 153.51.
Необходимо действовать последовательно: сформировать флаг "ожидаем торговый приказ". Выдать торговый приказ и до момента пока не будет подтверждения (или отказ) торговой операции больше не выдавать торговый приказ.
Привет!
Алгоритм примерно будет таким:
1. Проверка - сколько у нас ордеров?
2. Решение = количество.ордеров=0
2. Условие(Есть сигнал+количество.ордеров=0) -то- открываем ордер. // если количество.ордеров будет больше "0" то условие не сработает и ордер не откроется.
3. идем далее...
как то так.
Привет!
Алгоритм примерно будет таким:
1. Проверка - сколько у нас ордеров?
2. Решение = количество.ордеров=0
2. Условие(Есть сигнал+количество.ордеров=0) -то- открываем ордер. // если количество.ордеров будет больше "0" то условие не сработает и ордер не откроется.
3. идем далее...
как то так.
Так не всегда работает
- 2021.09.12
- www.mql5.com
Была такая проблема. Сейчас мой робот собирает два массива со временем открытия ордеров (ордера sell и ордера buy). Есть переменные со значением сколько минут прошло со времени открытия последнего sell, buy. Каждый тик сравниваем серверное время и значение переменных.
Если больше (например 30 мин), то следующий соответствующий ордер открывается.
Все четко работает.
Вопрос: по какому сигналу робот открывает позицию? Мой работает на RSI и часто индикатор долго висит в зонах перепроданности/перекупленности и только привязкой ко времени я решил вопрос. Дашь ответ - может еще что придумаем.Согласен, сейчас уточнил свой код оказывается вот как у меня сделано...
Тогда открываем позицию....Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
fxsaber, 2021.05.05 02:04
// Демонстрация открытия дубля позиции в MT5. #include <Trade\Trade.mqh> void OnStart() { CTrade Trade; while (!IsStopped() && (PositionsTotal() <= 1)) // Закончим, когда появится более одной позиции. if (PositionsTotal() == 1) Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем. else if (!OrdersTotal()) Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию. }
Запустите этот код на пустом демо-счете и убедитесь в открытии двух позиций через несколько секунд.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования