Есть индикатор канала. Помогите прописать правильно условие открытия сделки. Ордер должен открываться за границей канала и появлении стрелки. Никак не получается подобрать условие.
исключительно по скриншоту, в ЛОНГ:
- цена ниже нижней границы канала
- после пробития канала УЖЕ был должный сигнал
- цена достигла минимального Low после выхода из канала, отмеченного ранее сигналом
- границы канала (и центральная) не меняли направление
исключительно по скриншоту, в ЛОНГ:
- цена ниже нижней границы канала
- после пробития канала УЖЕ был должный сигнал
- цена достигла минимального Low после выхода из канала, отмеченного ранее сигналом
- границы канала (и центральная) не меняли направление
цена ниже нижней границы канала -это понятно. Ask<Al_3
а вот как прописать - цена достигла минимального Low после выхода из канала и границы канала (и центральная) не меняли направление
Есть индикатор канала. Помогите прописать правильно условие открытия сделки. Ордер должен открываться за границей канала и появлении стрелки. Никак не получается подобрать условие.
Не понял вот этого кода
if(Ticket>0) NumberError=GetLastError(); Print("Ошибка(",NumberError,") открытия Buy ",Error(NumberError)); // должно быть if(Ticket == -1) { NumberError=GetLastError(); Print("Ошибка(",NumberError,") открытия Buy ",Error(NumberError)); } // а еще лучше с выдачей текста ошибки вместо номера #include <stderror.mqh> #include <stdlib.mqh> // узнает код последней ошибки и возвращает строку с описанием string GetMyLastError() { int err = GetLastError(); string serr = ErrorDescription(err); ResetLastError(); return(serr); } // и сам код if(Ticket == -1) { Print("Ошибка открытия Buy ", GetMyLastError()); }
***
Анна, прокомментируйте пожалуйста, какой буфер за что отвечает
И у меня вместо стрелок точки, очень мелкий рисунок
Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0); // вот тут вставьте комменты в каждой строчке Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0); Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0); Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0); Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0);
**
цена ниже нижней границы канала -это понятно. Ask<Al_3
а вот как прописать - цена достигла минимального Low после выхода из канала и границы канала (и центральная) не меняли направление
Анна, прокомментируйте пожалуйста, какой буфер за что отвечает
И у меня вместо стрелок точки, очень мелкий рисунок
**
добавила коментарий
//Открытие ордеров //Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0); //верхняя линия //Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0); //средняя линия //Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0); //нижняя линия Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0); //стрелка на продажу Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0); //стрелка на куплю if(OrdersTotal()<1) { Al_4 = 0; Al_5 = 0; if(Al_4 > 0) { SL=NormalizeDouble(Ask-StopLoss*Point,Digits); Ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SL,0,0,Magic,0,clrOrangeRed); if(Ticket>0) NumberError=GetLastError(); Print("Ошибка(",NumberError,") открытия Buy ",Error(NumberError)); } if(Al_5 > 0) { SL=NormalizeDouble(Bid+StopLoss*Point,Digits); Ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SL,0,0,Magic,0,clrOrangeRed); if(Ticket>0) NumberError=GetLastError(); Print("Ошибка(",NumberError,") открытия Sell ",Error(NumberError)); } }Anna_89:
Есть индикатор канала. Помогите прописать правильно условие открытия сделки. Ордер должен открываться за границей канала и появлении стрелки. Никак не получается подобрать условие.
правда нужно знать что присылает индикатор когда нет точки - если ничего не присылает (ну или присылает 0) тогда сработает и по точке будет открывать ...
ну или поправить индикатор что бы в отсутствие сигнала присылал 0 ...
правда нужно знать что присылает индикатор когда нет точки - если ничего не присылает (ну или присылает 0) тогда сработает и по точке будет открывать ...
ну или поправить индикатор что бы в отсутствие сигнала присылал 0 ...
То есть, вы уже поправили.
сори - ошибочка
//Открытие ордеров //Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0); //верхняя линия //Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0); //средняя линия //Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0); //нижняя линия Al_4 = 0; Al_5 = 0; Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0); //стрелка на продажу Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0); //стрелка на куплю if(OrdersTotal()<1) { if(Al_5 > 0) { SL=NormalizeDouble(Ask-StopLoss*Point,Digits); Ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SL,0,0,Magic,0,clrOrangeRed); if(Ticket>0) NumberError=GetLastError(); Print("Ошибка(",NumberError,") открытия Buy ",Error(NumberError)); } if(Al_4 > 0) { SL=NormalizeDouble(Bid+StopLoss*Point,Digits); Ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SL,0,0,Magic,0,clrOrangeRed); if(Ticket>0) NumberError=GetLastError(); Print("Ошибка(",NumberError,") открытия Sell ",Error(NumberError)); } }
То есть, вы уже поправили.
а вот вам для ошибок ...
//Открытие ордеров //Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0); //верхняя линия //Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0); //средняя линия //Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0); //нижняя линия Al_4 = 0; Al_5 = 0; Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0); //стрелка на продажу Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0); //стрелка на куплю if(OrdersTotal()<1) { if(Al_5 > 0) { SL=NormalizeDouble(Ask-StopLoss*Point,Digits); Ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SL,0,0,Magic,0,clrOrangeRed); if(Ticket>0) Print("Ошибка открытия Buy - ",ErrorDescript(GetLastError())); } if(Al_4 > 0) { SL=NormalizeDouble(Bid+StopLoss*Point,Digits); Ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SL,0,0,Magic,0,clrOrangeRed); if(Ticket>0) Print("Ошибка открытия Sell - ",ErrorDescript(GetLastError())); } } // +----------------------------------------------------------------------+ // Коды ошибок | // +----------------------------------------------------------------------+ string ErrorDescript(int error_code){ string error_string; switch(error_code) { //---- Коды ошибок, возвращаемые торговым сервером: case 0: error_string="Нет ошибок"; break; case 1: error_string="Нет ошибки, но результат неизвестен"; break; case 2: error_string="Общая ошибка"; break; case 3: error_string="Неправильные параметры"; break; case 4: error_string="Торговый сервер занят"; break; case 5: error_string="Старая версия клиентского терминала"; break; case 6: error_string="Нет связи с торговым сервером"; break; case 7: error_string="Недостаточно прав"; break; case 8: error_string="Слишком частые запросы"; break; case 9: error_string="Недопустимая операция нарушающая функционирование сервера"; break; case 64: error_string="Счет заблокирован"; break; case 65: error_string="Неправильный номер счета"; break; case 128: error_string="Истек срок ожидания совершения сделки"; break; case 129: error_string="Неправильная цена"; break; case 130: error_string="Неправильные стопы"; break; case 131: error_string="Неправильный объем"; break; case 132: error_string="Рынок закрыт"; break; case 133: error_string="Торговля запрещена"; break; case 134: error_string="Недостаточно денег для совершения операции"; break; case 135: error_string="Цена изменилась"; break; case 136: error_string="Нет цен"; break; case 137: error_string="Брокер занят"; break; case 138: error_string="Новые цены"; break; case 139: error_string="Ордер заблокирован и уже обрабатывается"; break; case 140: error_string="Разрешена только покупка"; break; case 141: error_string="Слишком много запросов"; break; case 145: error_string="Модификация запрещена, так как ордер слишком близок к рынку"; break; case 146: error_string="Подсистема торговли занята"; break; case 147: error_string="Использование даты истечения ордера запрещено брокером"; break; case 148: error_string="Количество открытых и отложенных ордеров достигло предела, установленного брокером."; break; //---- Коды ошибок выполнения MQL4-программы: case 4000: error_string="Нет ошибки"; break; case 4001: error_string="Неправильный указатель функции"; break; case 4002: error_string="Индекс массива - вне диапазона"; break; case 4003: error_string="Нет памяти для стека функций"; break; case 4004: error_string="Переполнение стека после рекурсивного вызова"; break; case 4005: error_string="На стеке нет памяти для передачи параметров"; break; case 4006: error_string="Нет памяти для строкового параметра"; break; case 4007: error_string="Нет памяти для временной строки"; break; case 4008: error_string="Неинициализированная строка"; break; case 4009: error_string="Неинициализированная строка в массиве"; break; case 4010: error_string="Нет памяти для строкового массива"; break; case 4011: error_string="Слишком длинная строка"; break; case 4012: error_string="Остаток от деления на ноль"; break; case 4013: error_string="Деление на ноль"; break; case 4014: error_string="Неизвестная команда"; break; case 4015: error_string="Неправильный переход"; break; case 4016: error_string="Неинициализированный массив"; break; case 4017: error_string="Вызовы DLL не разрешены"; break; case 4018: error_string="Невозможно загрузить библиотеку"; break; case 4019: error_string="Невозможно вызвать функцию"; break; case 4020: error_string="Вызовы внешних библиотечных функций не разрешены"; break; case 4021: error_string="Недостаточно памяти для строки, возвращаемой из функции"; break; case 4022: error_string="Система занята"; break; case 4050: error_string="Неправильное количество параметров функции"; break; case 4051: error_string="Недопустимое значение параметра функции"; break; case 4052: error_string="Внутренняя ошибка строковой функции"; break; case 4053: error_string="Ошибка массива"; break; case 4054: error_string="Неправильное использование массива-таймсерии"; break; case 4055: error_string="Ошибка пользовательского индикатора"; break; case 4056: error_string="Массивы несовместимы"; break; case 4057: error_string="Ошибка обработки глобальныех переменных"; break; case 4058: error_string="Глобальная переменная не обнаружена"; break; case 4059: error_string="Функция не разрешена в тестовом режиме"; break; case 4060: error_string="Функция не разрешена"; break; case 4061: error_string="Ошибка отправки почты"; break; case 4062: error_string="Ожидается параметр типа string"; break; case 4063: error_string="Ожидается параметр типа integer"; break; case 4064: error_string="Ожидается параметр типа double"; break; case 4065: error_string="В качестве параметра ожидается массив"; break; case 4066: error_string="Запрошенные исторические данные в состоянии обновления"; break; case 4067: error_string="Ошибка при выполнении торговой операции"; break; case 4099: error_string="Конец файла"; break; case 4100: error_string="Ошибка при работе с файлом"; break; case 4101: error_string="Неправильное имя файла"; break; case 4102: error_string="Слишком много открытых файлов"; break; case 4103: error_string="Невозможно открыть файл"; break; case 4104: error_string="Несовместимый режим доступа к файлу"; break; case 4105: error_string="Ни один ордер не выбран"; break; case 4106: error_string="Неизвестный символ"; break; case 4107: error_string="Неправильный параметр цены для торговой функции"; break; case 4108: error_string="Неверный номер тикета"; break; case 4109: error_string="Торговля не разрешена. Необходимо включить опцию Разрешить советнику торговать в свойствах эксперта."; break; case 4110: error_string="Длинные позиции не разрешены. Необходимо проверить свойства эксперта."; break; case 4111: error_string="Короткие позиции не разрешены. Необходимо проверить свойства эксперта."; break; case 4200: error_string="Объект уже существует"; break; case 4201: error_string="Запрошено неизвестное свойство объекта"; break; case 4202: error_string="Объект не существует"; break; case 4203: error_string="Неизвестный тип объекта"; break; case 4204: error_string="Нет имени объекта"; break; case 4205: error_string="Ошибка координат объекта"; break; case 4206: error_string="Не найдено указанное подокно"; break; default: error_string="Ошибка при работе с объектом"; } return(error_string); }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть индикатор канала. Помогите прописать правильно условие открытия сделки. Ордер должен открываться за границей канала и появлении стрелки. Никак не получается подобрать условие.