Zitat:
Zitat von Angel
... "Verbinde Close[85] mit Close[84]" mit einer folgenden Linie : Farbe = Rot, Dicke = x, Linienart=y usw. Das macht das Ganze unheimlich schwer. Stattdessen muss man X- (Zeit) und Y-(Preis) Koordinaten kennen und die muss man erst mühsam ausrechnen, und zwar über Sekunden seit 01.01.1970 (?) und da frage ich mich, ob es nicht einen anderen Weg gibt...
|
Da muss man gar nichts rechnen.
Du solltest dich mit den Indikator-Buffer auseinandersetzten und die Funktionen SetIndexStyle() und SetIndexBuffer() machen nach der Übergabe der Werte an den Inikator-Buffer genau das, was du oben willst.
Code:
//---- buffers
double ATR_upper_1[]; //Buffer 0
double ATR_lower_1[]; //Buffer 1
//---- Input Variables
...
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexStyle(0,DRAW_LINE,ATR_1_style,ATR_1_width,ATR_1_COLOR); //Buffer 0 (ATR_upper_1[])
SetIndexBuffer(0,ATR_upper_1);
SetIndexStyle(1,DRAW_LINE,ATR_1_style,ATR_1_width,ATR_1_COLOR); //Buffer 1 (ATR_lower_1[])
SetIndexBuffer(1,ATR_lower_1);
//---
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[])
{
//Code zur Berechnung des ATR (über iATR) und Übergabe der Werte an ATR_upper_1[] und ATR_lower_1[]
return(rates_total);
}