Кто знает как прописать в советнике запрет открытия ордеров внутри канала?
Если известны границы канала, то просто запрещаем открывать рыночные ордера. С отложениками сложнее, надо проверять находятся ли они внутри канала или вне его. Внутри - удаляем.
Правда есть еще спред. Его тоже надо учитывать.
Если просто, то примерно так для рыночных ордеров
double UP=0; // Верхняя граница double DN=0; // Нижняя граница double Price=0; // Текущая цена ....... // Расчет границ канала и текущей цены if (Price<=UP && Price>=Dn) return; ...... // цена вне границ канала, продолжаем работу
Для ускорения работы условие можно оптимизировать. Точнее упростить
Добавлю более оптимальное условие.
Если будет необходимость - переведу на понятный язык
if ((UP-Price)*(DN-Price)<=0) return;
Просто умножение и простое логическое выражение выполняются быстрее чем сложное логическое
Добавлю более оптимальное условие.
Если будет необходимость - переведу на понятный язык
Просто умножение и простое логическое выражение выполняются быстрее чем сложное логическое
Напиши логин скайпа. Мне интересно пообщаться с хорошим программистом.
можешь подсказать как прописать условие открытия и закрытия индикатора zigzag? Я уже все перепробовала, но советник не открывает по сигналам zigzag.
Подскажи пожалуйста где в коде вставляется if ((UP-Price)*(DN-Price)<=0) return;
У меня все равно выходят сделки внутри канала.
double MA_1=0; // Верхняя граница double MA_2=0; // Нижняя граница double Price=0; // Текущая цена double MA_0=iCustom(Symbol(),0,"TriangularMA centered abands alerts 2",TimeFrames,HalfLength,Price,BandsDeviations,1,1); MA_1=iCustom(Symbol(),0,"TriangularMA centered abands alerts 2",TimeFrames,HalfLength,Price,BandsDeviations,1,2); MA_2=iCustom(Symbol(),0,"TriangularMA centered abands alerts 2",TimeFrames,HalfLength,Price,BandsDeviations,1,3); int tiket,cnt,total=OrdersTotal(); if(Time[0]==prevtime) return(0); prevtime=Time[0]; if(OrdersTotal()<1) if((MA_1-Price)*(MA_2-Price)>=0) { if(MA_1<MA_0) { tiket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"",Magic,0,clrGreen); if(tiket>0) { if(OrderSelect(tiket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else { Print("Error opening BUY order : ",GetLastError()); return(0); } } else if(MA_2>MA_0) { tiket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"",Magic,0,clrRed); if(tiket>0) { if(OrderSelect(tiket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else { Print("Error opening SELL order : ",GetLastError()); return(0); } } }
Подскажи пожалуйста где в коде вставляется if ((UP-Price)*(DN-Price)<=0) return;
У меня все равно выходят сделки внутри канала.
Разберите работу с функцией
https://docs.mql4.com/ru/indicators/icustom
С ЗигЗагом помочь не с могу.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования