Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 10.09.20
noSkill06s noSkill06s ist offline
Mitglied
 
Registriert seit: Aug 2020
Beiträge: 36
noSkill06s befindet sich auf einem aufstrebenden Ast
Standard 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); 
} 
//+------------------------------------------------------------------+
Angehängte Dateien
Dateityp: mq4 bollinger_bicolor.mq4 (3,2 KB, 1x aufgerufen)