Multicurrency EA, prüfen ob Symbol in Liste

Einloggen oder registrieren, um einen Kommentar zu schreiben
fintrad0
138
fintrad0  

Hallo,

ich versuche mich an einem EA, der Orders für mehrere Symbole erstellen kann (meine mql-Kenntnisse sind noch recht einfach).

OB ein bestimmtes Symbol gehandelt werden darf, würde ich gerne über eine externe Variable (Symbolliste) festlegen können und dann über eine Funktion prüfen, ob das Symbol erlaubt ist.

Mit solchen Listen habe ich noch keinerlei Erfahrung, deswegen wäre es super, wenn mir hier jemand etwas weiterhelfen könnte. Ich stelle mir das so vor, kann es aber nicht umsetzen, damit es funktioniert:

input string Symbolliste  =   {"AUDUSD","USDCAD","USDCHF","EURUSD","GBPUSD","USDJPY"};



//Aufruf der Funktion
if(symbol_allowed("USDJPY")) {
  ...
} 


//Funktion
bool symbol_allowed(str sym) {

 bool sym_allowed = false;

 if(sym in Symbolliste)  // funktioniert so natürlich nicht
   sym_allowed = true;

}

Vielleicht kann mir jemand mit einem Link etc. weiterhelfen.


Vielen Dank für Eure Hilfe!

Gruß

Werner

Christian
3166
Christian  
fintrad0:

Vielleicht kann mir jemand mit einem Link etc. weiterhelfen.

Klar doch ... schau hier mal rein https://www.mql5.com/de/articles/648


Gruß

Das MQL5-Kochbuch: Mehrwährungsfähiger Expert Advisor – eine einfache, saubere und schnelle Herangehensweise
Das MQL5-Kochbuch: Mehrwährungsfähiger Expert Advisor – eine einfache, saubere und schnelle Herangehensweise
  • www.mql5.com
In diesem Beitrag wird die Umsetzung einer einfachen Herangehensweise an einen mehrwährungsfähigen Expert Advisor beschrieben. Das heißt, Sie werden in der Lage sein, den Expert Advisor für das Testen/den Handel unter identischen Bedingungen aber mit unterschiedlichen Parametern je Symbol einzurichten. Als Beispiel erstellen wir ein Muster für...
fintrad0
138
fintrad0  
Christian:

Klar doch ... schau hier mal rein https://www.mql5.com/de/articles/648


Gruß

Danke, Christian. Da werde ich mich mal durchkämpfen. Sieht recht umfangreich aus, aber da kann ich sicher noch was lernen.


Schönen Gruß

Werner

fintrad0
138
fintrad0  
Christian:

Klar doch ... schau hier mal rein https://www.mql5.com/de/articles/648


Gruß

Ich hab mir den Artikel durchgelesen. Hier wird geprüft, ob das Symbol TATSÄCHLICH beim Broker (Server) verfügbar ist. 

Ich würde aber gerne die Liste meiner zu handelnden Symbole selbst definieren (eingrenzen, z. B. nur EURGBP, AUDUSD und USDCHF).

Gibts hier vielleicht noch etwas, was für mich als Laie hilfreich wäre?

Danke! Gruß Werner

Christian
3166
Christian  
fintrad0:

Ich hab mir den Artikel durchgelesen. Hier wird geprüft, ob das Symbol TATSÄCHLICH beim Broker (Server) verfügbar ist. 

Ich würde aber gerne die Liste meiner zu handelnden Symbole selbst definieren (eingrenzen, z. B. nur EURGBP, AUDUSD und USDCHF).

Gibts hier vielleicht noch etwas, was für mich als Laie hilfreich wäre?

Danke! Gruß Werner

OK , gerade noch Hoffnung gehabt das du selber dann etwas suchst.

Hast ja recht der Artikel ist am Thema vorbei.

Dieser hier sollte dann passen .

Fertiger EA.

PS: Das Zauberwort bei der Suche ist "multicurrency" :-)

https://www.mql5.com/de/code/14940

Multicurrency Expert
Multicurrency Expert
  • www.mql5.com
Die in diesem Expert Advisor implementierte Handelsstrategie wurde während der Championship 2012 getestet. Beim Start öffnet den Expert Advisor Positionen aller angegebenen Währungspaare mit minimalen Volumen. Sobald eine Position in den Verlust läuft wird sie umgekehrt. Wenn eine Position profitabel ist, wird ihr Volumen vergrößert. Sobald der...
fintrad0
138
fintrad0  
Christian:

OK , gerade noch Hoffnung gehabt das du selber dann etwas suchst.

Hast ja recht der Artikel ist am Thema vorbei.

Dieser hier sollte dann passen .

Fertiger EA.

PS: Das Zauberwort bei der Suche ist "multicurrency" :-)

https://www.mql5.com/de/code/14940

Danke, Christian. Ich war in der Zwischenzeit nicht ganz untätig und hab in der der Codebase was gefunden (https://www.mql5.com/de/code/28181) . Ob ich es schaffe, das in meinen Code zu integrieren, werde ich dann sehen. Zumindest bin ich jetzt beschäftigt.

Falls ich nicht klar komme, melde ich mich einfach nochmal.

Gruß und einen schönen Sonntag noch!

Werner

fintrad0
138
fintrad0  
Christian:

OK , gerade noch Hoffnung gehabt das du selber dann etwas suchst.

Hast ja recht der Artikel ist am Thema vorbei.

Dieser hier sollte dann passen .

Fertiger EA.

PS: Das Zauberwort bei der Suche ist "multicurrency" :-)

