Владимир, добрый вечер!
Народ очень прекрасно окрашивает бары во все цвета. Я сам не программист, но понимаю о чем речь.
Посмотрите скрин. Прилагаю код, может быть возьмете из него блок окраски и пришьете к своему индикатору, тогда будет совсем как у Элдера.
//+------------------------------------------------------------------+ //| CTG_Map.mq4 | //| CompanyName "CTG" | //| http://chaostradinggroup.com | //+------------------------------------------------------------------+ #property copyright "CTG" #property link "http://chaostradinggroup.com" #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Green #property indicator_color2 CLR_NONE #property indicator_color3 LimeGreen #property indicator_color4 CLR_NONE #property indicator_color5 Red #property indicator_color6 CLR_NONE #property indicator_color7 Pink #property indicator_color8 CLR_NONE //---- indicator parameters extern int MA_Period=8; extern int MA_Shift=0; extern int MA_Method=0; extern double k1=1.5; //---- indicator buffers double ExtMapBuffer[]; double ExtGistBuffer[]; double ExtRistBuffer[]; double ExtBullBuffer[]; double ExtBearBuffer[]; double ExtZedBuffer[]; double ExtGist1Buffer[]; double ExtRist1Buffer[]; double b,b1; //---- int ExtCountedBars=0,limit,s0,s1,r,s2,s3,s4; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int draw_begin; string short_name; //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY, 2,Green); SetIndexEmptyValue(0,0.0); SetIndexShift(0,MA_Shift); SetIndexStyle(1,DRAW_NONE); SetIndexEmptyValue(1,0.0); SetIndexShift(1,MA_Shift); SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY, 2,LimeGreen ); SetIndexEmptyValue(2,0.0); SetIndexShift(2,MA_Shift); SetIndexStyle(3,DRAW_NONE); SetIndexEmptyValue(3,0.0); SetIndexShift(3,MA_Shift); SetIndexStyle(4,DRAW_HISTOGRAM,EMPTY, 2,Red); SetIndexEmptyValue(4,0.0); SetIndexShift(4,MA_Shift); SetIndexStyle(5,DRAW_NONE); SetIndexEmptyValue(5,0.0); SetIndexShift(5,MA_Shift); SetIndexStyle(6,DRAW_HISTOGRAM,EMPTY, 2,Pink ); SetIndexEmptyValue(6,0.0); SetIndexShift(6,MA_Shift); SetIndexStyle(7,DRAW_NONE); SetIndexEmptyValue(7,0.0); SetIndexShift(7,MA_Shift); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); if(MA_Period<2) MA_Period=2; draw_begin=MA_Period-1; //---- indicator short name short_name="CTG-Map("; IndicatorShortName(short_name+MA_Period+")"); SetIndexDrawBegin(0,draw_begin); //---- indicator buffers mapping SetIndexBuffer(0,ExtGistBuffer); SetIndexBuffer(1,ExtRistBuffer); SetIndexBuffer(2,ExtGist1Buffer); SetIndexBuffer(3,ExtRist1Buffer); SetIndexBuffer(4,ExtBearBuffer); SetIndexBuffer(5,ExtZedBuffer); SetIndexBuffer(6,ExtBullBuffer); SetIndexBuffer(7,ExtMapBuffer); //---- index labels SetIndexLabel(0,"Green zone"); SetIndexLabel(1,NULL); SetIndexLabel(2,"Green zone light"); SetIndexLabel(3,NULL); SetIndexLabel(4,"Red zone"); SetIndexLabel(5,NULL); SetIndexLabel(6,"Red zone light"); SetIndexLabel(7,NULL); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { if(Bars<=MA_Period) return(0); ExtCountedBars=IndicatorCounted()-1; //---- check for possible errors // if (ExtCountedBars<0) return(-1); //---- last counted bar will be recounted if (ExtCountedBars>1) ExtCountedBars--; // else ExtCountedBars=0; //---- limit=Bars-ExtCountedBars; for(s1=0; s1<=limit; s1++) { if (s1==0) { ExtGistBuffer[s1]=0; ExtRistBuffer[s1]=0; ExtGist1Buffer[s1]=0; ExtRist1Buffer[s1]=0; ExtBearBuffer[s1]=0; ExtZedBuffer[s1]=0; ExtBullBuffer[s1]=0; ExtMapBuffer[s1]=0; } if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,5,s1)!=0) { ExtGistBuffer[s1]=High[s1]; ExtRistBuffer[s1]=Low[s1]; } if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,1,s1)!=0) { ExtGist1Buffer[s1]=High[s1]; ExtRist1Buffer[s1]=Low[s1]; } if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,2,s1)!=0) { ExtBearBuffer[s1]=High[s1]; ExtZedBuffer[s1]=Low[s1]; } if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,0,s1)!=0) { ExtBullBuffer[s1]=High[s1]; ExtMapBuffer[s1]=Low[s1]; } } return(0); }
И еще вот такой вариант есть...
//+------------------------------------------------------------------+ //| Zone_Trading.mq4 | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Green #property indicator_color2 Red #property indicator_color3 LightGray #property indicator_color4 LightGray //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; #define SkippedBars 39 //=34+5 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- SetIndexStyle(0,DRAW_HISTOGRAM, STYLE_SOLID); SetIndexBuffer(0,Buffer1); SetIndexLabel(0,NULL); //---- SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexBuffer(1,Buffer2); SetIndexLabel(1,NULL); //---- SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexBuffer(2,Buffer3); SetIndexLabel(2,NULL); //---- SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexBuffer(3,Buffer4); SetIndexLabel(3,NULL); //---- return(0); } //+------------------------------------------------------------------+ //| Zone Trading | //+------------------------------------------------------------------+ int start() { int i; int counted_bars=IndicatorCounted(); //---- if(Bars<=SkippedBars) return(0); //---- i=Bars-SkippedBars-1; if(counted_bars>SkippedBars-1) i=Bars-counted_bars-1; while(i>=0) { // Green if ((iAO(Symbol(), Period(), i)>iAO(Symbol(), Period(), i+1))&&(iAC(Symbol(), Period(), i)>iAC(Symbol(), Period(), i+1))) { Buffer1[i]=High[i]; Buffer2[i]=Low[i]; Buffer3[i]=Low[i]; Buffer4[i]=Low[i]; i--; continue; } // Red if ((iAO(Symbol(), Period(), i)<iAO(Symbol(), Period(), i+1))&&(iAC(Symbol(), Period(), i)<iAC(Symbol(), Period(), i+1))) { Buffer1[i]=Low[i]; Buffer2[i]=High[i]; Buffer3[i]=Low[i]; Buffer4[i]=Low[i]; i--; continue; } // Gray Buffer1[i]=Low[i]; Buffer2[i]=Low[i]; Buffer3[i]=High[i]; Buffer4[i]=Low[i]; i--; } //---- return(0); } //+------------------------------------------------------------------+
И еще вот такой вариант есть...
Это как раз то что я имел ввиду когда говорил что не окрашивает :)
Первый вариант на вид более удачный но и в нем тоже используются цены High и Low вместо Open и Close
Насколько я понимаю, бар окрашивается в интервале между H и L, причем тут С и О? Отметки С и О есть на каждом баре, все прекрасно видно.
Расчет по зонам в Zone_Trading.mq4 осуществляется внутри кода индикаторов АО и АС, а там установлены Median Price. В чем проблема, не понятно.
Если можете, объясните, хотя если невозможно окрасить бары в вашем варианте индикатора, то разговор бесполезный :)
В том виде, в котором есть сейчас можно использовать - это главное. Хотя хочется как всегда удобства, полного сервиса :)
Roman. опубликовал свою версию того же индикатора, есть разница в показаниях, хотя рассчитываются те же величины теми же методами.
Ну и у вас понагляднее будет. Спасибо!
Еще один пример окраски баров
//+------------------------------------------------------------------+ //| prusax_v2.mq4 | //| 2008 modified by zIG | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 White #property indicator_color2 White #property indicator_color3 Red #property indicator_color4 Red #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 #property indicator_width4 2 //---- buffers double BufferUP[]; double BufferDN[]; double BufferUP1[]; double BufferDN1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line IndicatorBuffers(4); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,BufferUP); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,BufferUP1); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,BufferDN); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(3,BufferDN1); SetIndexDrawBegin(0,10); SetIndexDrawBegin(1,10); SetIndexDrawBegin(2,10); SetIndexDrawBegin(3,10); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,counted_bars=IndicatorCounted(); for(i=Bars-counted_bars-1;i>=0;i--) {double AO=iAO(NULL,0,i); if(AO>0) { BufferUP[i] =Close[i]; BufferUP1[i] =Open[i]; BufferDN[i] =0.0; BufferDN1[i] =0.0; } if(AO<0) { BufferUP[i] =0.0; BufferUP1[i] =0.0; BufferDN[i] =Open[i]; BufferDN1[i] =Close[i]; } } //---- return(0); } //+------------------------------------------------------------------+
Насколько я понимаю, бар окрашивается в интервале между H и L, причем тут С и О? Отметки С и О есть на каждом баре, все прекрасно видно.
Расчет по зонам в Zone_Trading.mq4 осуществляется внутри кода индикаторов АО и АС, а там установлены Median Price. В чем проблема, не понятно.
Если можете, объясните, хотя если невозможно окрасить бары в вашем варианте индикатора, то разговор бесполезный :)
В том виде, в котором есть сейчас можно использовать - это главное. Хотя хочется как всегда удобства, полного сервиса :)
То что можно было сделать сделали до меня. Нужно ждать нового терминала и mql5, может там это дефолтом будет и не нужны будут эти извращения!
А вот почему важна именно цена закрытия
А индикатор делал для себя т.к в терминале нет ни линий с гистограммой ни возможности применить импульсную систему, поэтому совместил и поделился
Все равно не понял про цену закрытия, поясните. Если уж я пойму, то все остальные точно, вопрос закроем. Спасибо.
Добрый день Владимир,
с помощю macd histogram wis я на протажении одного месяца поднял тренеровочный аккаунт с 10000 до 116000. Использовал дневной и недеьный тайммфреймы. Теперь занимаюсь накопленикем средсв для реальной торговли. Индикатор очень хороший для несуетливых и для тех кто может постоянно следеть за ним. Благодарю. Есть просьба – дайте пожалуйста фрагмент кода чтобы добавит к индикатору звуковой сигнал при изменении цвета последнего бара по сравнению с предедущим. Спасибо за вашее время.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
MACD Histogram WIS:
MACD lines and histogram for the Impulse trading system.
Author: Vladimir Gospodinov