Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 210
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день.
Моя стратегия учитывает величину спреда, спред определяется функцией:
Но так как в тестере стратегий спред постоянен, возникла потребность в эмуляторе случайного спеда. Чтоб в тестере эмулировать изменения спреда, в диапазоне от 2 до 3 пунктов (4 знака) в 80% случаев, и больше 3 пунктов в 20%. Может есть идеи как это реализовать, или ссылки где подобная идея решалась.
Ошибка с магиком приводит к тому, что при закрытии по стопу советник ваш не видит, что его позиция закрыта по стопу. Почему? Отвечаю: вы открываете позиции с магиком 123, а в функцию проверки закрытия по стопу отсылаете переменную Magic. Как думаете, чему она равна при неявной инициализации? Нулю. Естественно в функции ищутся позиции с магиком 0, а он у ваших позиций равен 123. И мы не спорим, а так... рассуждаем сленца... Проверяйте реагирование на закрытия по стопу:
Остальную вашу "мёртвую" логику советника я не глядел - я вам помогал разобраться с функцией проверки закрытия по стопу...
Артем ! Добрый день! Еще раз спасибо за помощь.
Убрал всю лишнюю "мертвую" логику и "оживил" оставшуюся.... по мере своего понимания.
Оставил практически только функцию,которую Вы помогли мне исправить.
Но начали происходить чудеса не доступные для моего понимания
1. В том виде как у Вас советник открывает сделки на начале каждой свечи(у меня 5 минутки)
игнорируя при этом все указанные условия
Т.е. управление попадает в первую строку
double Price=iOpen(Symbol (),0,0);
а потом почему перепрыгивает через 11 строк и попадает в строки
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
2.Если же удалить строку вычисляющую минимальный лот Lot=MarketInfo(Symbol(), MODE_MINLOT);
советник работает нормально, но функция isCloseLastPosByStop не работает.
Очень долго напрягал свои извилины.....но тщетно.Буду Вам признателен если подскажете где прячется ошибка.
solnce600:
Артем ! Добрый день! Еще раз спасибо за помощь.
Всю свою " мертвую логику" убрал лишнюю и "оживил" оставшуюся.... по мере своего понимания.
Оставил практически только функцию,которую Вы помогли мне исправить.
Но начали происходить чудеса не доступные для моего понимания
После
добавте все в тело { }
Извените, что я не Артем.
solnce600:
После
добавте все в тело { }
Извените, что я не Артем.
так t или все таки Lot ???
solnce600:
После
добавте все в тело { }
Извените, что я не Артем.
Сделал как ты сказал.....увы советник работает ....функция isCloseLastPosByStop не работает
Ето кусок кода из функции bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
А если проскальзование в 3 пиписьки? Не продумано как-то ))
Ты понимаешь - я пока на этом не заморачиваюсь....
Я целую неделю никак не могу понять почему не работает эта функция так как мне надо.
Т.е мне нужно что бы после стопа следующий ордер открылся двойным объемом от объема ордера закрывшегося по стопу,а после не стопа следующий ордер открылся обычным объемом.
Исправьте логику работы, а то еще долго будет думать
Ето кусок кода из функции bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
А если проскальзование в 3 пиписьки? Не продумано как-то ))
Ты понимаешь - я пока на этом не заморачиваюсь....
Я целую неделю никак не могу понять почему не работает эта функция так как мне надо.
Т.е мне нужно что бы после стопа следующий ордер открылся двойным объемом от объема ордера закрывшегося по стопу,а после не стопа следующий ордер открылся обычным объемом.А зачем историю ордеров трогать? посотри на баланс - куда пошел в ту сторону и меняй лот.
Если на щету будет торговать исключительно робот.