https://www.mql5.com/de/code/14940

Christian, ich komme irgendwie nicht klar damit. Vielleicht kannst Du mir nochmal unter die Arme greifen.


Diese Funktion habe ich jetzt erstellt. Ich kann nicht sagen, ob die Logik funktioniert. Testen kann ich heute leider nicht. Was meinst Du? 

string symbol_allowed[] =   {"AUDUSD","USDCAD","USDCHF","EURUSD","GBPUSD","USDJPY"};


// Aufruf
if(check_symbols("EURUSD") {    //true, weil in Liste
...
}
//--------------------
if(check_symbols("USDCHF") {    // false, weil nicht in Liste
...
}
//--------------------
if(check_symbols("CADJPY") {    // false, weil nicht in Liste
...
}
//-------------------
if(check_symbols("GBPUSD") {    // true, weil in Liste
...
}

 usw.

  
	
//Funktion
bool check_symbols(string sym)
{
 bool check = false;
 
   for(int i=0; i<ArraySize(symbol_allowed); i++)
     {
      if(symbol_allowed[i] == sym)
	{check = true;}         
       else
        {check = false;} 
     }
   return(check);  
}

Gruß Werner

Christian
3166
Christian  
fintrad0:

Christian, ich komme irgendwie nicht klar damit. Vielleicht kannst Du mir nochmal unter die Arme greifen.


Diese Funktion habe ich jetzt erstellt. Ich kann nicht sagen, ob die Logik funktioniert. Der Kompiler meldet " cannot implicitly convert type string to bool."

Gegooglet habe ich die Fehlermeldung, kapiere aber die Bedeutung nicht.

Gruß Werner

Ich versuche es. Aber ein zwei Regeln hätte ich da.

Bitte nur kompletten Code posten. Keine Fragmente ohne erkennbaren Zusammenhang . Falls zu lang dann als Datei.

Falls doch super duper geheim dann PM ;-).

Dazu Fehlermeldungen mit Angabe zur Zeile.

Das verkürzt ungemein die Fehlersuche und Dir wird schneller geholfen.


Der Fehler sagt das der Compiler den Typ "String" nicht direkt in ein "Bool" verwandeln kann.

fintrad0
138
fintrad0  
Christian:

Ich versuche es. Aber ein zwei Regeln hätte ich da.

Bitte nur kompletten Code posten. Keine Fragmente ohne erkennbaren Zusammenhang . Falls zu lang dann als Datei.

Falls doch super duper geheim dann PM ;-).

Dazu Fehlermeldungen mit Angabe zur Zeile.

Das verkürzt ungemein die Fehlersuche und Dir wird schneller geholfen.


Der Fehler sagt das der Compiler den Typ "String" nicht direkt in ein "Bool" verwandeln kann.

Chrisitan, ich habe eben den Fehler gefunden. Es lag am Vergleichsoperator ==. Er kompiliert JETZT ohne Fehler. Leider kann ich heute nicht ausprobieren, ob er auch das macht, was er soll. Einen kompletten Code habe ich nicht, ich steht noch am Anfang-

Wie gesagt, es geht jetzt einfach nur noch darum, ob die Funktion zum Prüfen der erlaubten Symbole so funktioniert oder ob noch Fehler drin sind.

Ist mir echt peinlich, Dir mit meiner Unwissenheit den Sonntag zu stehlen...

Gruß  Werner

Carl Schreiber
Moderator
9813
Carl Schreiber  

1.) Als Eingabevariable kannst Du keinen Array angeben, nur Zahlen oder Strings!

2.) Gib doch einen String aller zu handelnden Symbole an:

input string Symbolliste  =   ",AUDUSD,USDCAD,USDCHF,EURUSD,GBPUSD,USDJPY,";

Dann einfach mit:

string toFind = StringConcatenate(",",_Symbol,","); // in OnInit() (als globale Variable?)
...
if ( 0<= StringFind(
            Symbolliste,    // String, in dem gesucht wird 
            toFind          // was wird gesucht 
            //int     start_pos=0          // mit welcher Position beginnt die Suche - nicht notwendig 
         ) ) { Print("OK :)"); }

Die Kommata am Anfang und Ende machen die Suche einfacher, weil einheitlich auch  für die 'Randwerte'.

fintrad0
138
fintrad0  
Carl Schreiber:

1.) Als Eingabevariable kannst Du keinen Array angeben, nur Zahlen oder Strings!

2.) Gib doch einen String aller zu handelnden Symbole an:

Dann einfach mit:

Die Kommata am Anfang und Ende machen die Suche einfacher, weil einheitlich auch  für die 'Randwerte'.

Danke, Karl, für den Hinweis und den Beispielcode. Den werde ich morgen gleich testen.

Schönen Gruß an Euch alle!

Werner

12
Einloggen oder registrieren, um einen Kommentar zu schreiben