Добрый день , взялся представить в виде линии график крестики нолики , с разворотом "points" , то есть отображение будет в виде линии (на каги похоже) , а принцип разворота тот же что и в крестах нолях.
рисует какую то фигню , но не то что нужно , уже второй день сижу , не могу найти ошибку , раз десять все уже переделывал....
мой первый индикатор ... , укажите пожалуйста на косяк ,Спасибо
во первых код стоит разбавить коментами - что на каком шаге и из чего вы там хотели получить. Отступы какие-нить, чтобы код читать и не поминать автора крепким словом. Вам же наверное неприятно всё-время икать...
Вставить код через кнопку SRC - пожелание из области фантастики (кстати, г-да веб-"мастера", вы когда сделаете подсветку и оформление кода не через зад ?)
Ну и конечно стоит поместить скриншот той фигни которая вышла..
иначе разгадывать ребус - совсем лень, причём не только мне но и очень многим..это надо понять задачу (её по традиции пишут в шапке кода), взять ваш код, затащить к себе, оформить и заодно разобрать найдя ошибки
Комменты добавил внутрь файла
ещё скриншот того что получилось и рисунок того, что должно было по задумке быть (прямо в терминале MT его примитивами)
Добрый день
должно быть вот так , как в КАГИ , взял чужой рисунок
А выходит вот так вот , и не на всех таймфреймах еще
обратите внимание, что вниз вы считаете почти правильно. А вот вверх - вообще никак :-) То есть результат расчёта вверх kup[] вы просто перезаписываете следующим за ним блоком kdown[].
у вас там либо "else" между ними нехватает, либо надо передумывать всю логику
PS. Ровные вертикальные отрезки через индикаторный буфер LINE или SECTION не сделать.
Максим спасибо ,Вы мне очень помогли , я еще раз все проверю , озадачили Вы меня своим "почти правильно" , про подсчеты .
Я вставил else , по Вашей рекомендации , но зачем я это сделал , я не понял !!! тк по моей логике , я понимаю этот язык что выражение выполняется при исполнении условия , а у меня стоит оператор if , причем на каждое условие , то есть почему подсчет вниз забивал подсчет наверх я не догоняю , тк одновременно условия НЕ ИСПОЛНЯЛИСЬ , наверное нужно еще что то мне изучить ...
В любом случае кресты на нолях получились цифровыми , кому нужно можно пользоваться .
Еще раз Спасибо !
//+------------------------------------------------------------------+ //| SWING_LINE.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_buffers 5 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Swing_Line" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input double points=0.0050; input double begin_price_level=1.1250; //--- indicator buffers double Swing_LineBuffer[] , delta_up [] ,delta_down[] ,kup [] ,kdown [] ; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Swing_LineBuffer,INDICATOR_DATA); SetIndexBuffer(1,kup,INDICATOR_CALCULATIONS); SetIndexBuffer(2,kdown,INDICATOR_CALCULATIONS); SetIndexBuffer(3,delta_up,INDICATOR_CALCULATIONS); SetIndexBuffer(4,delta_down,INDICATOR_CALCULATIONS); PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID); //--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int bar ; // начальный уровень цены от которой идет отсчет , уровень на нулевом баре Swing_LineBuffer [0] = begin_price_level ; //поехали считать слева направо for(bar = 1; bar < rates_total; bar++) //Высчитаем сколько на баре цена ушла вверх от заданного уровня предидущего бара {delta_up[bar] = high[bar]- Swing_LineBuffer [bar -1]; //найдем кратность прохода цены поинтам заданным , если цена не прошла кратно одному блоку размером в points то сбросится переменная до ноля kup[bar] = floor(delta_up[bar] / points); //Высчитаем сколько на баре цена ушла вниз от заданного уровня предидущего бара delta_down[bar] = Swing_LineBuffer [bar -1]-low[bar]; //найдем кратность прохода цены поинтам заданным , если цена не прошла кратно одному блоку размером в points то сбросится до ноля kdown[bar] =floor(delta_down[bar] / points) ; // если есть движение вверх кратное одному блоку points тогда , рисуем новый уровень индикатора наверх if (kup[bar] >=1) Swing_LineBuffer[bar] = Swing_LineBuffer[bar-1] + (kup[bar]*points) ; // нет движения кратного блоку points тогда индикатор на прежнем уровне //если есть движение вниз кратное одному блоку points тогда , рисуем новый уровень индикатора вниз else if (kdown[bar] >=1) Swing_LineBuffer [bar] = Swing_LineBuffer[bar-1] - (kdown[bar]*points) ; // нет движения кратного блоку points тогда индикатор на прежнем уровне else Swing_LineBuffer[bar] = Swing_LineBuffer[bar-1] ; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день , взялся представить в виде линии график крестики нолики , с разворотом "points" , то есть отображение будет в виде линии (на каги похоже) , а принцип разворота тот же что и в крестах нолях.
рисует какую то фигню , но не то что нужно , уже второй день сижу , не могу найти ошибку , раз десять все уже переделывал....
мой первый индикатор ... , укажите пожалуйста на косяк ,Спасибо
Компилятор ошибок не выдает