Um nicht solche Sonderfälle in Codebase zu schaffen, schmücken die Basis einmal - ChartBuilder.
Das ist es ja, für die einfachsten Dinge braucht man dort nichts zu lernen. In Ihrem Fall ist alles extrem elementar:
Formula1 = "AUDUSD - NZDUSD"; Schreiben Sie einfach ein gut durchdachtes Toolkit von MQL4 auf MQL5 um. Und Sie werden in der Lage sein, fast 99% der erfundenen Indikatoren zum Thema Paarhandel auf einem guten Niveau zu implementieren.
Für pädagogische Zwecke ist ein solcher Indikator einfach notwendig.
Sie können auf einen Blick sehen, was Sie wo hinzufügen müssen. Wenn man sich verbessert (die Funktionalität erweitert), versteht man besser, was vor sich geht.
Ich versuche, einen Kanal darauf zu legen, aber es funktioniert nicht richtig.
//+------------------------------------------------------------------+ //|Projektname | //|Copyright 2012, Firmenname | //| http://www.firmenname.net | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 4 #property indicator_plots 4 //--- Plotten von Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrAqua #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- Plotten von Label2 #property indicator_label2 "Label2" #property indicator_type2 DRAW_LINE #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- Etikett3 zeichnen #property indicator_label3 "Label3" #property indicator_type3 DRAW_LINE #property indicator_color3 clrRed #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- Plot Label4 #property indicator_label4 "Label4" #property indicator_type4 DRAW_LINE #property indicator_color4 clrRed #property indicator_style4 STYLE_SOLID #property indicator_width4 1 //--- Eingabeparameter input string symbol1="EURUSD"; input string symbol2="GBPUSD"; input double mass_of_symbol1=1; input double mass_of_symbol2=1; input int ENPeriod = 14; input ENUM_MA_METHOD ENMethod = MODE_SMA; input double ENDeviation = 0.1; //--- Indikatorpuffer double UBuffer[]; double LBuffer[]; double CBuffer[]; #include <IncOnArray/IncEnvelopesOnArray.mqh> CEnvelopesOnArray en; int i,r1,r2,j; double S,prs,k1,k2,d1,d2; //--- Indikatorpuffer double ind1[]; //+------------------------------------------------------------------+ //| Benutzerdefinierte Initialisierungsfunktion für Indikatoren | //+------------------------------------------------------------------+ int OnInit() { en.Init(ENPeriod,ENMethod,ENDeviation); //--- Zuordnung von Indikatorpuffern SetIndexBuffer(0,ind1,INDICATOR_DATA); SetIndexBuffer(1,UBuffer,INDICATOR_DATA); SetIndexBuffer(2,LBuffer,INDICATOR_DATA); SetIndexBuffer(3,CBuffer,INDICATOR_DATA); PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,en.BarsRequired()); PlotIndexSetString(1,PLOT_LABEL,en.Name()+" Upper"); PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,en.BarsRequired()); PlotIndexSetString(2,PLOT_LABEL,en.Name()+" Lower"); PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,en.BarsRequired()); PlotIndexSetString(3,PLOT_LABEL,en.Name()+" MA"); //--- return(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[]) { //--- ArraySetAsSeries(time,true);ArraySetAsSeries(open,true);ArraySetAsSeries(high,true);ArraySetAsSeries(low,true); ArraySetAsSeries(close,true);ArraySetAsSeries(tick_volume,true);ArraySetAsSeries(volume,true);ArraySetAsSeries(spread,true); ArraySetAsSeries(ind1,true); MqlRates rates1[]; ArraySetAsSeries(rates1,true); MqlRates rates2[]; ArraySetAsSeries(rates2,true); if(prev_calculated<rates_total) { for(i=0;i<rates_total;i++) { CopyRates(symbol1,0,time[i],1,rates1); CopyRates(symbol2,0,time[i],1,rates2); ind1[i]=mass_of_symbol1*rates1[0].close-mass_of_symbol2*rates2[0].close; } } en.Solve(rates_total,prev_calculated,ind1,CBuffer,UBuffer,LBuffer); //--- Rückgabe des Wertes von prev_calculated für den nächsten Aufruf return(rates_total); } //+------------------------------------------------------------------+
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
newdigital, 2014.01.12 08:59
Was sagt ein Spread den Tradern?
- Spreads basieren auf dem Kauf- und Verkaufspreis eines Währungspaares.
- Die Kosten basieren auf den Spreads und der Losgröße.
- Spreads sind variabel und sollten von Ihrer Handelssoftware referenziert werden.
Spreads und Forex
Jeder Markt hat einen Spread, so auch der Devisenhandel. Ein Spread ist einfach definiert als die Preisdifferenz zwischen dem, wo ein Händler einen Basiswert kaufen oder verkaufen kann. Händler, die mit Aktien vertraut sind, bezeichnen dies synonym als Bid: Ask-Spread.
Unten sehen Sie ein Beispiel für die Berechnung des Spreads für den EURUSD. Zunächst ermitteln wir den Kaufkurs bei 1,35640 und ziehen dann den Verkaufskurs von 1,32626 ab. Nach diesem Vorgang verbleibt ein Wert von 0,00014. Händler sollten bedenken, dass der Pip-Wert dann auf dem EURUSD als vierte Stelle nach dem Komma angegeben wird, so dass der endgültige Spread 1,4 Pips beträgt.
Nachdem wir nun wissen, wie man den Spread in Pips berechnet, wollen wir uns nun die tatsächlichen Kosten ansehen, die den Händlern entstehen.

