Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 28.06.16
Minge67 Minge67 ist offline
Neues Mitglied
 
Registriert seit: Oct 2014
Beiträge: 5
Minge67 befindet sich auf einem aufstrebenden Ast
Standard Hintergrund einfärben

Hallo zusammen,

ich bin schion ne Weile auf der Suche nach einem Indikator der nach den Bedingungen unten den Hintergrund einfärbt.
Nun habe ich das folgende gefunden, in den Metaeditor gehauen und probiert.
Das ganze funktioniert schon ganz gut, allerdings folgende Probleme.
-- alles was man einzeichnet, trendlinien, Rechtecke, etc verschwinden beim Wechsel zwischen den Timeframes
-- er läuft unzuverlässig, bleibt manchmal für 3 oder 4 Kerzen hängen, und ist wieder nach Wechsel des Timeframes da
-- er ist im Vordergrund und übermalt alles

Hier der Code, vielleicht kann ihn jemand verbessern

#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red

double UpBar[];
double DownBar[];

int init()
{
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexBuffer(0,UpBar);
SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
SetIndexBuffer(1,DownBar);
SetIndexEmptyValue(1,0.0);
return(0);
}

int deinit()
{
ObjectsDeleteAll();
return(0);
}

int start()
{
int counted_bars=IndicatorCounted();
int i = Bars - counted_bars - 1;

double sma200, ema10, ema30, ema50, ema10_1, ema30_1, ema50_1;
while(i>=0)
{
sma200 = iMA(Symbol(), Period(), 200, 0, MODE_SMA, PRICE_CLOSE, i);
ema10 = iMA(Symbol(), Period(), 10, 0, MODE_EMA, PRICE_CLOSE, i);
ema30 = iMA(Symbol(), Period(), 30, 0, MODE_EMA, PRICE_CLOSE, i);
ema50 = iMA(Symbol(), Period(), 50, 0, MODE_EMA, PRICE_CLOSE, i);
ema10_1 = iMA(Symbol(), Period(), 10, 0, MODE_EMA, PRICE_CLOSE, i+1);
ema30_1 = iMA(Symbol(), Period(), 30, 0, MODE_EMA, PRICE_CLOSE, i+1);
ema50_1 = iMA(Symbol(), Period(), 50, 0, MODE_EMA, PRICE_CLOSE, i+1);
//Prüfen ob Long
if(Close[i] > sma200 && ema10 > ema30 && ema30 > ema50 &&
ema10 > ema10_1 && ema30 > ema30_1 && ema50 > ema50_1)
{
//Hintergrund grün einfärben
drawBGline(i+"bgup", Time[i], C'200, 255, 150');
//Prüfe ob ReversalBar vorhanden
if(Low[i+2] > Low[i+1] && Close[i+1] > Open[i+1] && High[i] > High[i+1])
{
//ReversalBar
UpBar[i]=Low[i]-40*Point;
}
}
//Prüfen ob Short
if(Close[i] < sma200 && ema10 < ema30 && ema30 < ema50 &&
ema10 < ema10_1 && ema30 < ema30_1 && ema50 < ema50_1)
{
//Hintergrund rot einfärben
drawBGline(i+"bgdown", Time[i], C'255, 200, 150');
//Prüfe ob ReversalBar vorhanden
if(High[i+2] < High[i+1] && Close[i+1] < Open[i+1] && Low[i] < Low[i+1])
{
//ReversalBar
DownBar[i]=High[i]+40*Point;
}
}
i--;
}
return(0);
}

void drawBGline(string name, datetime bar, color colur)
{
ObjectCreate(name, OBJ_VLINE, 0, bar, 0);
ObjectSet(name, OBJPROP_BACK, true);
ObjectSet(name, OBJPROP_COLOR, colur);
ObjectSet(name, OBJPROP_WIDTH, 8);
}