Hilfe zum Upgrade auf MetaTrader 5 ohne Verlust - Seite 15

 
Valmars:

...

Valery, sagen Sie mir, was dieser Codeabschnitt in calc.mq5 bedeutet:

...

if(StringSubstr(Symbol(), 3, 3)=="CAD") { xxx=1.2175;   }
if(StringSubstr(Symbol(), 3, 3)=="JPY") { xxx=91.425;   }
if(StringSubstr(Symbol(), 3, 3)=="CHF") { xxx=1.1631;   }
if(StringSubstr(Symbol(), 3, 3)=="AUD") { xxx=1/0.6800; }
if(StringSubstr(Symbol(), 3, 3)=="NZD") { xxx=1/0.54;   }
if(StringSubstr(Symbol(), 3, 3)=="GPB") { xxx=1/1.49;   }
if(StringSubstr(Symbol(), 3, 3)=="EUR") { xxx=1/1.3015; }

...

Das heißt, warum werden der Variablen xxx feste Werte zugewiesen?

---

Und noch eine Frage. Die Hilfe enthält unvollständige Informationen zur Gewinnberechnung für Forex, nicht wahr? Das bedeutet, dass nur die Formel für die umgekehrten Kurse(XXXUSD) zur Berechnung des Gewinns angegeben wird.

Kennung

Beschreibung

Formel

SYMBOL_CALC_MODE_FOREX

Forex-Modus - Gewinn- und Margenberechnung für Forex

Marge: Lose*Vertragsgröße/Verwendung

Gewinn: (Schlusskurs-Eröffnungskurs)*Kontraktgröße*Lose

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
tol64:

Und noch eine Frage. Es stellt sich heraus, dass die Hilfe unvollständig ist mit Informationen über die Gewinnberechnung für Forex? Das bedeutet, dass die Formel zur Gewinnberechnung nur für inverse Kurse(XXXUSD) dargestellt wird.

Ja, es scheint, dass Sie Recht haben. Über die Gewinnberechnung können Sie bisher in dem Artikel "Das ABC des Devisenhandels" lesen.
Азбука торговли валютами - Статьи по MQL4
  • www.mql5.com
Азбука торговли валютами - Статьи по MQL4: особенности автоматических торговых стратегий
 
Rosh:
Ja, Sie scheinen Recht zu haben. Vorerst können Sie die Gewinnberechnung in dem Artikel "Das ABC des Devisenhandels" nachlesen.

Ich danke Ihnen. Diesen Artikel sollte man sich auf jeden Fall als Spickzettel merken, denn ich kann nicht alles im Kopf behalten. Noch besser ist es, wenn Sie in der Hilfe eine Tabelle hinzufügen, so dass alles zentralisiert ist. :)

---

Und feste Werte (auf einem frischen Kopf ist es notwendig zu schauen :) ), so habe ich für einen Fall verstanden, wenn es keine Daten gab. Diese Werte sollten jedoch je nach Wechselkursen ständig korrigiert werden. Deshalb ist es besser, anstelle falscher Werte die Meldung auszugeben, dass keine Daten vorhanden sind.

 
tol64: Und ich habe die festen Werte (wenn sie frisch im Kopf sind :) ) für den Fall verstanden, dass es keine Daten gibt. Diese Werte sollten jedoch je nach dem Kurs der einen oder anderen Währung ständig korrigiert werden. Deshalb ist es besser, eine Meldung anzuzeigen, dass keine Daten vorhanden sind, als falsche Werte.

Ja, Sie haben völlig Recht. Ich tat, was der Autor tat, ich war zu faul, ich hatte keine Zeit... Für Cross Rates in MT4 müssen Sie im Fenster 'Market Watch' explizit die Symbole für beide Währungen in USD auswählen, d.h. Für NZDJPY müssen Sie zum Beispiel USDJPY und NZDUSD auswählen. Der Autor hat in der Präambel einen Haftungsausschluss zu diesem Punkt:

"Für XXXYYY kreuzt die entsprechende

USDYYY oder XXXUSD Hauptpaare (z.B. für GPBJPY im Marktübersichtsfenster sollte geöffnet sein

USDJPY muss offen sein)."

Im MT5 ist es besser, dies dem Indikator selbst zu überlassen.

 

Piligrim:

Valery (Valmars), glauben Sie, dass es im Hinblick auf die Komplexität des Repackaging sinnvoll ist, Ihnen anzubieten, diesen Indikator auch in MQL5 neu zu erstellen? Die vorherige, von Ihnen übersetzte, funktioniert sehr gut!

