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);
}
//+------------------------------------------------------------------+