ich bin wieder mal dabei, etwas rumzubasteln. Die Idee ist folgende: der Indikator soll mir innerhalb eines bestimmten Rahmens anzeigen, wie viele der letzten bspw. 10 Kerzen grün und wie viele rot waren. Dazu soll er noch die durchschnittlichen Punkte berechnen. Ich habe nun schon ein wenig rumprobiert, aber er macht noch nicht das, was er soll. Die Berechnungen scheinen nicht zu stimmen und gemalt wird auch nicht. Wenn jemand also auf Anhieb schon einen groben Fehler findet, freue ich mich über einen kleinen Hinweis.
Ich vermute mal, dass es auch mit den Buffern zusammenhängt.
Hallo Leute,
ich bin wieder mal dabei, etwas rumzubasteln. Die Idee ist folgende: der Indikator soll mir innerhalb eines bestimmten Rahmens anzeigen, wie viele der letzten bspw. 10 Kerzen grün und wie viele rot waren. Dazu soll er noch die durchschnittlichen Punkte berechnen. Ich habe nun schon ein wenig rumprobiert, aber er macht noch nicht das, was er soll. Die Berechnungen scheinen nicht zu stimmen und gemalt wird auch nicht. Wenn jemand also auf Anhieb schon einen groben Fehler findet, freue ich mich über einen kleinen Hinweis.
Ich vermute mal, dass es auch mit den Buffern zusammenhängt.
//+----------------------------------------------------+ //| CandleCounter.mq4 | //+----------------------------------------------------+ #property copyright "conglom-o" #property indicator_separate_window #property indicator_buffers 4 #property indicator_minimum -10 #property indicator_maximum 10 extern int Candles = 10; //---- buffers int GreenCandles, RedCandles; double GreenAvg, RedAvg; double GreenSum, RedSum; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(4); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,EMPTY,Green); SetIndexBuffer(0,GreenCandles); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,EMPTY,Red); SetIndexBuffer(1,RedCandles); SetIndexStyle(2,DRAW_LINE,STYLE_DOT,EMPTY,Green); SetIndexBuffer(2,GreenAvg); SetIndexStyle(3,DRAW_LINE,STYLE_DOT,EMPTY,Red); SetIndexBuffer(3,RedAvg); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int start() { if(IndicatorCounted() < 1) { Print(Bars," Bars to be backfilled "); int bar_index=0; for(bar_index=1;bar_index < Bars;bar_index++) { CountCandles(Bars-bar_index); } } CountCandles(0); return(0); } //+------------------------------------------------------------------+ int CountCandles(int bar_index) { GreenCandles = 0; RedCandles = 0; GreenSum = 0; RedSum = 0; for (int i=0;i<Candles;i++) { if (Open[bar_index+i] < Close[bar_index+i]) { GreenCandles++; GreenSum = GreenSum - (Open[bar_index+i] - Close[bar_index+i]); if (GreenCandles>0) GreenAvg = GreenSum / GreenCandles; } if (Open[bar_index+i] > Close[bar_index+i]) { RedCandles++; RedSum = RedSum + (Open[bar_index+i] - Close[bar_index+i]); if (RedCandles>0) RedAvg = RedSum / RedCandles; } //zum Testen Print(GreenCandles + " " + RedCandles); Print (Open[bar_index+i] + " " + Close[bar_index+i]); Print(GreenSum + " " + RedSum); } }Bearbeitet von ronner
Code in mql-Tags umgewandelt