В прикреплённом файле индикатор, отслеживающий паттерны. Может пригодится (можно глянуть в его код).
В прикреплённом файле индикатор, отслеживающий паттерны. Может пригодится (можно глянуть в его код).
Что такое паттерны?) У меня есть индикатор который отображает свечные комбинации, теперь я хочу по этому индикатору написать советник. В этом индикаторе который Вы мне скинули другая логика чем в том что у меня есть, но отображение комбинаций одно.
Проблема в том, что:
-сигнал на покупку бывает срабатывает когда цена Ask не пробила максимум High[1], а равна ей или на 1-2 пункта нижу.
-сигнал на продажу бывает срабатывает когда цена Ask не пробила минимум бара High[1], а равна ей или на 1-2 пункта выше.
ПОМОГИТЕ ПОЖАЛУЙСТА. На форуме не нашел похожих тем.
Так и должно быть.
High[1] это бид.
А Аsk ровно на спред выше.
Что такое паттерны?) У меня есть индикатор который отображает свечные комбинации, теперь я хочу по этому индикатору написать советник. В этом индикаторе который Вы мне скинули другая логика чем в том что у меня есть, но отображение комбинаций одно.
Паттерн - это и есть свечная комбинация.
Я не писал этот индикатор, поэтому про логику формирования паттернов ничего сказать не могу.
Приветствую всех!
У меня вот обнаружились ссылки на заявленную тему ветки:
https://www.mql5.com/ru/code/11200 - индюк по свечным паттернам
https://www.mql5.com/ru/forum/107681/page2 - аналог. ветка в тему
Всем спасибо, вроде этот вопрос наладил теперь работает нормально:)
Народ подскажите теперь как в этот код вставить трал??? тоже не чё не получается:(((
Допустим при достижение Т/Р, S/L и Т/Р подымались или опускались на 5 пунктов. Буду очень БЛАГОДАРЕН кто подскажет!!!
Народ ну подскажите кто то:(
Посмотрите в CodeBase в библиотеках. Там этих тралов на любой вкус.
На вскидку:
Я нашёл но не пойму куда надо что вставлять, мне надо вставить вот этот трал.
//+------------------------------------------------------------------+ //| TrailingByShadows.mq4 | //| I_D | //| http://www.mymmk.com/ | //+------------------------------------------------------------------+ #property copyright "I_D" #property link "http://www.mymmk.com/" extern int iTicket; // уникальный номер (тикет) открытой позиции extern int iTmfrm; // период, по барам которого следует тралить (1, 5, 15, 30, 60, 240, 1440, 10080, 43200) extern int iBars_n = 3; // кол-во баров, по которым следует тралить extern int iIndent = 3; // отступ от тени бара, на котором размещается стоплосс extern bool bTrlinloss = false; // следует ли тралить на участке лоссов (между курсом стоплосса и открытия) //+------------------------------------------------------------------+ //| ТРЕЙЛИНГ ПО ТЕНЯМ N СВЕЧЕЙ | //| При запуске эксперта ему необходимо указать уникальный номер | //| (тикет) открытой позиции, а также определить параметры трейлинга:| //| количество баров, по теням которых необходимо трейлинговать | //| (от 1 и больше) и отступ (пунктов) - расстояние от макс. (мин.) | //| свечи, на которое переносится стоплосс (от 0), переключатель | //| trlinloss указывает, следует ли трейлинговать на участке | //| "стоплосс-курс открытия позиции. | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { TrailingByShadows(iTicket,iTmfrm,iBars_n,iIndent,bTrlinloss); return(0); } //+------------------------------------------------------------------+ void TrailingByShadows(int ticket,int tmfrm,int bars_n, int indent,bool trlinloss) { int i; // counter double new_extremum; // проверяем переданные значения if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET))) { Print("Трейлинг функцией TrailingByShadows() невозможен из-за некорректности значений переданных ей аргументов."); return(0); } // если длинная позиция (OP_BUY), находим минимум bars_n свечей if (OrderType()==OP_BUY) { for(i=1;i<=bars_n;i++) { if (i==1) new_extremum = iLow(Symbol(),tmfrm,i); else if (new_extremum>iLow(Symbol(),tmfrm,i)) new_extremum = iLow(Symbol(),tmfrm,i); } // если тралим и в зоне убытков if (trlinloss==true) { // если найденное значение "лучше" текущего стоплосса позиции, переносим if ((((new_extremum - indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum - indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)) if (!OrderModify(ticket,OrderOpenPrice(),new_extremum - indent*Point,OrderTakeProfit(),OrderExpiration())) Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError()); } else { // если новый стоплосс не только лучше предыдущего, но и курса открытия позиции if ((((new_extremum - indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && ((new_extremum - indent*Point)>OrderOpenPrice()) && (new_extremum - indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)) if (!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration())) Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError()); } } // если короткая позиция (OP_SELL), находим минимум bars_n свечей if (OrderType()==OP_SELL) { for(i=1;i<=bars_n;i++) { if (i==1) new_extremum = iHigh(Symbol(),tmfrm,i); else if (new_extremum<iHigh(Symbol(),tmfrm,i)) new_extremum = iHigh(Symbol(),tmfrm,i); } // если тралим и в зоне убытков if (trlinloss==true) { // если найденное значение "лучше" текущего стоплосса позиции, переносим if ((((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)) if (!OrderModify(ticket,OrderOpenPrice(),new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration())) Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError()); } else { // если новый стоплосс не только лучше предыдущего, но и курса открытия позиции if ((((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderOpenPrice()) && (new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)) if (!OrderModify(ticket,OrderOpenPrice(),new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration())) Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError()); } } } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день всем. Пытаюсь написать советник на основе свечных комбинаций, но как оказалось это не так легко. Когда советник был готов (я так думал) в его работе оказались ошибки, которые я начал исправлять. На данном этапе я не могу справится с 1й проблемой ПОМОГИТЕ ПОЖАЛУЙСТА.
Итак. Советник я попытался максимально упростить, чтоб легче было в нем разобраться. Свечную комбинацию использую самую элементарную - ДОДЖ. После того как образовался додж (Open[i]==Close[i]) я жду подтверждающего сигнала-цена закрытия следующего бара должна быть выше максимума High[i] < Close[1] (покупка) или цена закрытия следующего бара должна быть ниже минимума доджа Low[i] > Close[1] (продажа).
Сигнал на покупку:
-когда выполнилось условие цена закрытия 1го бара после доджа (Close[1]), выше его максимума. Покупаем сразу, как только Ask>High[1] (цена выше максимума, 1го бара после доджа).
Сигнал на продажу:
-когда выполнилось условие цена закрытия 1го бара после доджа (Close[1]), нижу его минимума. Продаем сразу, как только Ask<Low[1] (цена нижу минимума, 1го бара после доджа).
Проблема в том, что:
-сигнал на покупку бывает срабатывает когда цена Ask не пробила максимум бара High[1], а равна ей или на 1-2 пункта нижу.
-сигнал на продажу бывает срабатывает когда цена Ask не пробила минимум бара Low[1], а равна ей или на 1-2 пункта выше.
ПОМОГИТЕ ПОЖАЛУЙСТА. На форуме не нашел похожих тем.