Sie können diesen Indikator nicht für MT5 ändern, da MT5 keine eigenständigen Charts hat (und auch nie haben wird). Wie funktioniert der Indikator im MT4? Es wird ein eigenständiges Diagramm mit einer Nicht-Standard-Periode erstellt, und beim Eintreffen eines neuen Kurses wird es in der .hst-Datei dieser Nicht-Standard-Periode gespeichert. Und dann öffnen Sie dieses Diagramm. Bei jedem Tick wird der Indikator mit Hilfe der Indikator-DLL aktualisiert (neu gezeichnet). Als Ergebnis sehen Sie ein Diagramm mit einem nicht standardisierten Zeitraum, das in Echtzeit aktualisiert wird.

In MT5 wurde sogar das Dateiformat PERIOD.hc (auf dem Charts für die Standardperioden aufgebaut sind) von den Entwicklern nicht geöffnet, wahrscheinlich, weil sie keine "linkshändigen" Charts erstellen können. Die Kontroverse über Diagramme mit einer willkürlichen Periode können Sie hier nachlesen.

 
Valmars:

Ja, Sie haben völlig Recht. Ich tat, was der Autor tat, ich war zu faul, ich hatte keine Zeit... Für Cross Rates in MT4 müssen Sie im Fenster 'Market Watch' explizit die Symbole für beide Währungen in USD auswählen, d.h. Für NZDJPY müssen Sie zum Beispiel USDJPY und NZDUSD auswählen. Der Autor weist in der Präambel auf diesen Umstand hin:

"Für XXXYYY-Kreuze, die entsprechenden

Hauptpaare USDYYY oder XXXUSD (z.B. für GPBJPY im Market Watch Fenster muss

USDJPY offen sein)".

Im MT5 ist es besser, dies dem Indikator selbst zu überlassen.

Anstelle dieser Liste mit festen Werten würde also dieser Code funktionieren? :

bool flgExit=false;
string arrSymbols[7]={ "CAD","JPY","CHF","AUD","NZD","GBP","EUR" };
//---
for(int i=ArraySize(arrSymbols)-1; i>=0; i--)
  {
   if(flgExit) { break; }
   //---
   if(StringSubstr(Symbol(),3,3)==arrSymbols[i])
     {
      for(int j=SymbolsTotal(false)-1; j>=0; j--)
        {
         if(SymbolName(j,false)=="USD"+arrSymbols[i]+"")
           {
            SymbolSelect("USD"+arrSymbols[i]+"",true);
            //---
            if((xxx=SymbolInfoDouble(SymbolName(j,true),SYMBOL_BID))<=0)
              {
               Comment("Ошибка ("+IntegerToString(GetLastError())+") при получении данных по символу "+SymbolName(j,true)+""); return(0);
              }
            else { flgExit=true; break; }
           }
       }
   }
}
 
Valmars:

Dieser Indikator kann nicht in MT5 konvertiert werden, da MT5 keine autonomen Charts hat (und auch nicht haben wird). Wie funktioniert der Indikator im MT4? Es wird ein eigenständiges Diagramm mit einer Nicht-Standard-Periode erstellt, und beim Eintreffen eines neuen Kurses wird es in der .hst-Datei dieser Nicht-Standard-Periode gespeichert. Und dann öffnen Sie dieses Diagramm. Bei jedem Tick wird der Indikator mit Hilfe der Indikator-DLL aktualisiert (neu gezeichnet). Als Ergebnis sehen Sie ein Diagramm mit einem nicht standardisierten Zeitraum, das in Echtzeit aktualisiert wird.

In MT5 wurde sogar das Format der PERIOD.hc-Dateien (auf denen Charts für Standardperioden aufgebaut sind) von den Entwicklern nicht einmal offengelegt, wahrscheinlich weil sie keine "linkshändigen" Charts erstellen können. Die Kontroverse über Diagramme mit einer willkürlichen Periode können Sie hier nachlesen.

Auf jeden Fall vielen Dank, Valery! Für mich als Nicht-Programmierer ist eine verständliche professionelle Beratung viel besser, wenn es darum geht, mögliche Lösungen für ein Problem zu finden, das meine Kompetenzen übersteigt.

 
tol64:

Anstelle dieser Liste mit festen Werten würde dieser Code also gut funktionieren? :

Ja, führen Sie es einfach auch für das zweite Zeichen des Kreuzes aus und setzen Sie es in das Inite.

 
Valmars:
Ja, machen Sie das einfach auch für das zweite Kreuzzeichen und setzen Sie es in das Inite.

Valery, wenn Sie einen Moment Zeit haben, sehen Sie sich die überarbeitete Fassung an. Wird sie nun unter Berücksichtigung der oben genannten Punkte korrekt durchgeführt? Ich danke Ihnen.


Dateien:
 
tol64:

...

Die obige Datei(calcriskprofit.mq5) wurde aktualisiert. Der Tippfehler wurde korrigiert. Anstelle von GBP war es GPB. :)