Am meisten Sinn macht es wenn du:
Hier deutsch sprichtst
Eine richtige Frage stellen kannst
Nützliche Infos dazu packen könntest.
Am meisten Sinn macht es wenn du:
Hier deutsch sprichtst
Eine richtige Frage stellen kannst
Nützliche Infos dazu packen könntest.
Geh doch nicht so hart mit 'Nibelungen' ins Gericht, das ist doch die Fehlermeldung der en-Version vom Compiler.
Der Indi ist sowieso alter Schrott der vom MT4 auf MT5 umgschustert wurde. iBarShift() rauskommentiert und schon ist zumindest der Fehler weg.
Aber was da in OnCalculate() herumgebuffert wird ist ja grauenhaft, wo doch o,h,l,c so wie so geliefert werden.
Ich schau mir den noch genauer an.
myPoint wird definiert und nirgendwo verwendet. Den Schmarrn mit:
myPoint=Point(); if(Digits()==5 || Digits()==3) { myPoint*=10; }
brauch man auch nur wenn man die überholungsbedürftigen Systembibliotheken des Wizards benutzt.
Geh doch nicht so hart mit 'Nibelungen' ins Gericht
Hier herrscht Zucht und Ordnung ! :-)
...das war doch butterweich mit vorweihnachtlichem Charme ..fand ich zu mindest
Hier herrscht Zucht und Ordnung ! :-)
...das war doch butterweich mit vorweihnachtlichem Charme ..fand ich zu mindest
Ich habe mir diesen Indi hergenommen und neu programmiert.
Zusammendestilliert von 286 wirren Zeilen auf nur 151 übersichtliche Zeilen, und kann auch mehr.
Jetzt ist er ein sehr einfacher Indikator, der in Verbindung mit zB einem EMA 50 (die Buy/Sell Line von Steven Primo) und geeignetem Ausstieg durchaus potenzial hat.
//+------------------------------------------------------------------+ //| Reversal_V2.0.mq5 | //| Copyright © 2019, Ing. Otto Pauser | //| https://www.mql5.com/de/users/kronenchakra | //| found on https://www.mql5.com/de/code/19605 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2019, Ing. Otto Pauser" #property link "https://www.mql5.com/de/users/kronenchakra" #property version "2.00" #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //+------------------------------------------------------------------+ //| input parameters | //+------------------------------------------------------------------+ input int inp_PeriodBack = 10; // Periods lookback input int inp_ArrowCodeDN = 242; // ArrowCode sell input int inp_ArrowCodeUP = 241; // ArrowCode buy input color inp_ArrowColorDN = clrRed; // ArrowColor sell input color inp_ArrowColorUP = clrLime; // ArrowColor buy input int inp_ArrowSize = 3; // ArrowSize input int inp_ArrowOffs = 30; // ArrowOffset input bool inp_DrawRange = true; // Draw the checked range input bool inp_SendMail = false; // Send mail on signal //+------------------------------------------------------------------+ //| indicator buffers | //+------------------------------------------------------------------+ double buDN[]; // buffer Arrows down double buUP[]; // buffer Arrows up //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { InitArrows(buDN,inp_ArrowCodeDN,inp_ArrowColorDN,inp_ArrowSize,-inp_ArrowOffs,"Sell"); InitArrows(buUP,inp_ArrowCodeUP,inp_ArrowColorUP,inp_ArrowSize,+inp_ArrowOffs,"Buy" ); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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[]) { ArraySetAsSeries(high ,true); ArraySetAsSeries(close,true); ArraySetAsSeries(open ,true); ArraySetAsSeries(low ,true); ArraySetAsSeries(time ,true); int limit=(prev_calculated==0)?0:rates_total-prev_calculated-1; for(int i=limit; i>=0; i--) { buDN[i]=NULL; buUP[i]=NULL; if(i>=MathMin(5000-1,rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation //Arrows down if(high[1+i]==HH(high,inp_PeriodBack)) //Candlestick High is equal to Resistance if(close[1+i]<open[1+i]) //Candlestick Close < Candlestick Open (bearish bar) { buDN[i]=high[i]; //Set indicator value at Candlestick High if(i==1) myAlert(time[1],"Sell"); //Alert on next bar open } //Arrows up if(low[1+i]==LL(low,inp_PeriodBack)) //Candlestick Low is equal to Support if(close[1+i]>open[1+i]) //Candlestick Close > Candlestick Open (bullish bar) { buUP[i]=low[i]; //Set indicator value at Candlestick Low if(i==1) myAlert(time[1],"Buy"); //Alert on next bar open } } if(inp_DrawRange) DrawRange("Range",time[inp_PeriodBack],HH(high,inp_PeriodBack),time[0],LL(low,inp_PeriodBack)); return(rates_total); } //+------------------------------------------------------------------+ void myAlert(datetime aTime, string aMsg) // Alert function { static datetime lastTime=NULL; if(aTime!=lastTime) { aMsg="Reversal_V2.9 @ "+_Symbol+","+PeriodShortStr(_Period)+" -> "+aMsg; Print(aMsg); if(inp_SendMail) SendMail("Reversal_V2.9", aMsg); lastTime=aTime; } } string PeriodShortStr(ENUM_TIMEFRAMES _tf) // cutts of leading 'PERIOD_' / returns 'M1', 'M10', .... { return(StringSubstr(EnumToString(_tf),7)); } //+------------------------------------------------------------------+ double HH(const double &aBuffer[], int aPeriBack) // highest high of a period backwards { return(aBuffer[ArrayMaximum(aBuffer,0,aPeriBack)]); } double LL(const double &aBuffer[], int aPeriBack) // lowest low of a period backwards { return(aBuffer[ArrayMinimum(aBuffer,0,aPeriBack)]); } void DrawRange(string aName, datetime aBegin, double aHigh, datetime aEnd, double aLow) { if(ObjectFind (0,aName)==0) ObjectDelete (0,aName); ObjectCreate (0,aName,OBJ_RECTANGLE,0,aBegin,aHigh,aEnd,aLow); ObjectSetInteger(0,aName,OBJPROP_STYLE,STYLE_DASHDOT); } //+------------------------------------------------------------------+ //| init indicatorbuffer with arrows | //+------------------------------------------------------------------+ void InitArrows(double &aBuffer[], int aArrowCode, color aArrowColor, int aArrowSize, int aArrowOffs, string aPlotLabel) { static int idx=0; SetIndexBuffer(idx,aBuffer,INDICATOR_DATA); PlotIndexSetInteger(idx,PLOT_DRAW_TYPE ,DRAW_ARROW); PlotIndexSetInteger(idx,PLOT_ARROW ,aArrowCode); PlotIndexSetInteger(idx,PLOT_LINE_COLOR ,aArrowColor); PlotIndexSetInteger(idx,PLOT_LINE_WIDTH ,aArrowSize); PlotIndexSetInteger(idx,PLOT_ARROW_SHIFT,aArrowOffs); PlotIndexSetString (idx,PLOT_LABEL ,aPlotLabel); PlotIndexSetDouble (idx,PLOT_EMPTY_VALUE,NULL); ArrayInitialize (aBuffer,NULL); ArraySetAsSeries (aBuffer,true); idx++; }
Dieser Indikator ist ein guter Kandidat für meine Homepage, die Anfang nächsten Jahres online gestellt wird.
Ich habe mir diesen Indi hergenommen und neu programmiert.
Zusammendestilliert von 286 wirren Zeilen auf nur 151 übersichtliche Zeilen, und kann auch mehr.
Jetzt ist er ein sehr einfacher Indikator, der in Verbindung mit zB einem EMA 50 (die Buy/Sell Line von Steven Primo) und geeignetem Ausstieg durchaus potenzial hat.
Dieser Indikator ist ein guter Kandidat für meine Homepage, die Anfang nächsten Jahres online gestellt wird.
Super nett von Dir! Habe's gleich ausprobiert und es funktioniert tadellos. Vielen Dank!
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Reversal:
Der Indikator zeigt die Eröffnungssignale der Positionen auf der Grundlage des Handelssystems "Reversal" des Autors an.
Autor: Sergey Vradiy