Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ein bisschen Farbe auf Murrays Ebenen
Guten Tag. Kluge Köpfe müssen wirklich den Korrelationsindikator in MT5 übersetzen
#property indicator_chart_window
#Eigenschaft indicator_buffers 2
#property indicator_plots 2
#property indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrDeepSkyBlue
#property indicator_chart_window
double UpBuffer[];
double DnBuffer[];
int OnInit()
{
SetIndexPuffer(0,UpPuffer);
SetIndexPuffer(1,DnPuffer);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(1,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
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[])
{ int i;
for(i=1000;i>0;i--)
{ UpBuffer[i]=1,428; DnBuffer[i]=1,41;
}
zurück(0);
}
Warum sind die Grenzen nicht gezogen?
Es sollte in etwa so aussehen, und ob Sie es glauben oder nicht, es funktioniert.
Ich habe diesen Indikator heruntergeladen. Beim Kompilieren gab es einen Fehler in Zeile 228, ich konnte kein Bild machen, also nehmen Sie mich bitte beim Wort. Ich möchte den Indikator verwenden, den ich auf MT5 verwende, deshalb bin ich hier, ich konnte es nicht selbst tun. Vielleicht können Sie es für mich umschreiben. Ich danke Ihnen.
Bitte um Hilfe.
Ich habe versucht, WATL neu zu schreiben, was mir fast gelungen wäre. Die Linien werden nicht korrekt gezeichnet, weil die LWMA-Berechnung nicht stimmt. Und das Wichtigste ist, dass die Grafik manchmal solche Überraschungen bereithält:
Eine Linie von Punkten ist manchmal identisch mit den Punkten, auf denen die WATL berechnet wird.
Oder ich drehe das Diagramm, und die Punkte überschneiden sich auf dem benachbarten Balken.
Vielen Dank im Voraus für jede Hilfe =)
Vielleicht hat jemand diesen Indikator in MQL5-Transformationen gesehen? http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=67
Hallo,
Ich konnte nicht tun, was ich wollte.
Ich habe einen anderen Maulwurfspuffer im Kopf, ich habe ein anderes Paar, als das, das ich im Kopf hatte.
[code]
#property indicator_separate_window
#Eigenschaft indicator_buffers 6
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#Eigenschaft indicator_color1 clrBlue
#Eigenschaft indicator_color2 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID
Eingabe int Periode_1 = 20;
Eingabe int period_2 = 100;
input ENUM_MA_METHOD ma_method = MODE_SMA;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int EMHandle1=0;
int EMHandle2=0;
int EMHandle11=0;
int EMHandle22=0;
MqlParam params[]; // Struktur zum Speichern von Indikatorparametern
double ma1[],ma2[],ma3[],ma4[];//zeitliche Puffer
int OnInit()
{
//--- Zuordnung von Indikatorpuffern
SetIndexPuffer(0, ExtMapPuffer1, INDICATOR_DATA);
SetIndexPuffer(1, ExtMapPuffer2, INDICATOR_DATA);
SetIndexBuffer(2, ma1, INDICATOR_DATA);
SetIndexBuffer(3, ma2, INDICATOR_DATA);
SetIndexBuffer(4, ma3, INDICATOR_DATA);
SetIndexBuffer(5, ma4, INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_SHIFT, 0);
PlotIndexSetInteger(1, PLOT_SHIFT, 0);
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
IndicatorSetString(INDICATOR_SHORTNAME, "2_2_MA");
//--- Genauigkeit einstellen
IndicatorSetInteger(INDICATOR_DIGITS,4);
//---
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_1;
// Offset
params[1].type =TYPE_INT;
params[1].integer_value=0;
// Berechnungsmethode: einfache Mittelwertbildung
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
// Art der Preise für die Berechnung: Schlusskurse
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_1;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
zurück(0);
}
int OnCalculate (const int rates_total,// Größe des Arrays price[];
const int prev_calculated,// Anzahl der verfügbaren Balken ;beim vorherigen Aufruf;
const int begin,// mit welchem Index in der Preis[]-Anordnung die gültigen Daten beginnen sollen;
const double &price[]) // Array, auf dem der Indikator berechnet wird;
{
int i;
ArraySetAsSeries(ma1, true);
ArraySetAsSeries(ma2, true);
ArraySetAsSeries(ma3, true);
ArraySetAsSeries(ma4, true);
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());}
int-Grenze;
//if(vorher_berechnet<1)
//limit=period_1;
limit=prev_calculated-1;
for( i=0; i<limit; i++)
ExtMapBuffer1[0]=Berechnet;
ExtMapBuffer2[0]=Berechnen;
Kommentar(
"\n=====================",
"\n ma1[0] : ",DoubleToString(ma1[0],5),
"\n ma2[0] : ",DoubleToString(ma2[0],5),
"\n ma3[0] : ",DoubleToString(ma3[0],5),
"\n ma4[0] : ",DoubleToString(ma4[0],5),
"\n ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
);
return(rates_total);
}
void OnDeinit(const int reason)
{
Kommentar(");
}
[/code]
Wenn 0 anstelle von i (für einen Balken) sehe ich das Ergebnis, wenn der Balken (Strom = i) zeigt, dass ich keine Daten für das zweite Paar finden kann.
Der Chart des Paares ist offen, im Marktfenster weiß ich nicht, wo ich etwas verwechsle.
Zwei verschiedene Paare in einem Indikator - wo liegt also mein Fehler?
Ich versuche, 0 einzugeben und sehe das Ergebnis als Kommentar, aber ich habe keine Zeile erhalten.
Zur Klarstellung: Ich habe ma1 und ma2 auf ein Paar und ma3 und ma4 auf das andere Paar gelegt.
Ich danke Ihnen.