Анализируя возможности автоматицации торговли на пробой-отскок
от от уровней, я для себя написал индикатор, аналогичный Вашему.
В основном они совпадают, только у меня при пробое ценой текущего
уровня более 10 пунктов, индикатор показывает следующий уровень
выше (ниже) текущей цены, как возможную следующюю цель.
//+------------------------------------------------------------------+ //| FractUppLow.mq4 | //| Valmars | //| valmars@bk.ru | //+------------------------------------------------------------------+ #property copyright "Valmars" #property link "valmars@bk.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 MediumBlue //---- input parameters //---- buffers double FractUppBuffer[]; double FractLowBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(2); SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2); SetIndexBuffer(0, FractUppBuffer); SetIndexDrawBegin(0, 100); SetIndexEmptyValue(0, 0.0); SetIndexLabel(0, "FrUpp"); SetIndexStyle(1, DRAW_LINE,STYLE_SOLID, 2); SetIndexBuffer(1, FractLowBuffer); SetIndexDrawBegin(1, 100); SetIndexEmptyValue(1, 0.0); SetIndexLabel(1, "FrLow"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars = Bars - IndicatorCounted() - 1; // Расчёт для i-го бара, пока все бары не расчитаем. for(int i = counted_bars; i > 0; i--) // Расчёт фрактала для i-го бара. { int j = i; int count = Bars - j - 1; // FractUpp присваиваем 0. double FractUpp = 0; // Хай расчётного бара,Начинаем искать фрактал левее i-го бара. double H=iHigh(NULL, 0, i); while(FractUpp < H) { count--; if(count <= 0) // Фрактал не наден(цена выше иторического max графика) break; // Продолжаем искать следующий фрактал, пока не найдём тот, // который выше хая расчётного бара FractUpp = NormalizeDouble(iFractals(NULL, 0, MODE_UPPER, j), Digits); j++; } j = i; count = Bars - j - 1; // FractLow присваиваем 0. double FractLow = 0; // Лоу расчётного бара,Начинаем искать фрактал левее i-го бара. double L = iLow(NULL, 0, i); // Продолжаем искать следующий фрактал, пока не найдём тот, который // ниже лоу расчётного бара while(FractLow > L || FractLow == 0) { count--; if(count <= 0) //Фрактал не наден ((цена ниже исторического min графика) break; FractLow = NormalizeDouble(iFractals(NULL, 0, MODE_LOWER, j), Digits); j++; } //Закрытие цикла while, фрактал найден //Только ,если найденный фрактал не ближе 10 пунктов от предыдущего if(MathAbs(FractUpp - FractUppBuffer[i+1]) > 10*Point) FractUppBuffer[i] = FractUpp; else //Присваиваем индикатору значение найденного фрактала, FractUppBuffer[i] = FractUppBuffer[i+1]; if(MathAbs(FractLow - FractLowBuffer[i+1]) > 10*Point) FractLowBuffer[i] = FractLow; else FractLowBuffer[i] = FractLowBuffer[i+1]; } //Закрытие цикла for return(0); } //Расчёт закончен,выходим //+------------------------------------------------------------------+
Вот картинка для обоих индикаторов, мой показан красным-синим, Ваш, для отличия жёлтым-голубым.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Fractal Channel:
Author: Collector