Kosten und Berechnungen von Spreads
Da der Spread nur eine Zahl ist, müssen wir nun wissen, wie wir den Spread in Dollar und Cent umrechnen können. Die gute Nachricht ist, dass die Ermittlung des Spreads mathematisch sehr einfach ist, sobald Sie die Pip-Kosten und die Anzahl der gehandelten Lots ermittelt haben.
Anhand der obigen Notierungen wissen wir, dass wir den EURUSD derzeit zu einem Preis von 1,3564 kaufen und die Transaktion zu einem Verkaufspreis von 1,35474 abschließen können, d. h. sobald unser Handel eröffnet ist, würde ein Händler einen Spread von 1,4 Pips zahlen. Um die Gesamtkosten zu ermitteln, müssen wir nun diesen Wert mit den Pip-Kosten multiplizieren und dabei die Gesamtmenge der gehandelten Lots berücksichtigen. Beim Handel mit einem 10k EURUSD-Lot mit 1 $ Pip-Kosten würden Ihnen bei dieser Transaktion Gesamtkosten in Höhe von 1,40 $ entstehen.
Denken Sie daran, dass die Pip-Kosten exponentiell sind. Das bedeutet, dass Sie diesen Wert mit der Anzahl der von Ihnen gehandelten Lots multiplizieren müssen. Je größer Ihre Positionen sind, desto höher sind auch die Kosten, die durch den Spread entstehen.

Änderungen des Spreads
Es ist wichtig zu wissen, dass Spreads variabel sind, d.h. sie bleiben nicht immer gleich und ändern sich sporadisch. Diese Änderungen beruhen auf der Liquidität, die je nach Marktbedingungen und anstehenden Wirtschaftsdaten variieren kann. Um sich über die aktuellen Spreads zu informieren, sollten Sie sich immer an Ihre Handelsplattform wenden.Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
newdigital, 2014.01.30 09:25
Forex Spreads und die Nachrichten (basierend auf dailyfx Artikel)
- Spreads basieren auf dem Kauf- und Verkaufspreis eines Währungspaares.
- Spreads sind variabel und können sich während der Nachrichten ändern.
- Achten Sie auf eine Normalisierung der Spreads, kurz nach wirtschaftlichen Ereignissen.
Die Finanzmärkte können durch die Veröffentlichung von Wirtschaftsnachrichten drastisch beeinflusst werden. Nachrichtenereignisse treten während der gesamten Handelswoche auf, wie im Wirtschaftskalender angegeben, und können die Marktvolatilität sowie die Spreads, die Sie bei Ihren bevorzugten Währungspaaren sehen, erhöhen.
Neue Händler sollten sich unbedingt damit vertraut machen, was während dieser Ereignisse passieren kann. Um Sie besser auf bevorstehende Nachrichten vorzubereiten, werden wir uns ansehen, was mit Forex-Spreads während volatiler Märkte passiert.

Spreads und die Nachrichten
Nachrichten sind eine berüchtigte Zeit der Marktunsicherheit. Diese Veröffentlichungen im Wirtschaftskalender erfolgen sporadisch und können, je nachdem, ob die Erwartungen erfüllt werden oder nicht, zu schnellen Kursschwankungen führen. Genau wie Einzelhändler kennen auch große Liquiditätsanbieter den Ausgang von Nachrichtenereignissen nicht, bevor sie veröffentlicht werden! Aus diesem Grund versuchen sie, einen Teil ihres Risikos durch eine Ausweitung der Spreads auszugleichen.
Oben sehen Sie ein Beispiel für die Spreads während der Veröffentlichung der NFP-Beschäftigungszahlen im Januar. Beachten Sie, wie sich die Spreads für die wichtigsten Devisenpaare ausweiteten. Auch wenn es sich um ein vorübergehendes Ereignis handelte, werden die Händler bis zur Normalisierung des Marktes höhere Handelskosten in Kauf nehmen müssen.

Umgang mit dem Spread
Es ist wichtig, sich daran zu erinnern, dass Spreads variabel sind, d.h. sie bleiben nicht immer gleich und ändern sich, wenn Liquiditätsanbieter ihre Preise ändern. Oben sehen Sie, wie schnell sich die Spreads nach den Nachrichten normalisieren. Innerhalb von 5 Minuten gingen die Spreads für den EURUSD von 6,4 Pips auf 1,4 Pips zurück. Was bedeutet das nun für Händler, die ihre Aufträge im Umfeld der Nachrichten ausführen wollen?
Händler sollten immer das Risiko des Handels mit volatilen Märkten bedenken. Eine der Optionen für den Handel mit Nachrichtenereignissen ist die sofortige Ausführung von Aufträgen zum Marktpreis in der Hoffnung, dass die Marktvolatilität die erhöhten Spread-Kosten deckt. Oder die Händler können warten, bis sich die Märkte normalisieren, und dann die zusätzliche Liquidität nutzen, sobald die Marktaktivität nachlässt.
Sorry!
Sinnlose Variablen deklariert und funktioniert nicht!
Kann man statt der Differenz auch das Verhältnis verwenden (Symbol1/Symbol2)?
Danke!
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.


Spread Of Symbols:
Der Indikator zeigt den Chart der Differenz (Summe) der Preise zweier Symbole. Er ist geeignet für die visuelle Einschätzung der Korrelation zweier Handelssymbole. Er ist für Händler, die am "Pair-Trading" (Spread-Handel) interessiert sind. Die Bars des Indikators sind zeitlich synchronisiert mit den Bars des Charts auf dem der Indikator gestartet wurde.
Autor: Dmitry