|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Repainting Indikator am Code erkennen
Hallo Leute,
immer wieder prüfe ich Indikatoren über den Strategytester ob sie repainten oder nicht, mich interessiert es sehr stark wie ich diesen Sachverhalt am Code erkennen kann. Ich habe hier einen Indikator hier angehängt der ebenfalls repaintet, bei vielen ist es z.B. sehr einfach (nicht wirklich da erkennt man das am "shift+1" (nicht sicher jedenfalls dannach haben andere indis z.B. nicht repaintet) der hier ist aber einer ganz anderen Natur bzw. denke ich das die Lösung im Array steckt "EMPTY". Könnt ihr mir vielleicht helfen wo das repainten bei diesem Indikator implementiert wird? und wie man es eventuell z.B. korrigieren könnte? (die Ergebnisse und Qualität des Indikators spielt keine rolle es geht mir mehr um das lernen) hier der Code Code:
#property indicator_chart_window #property indicator_buffers 5 #property indicator_color1 Red #property indicator_color2 Green #property indicator_color3 LightSeaGreen #property indicator_color4 Red #property indicator_color5 Green //---- indicator parameters extern int Periode = 20; extern int Decal_Band = 0; extern double EType_Band = 2.0; //---- buffers double MovingBuffer[]; double UpperBuffer[]; double LowerBuffer[]; double UpperBGreen[] ; double UpperBRed[] ; double LowerBGreen[] ; double LowerBRed[] ; double EType[] ; //+------------------------------------------------------------------+ //| initialisation | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(8); SetIndexStyle(0,DRAW_LINE,0,2); SetIndexBuffer(0,UpperBRed); SetIndexStyle(1,DRAW_LINE,0,2); SetIndexBuffer(1,UpperBGreen); SetIndexStyle(2,DRAW_LINE,0,1); SetIndexBuffer(2,MovingBuffer); SetIndexStyle(3,DRAW_LINE,0,2); SetIndexBuffer(3,LowerBRed); SetIndexStyle(4,DRAW_LINE,0,2); SetIndexBuffer(4,LowerBGreen); SetIndexStyle(5,DRAW_NONE); SetIndexBuffer(5,UpperBuffer); SetIndexStyle(6,DRAW_NONE); SetIndexBuffer(6,LowerBuffer); SetIndexStyle(7,DRAW_NONE); SetIndexBuffer(7,EType); //---- return(0); } //+------------------------------------------------------------------+ //| Bollinger Bands | //+------------------------------------------------------------------+ int start() { int index ; int limit=Bars-Periode; for(index=limit-2 ; index>=0 ; index--) { MovingBuffer[index]=iMA(NULL,0,Periode,Decal_Band,MODE_SMA,PRICE_CLOSE,index); EType[index] = iStdDev(NULL,0,Periode,Decal_Band,MODE_SMA,PRICE_CLOSE,index); UpperBuffer[index] = MovingBuffer[index] + EType[index] * EType_Band ; LowerBuffer[index] = MovingBuffer[index] - EType[index] * EType_Band ; UpperBGreen[index] = UpperBuffer[index] ; UpperBRed[index] = UpperBuffer[index] ; LowerBGreen[index] = LowerBuffer[index] ; LowerBRed[index] = LowerBuffer[index] ; if ((UpperBuffer[index] > UpperBuffer[index+1])&&(UpperBuffer[index+1] > UpperBuffer[index+2])) UpperBRed[index+1] = EMPTY_VALUE ; else if((UpperBuffer[index] < UpperBuffer[index+1])&&(UpperBuffer[index+1] < UpperBuffer[index+2])) UpperBGreen[index+1] = EMPTY_VALUE ; if ((LowerBuffer[index] > LowerBuffer[index+1])&&(LowerBuffer[index+1] > LowerBuffer[index+2])) LowerBRed[index+1] = EMPTY_VALUE ; else if ((LowerBuffer[index] < LowerBuffer[index+1])&&(LowerBuffer[index+1] < LowerBuffer[index+2]))LowerBGreen[index+1] = EMPTY_VALUE ; } //---- return(0); } //+------------------------------------------------------------------+ |
|
|||
Zitat:
Das ist kein Repainter. Repainting heißt, daß nachträglich bereits abgeschlossene Werte verändert werden. Das macht der hier nicht, er ändert nur die Werte der laufenden Kerze und das ist ok, denn die Kerze ist noch nicht abgeschlossen. AVT |
|
|||
Zitat:
int limit = Bars-Periode (Periode wurde mit 20 deklariert und initialisiert) Bars = 999 (1000-1) - 20 = 979 das sind die Bars die ja "Backwards" angezeigt werden? der Schleifenkopf (Initialisierungsausdruck) wird mit index =limit-2 deklariert das heißt doch jetzt das, dass Signal bzw. die Werte des Indikators nur für den bar[2] fest sind und bar[1] und bar[0] noch variabel :/ ich habe ihn auch beobachtet und bei mir kann auch sein das ich mich verguckt habe hat er repaintet. |
Lesezeichen |
Stichworte |
coden, indikator, programmieren |
|
|