EA soll nur 1 Waehrungspaar z.b. EURUSD handeln

 

was muss ich in einem EA ändern damit er nur 1  Waehrungspaar z.B. EURUSD handelt, selbst wenn ich den EA auf einen Chart für GBPUSD ziehe?

Für eine Hilfe wäre ich dankbar.

 

Das kommt darauf an, ob der EA nur das Symbol handelt, auf dem er läuft. Das zeigt sich im Code!

Such mal nach anderen Symbolen wie EURGBP und/oder Symbol(), _Symbol bzw. NULL.

 

Nachfolgend habe ich den EA-Code eingefügt. Der EA soll also nur EURUSD handeln, selbst wenn ich ihn aufweinen falschen Chartziehe(oder aber dann gar nicht handeln). Was muss ich ändern oder einfügen?


#property version "0_Price_Waehrung_EA"

// Module importieren

#include<Trade\Trade.mqh>

#include "GetProfitWaehrungspaar.mq5";

#include "GetPositionsAnzahlSymbol.mq5";

CTrade  trade;

// Variablen 

string Version="0_Price_Waehrung_EA";

double Balance=0; // Bruttokontostand

double Equity=0;  // Nettokontostand

double Bid=0;     // BidPreis aktuell

double Ask=0;     // AskPreis aktuell

double OpenPositionVolume =0; //Positionsvolumen

input int SL=0;

input int TP=600;

double ProfitWaehrungspaar=0;

int PositionsAnzahl=0; // Anzahl der offenen Positionen

int PositionsAnzahlDieseWaehrung=0;

input int MaximalePositionsAnzahl=20; //Benutzer definiert Positionsanzahl

input int MaximalePositionsAnzahlDieseWaehrung=5;  //Benutzer definiert Positionsanzahl einer Waehrung

void OnTick()

  {

      // Wir holen uns den aktuellen Kontostand

      Balance=AccountInfoDouble(ACCOUNT_BALANCE); 

      // Wir holen uns die aktuelle Equity

      Equity=AccountInfoDouble(ACCOUNT_EQUITY);     

      // Wir holen uns den aktuellen Ask-Preis

      Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);     

      // Wir holen uns den aktuellen Bid-Preis

       Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);  

      // Wir holen uns die aktuelle PositionsAnzahl

      PositionsAnzahl=PositionsTotal();    

      // Positionen dieser Waehrung

      PositionsAnzahlDieseWaehrung = GetPositionsAnzahlDieseWaehrung();     

      // Profit des waehrungspaares

      ProfitWaehrungspaar= GetProfitWaehrungspaar();

      //  ein Array für alle Preisinformationen

      MqlRates PreisInformationen[]; 

      // Sortieren der Preisinformationen nach Kerzenaktualität

      ArraySetAsSeries(PreisInformationen,true);   

      // Packen die Preisdaten in unser Array

      int Daten=CopyRates(Symbol(),Period(),0,3,PreisInformationen);      

      // Bildschirmausgabe 

      Comment ("Version: ", Version," Balance: ",Balance, " Equity: ",Equity," PositionsAnzahl: ", PositionsTotal());       

     // Wenn die erlaubte Positionsanzahl nicht ueberschritten wurde

     if (PositionsAnzahlDieseWaehrung<MaximalePositionsAnzahlDieseWaehrung)

     {

     // Kaufen wenn der Askpreis gestiegen ist 

        if (PreisInformationen[1].close > PreisInformationen[2].close) 

        {

        trade.Buy(0.01,NULL,(Ask-SL *_Point),0,(Ask+TP *_Point),NULL);

        }    

     // Verkaufen wenn der Bidpreis gesunken ist 

        if (PreisInformationen[1].close < PreisInformationen[2].close)      

        {

         trade.Sell(0.01,NULL,(Bid+SL *_Point),0,(Bid-TP *_Point),NULL);

        }

     }

  }

 

Du must im EA Code Abfragen einbauen wo geprueft wird ob das Waehrungspaar jenes ist auf welchem der EA handeln soll, Beispiel fuer EURUSD:


input string Handelspaar="EURUSD";


Innerhalb der OnTick Funktion:

if(Symbol()!=Handelspaar)return(0);


Innerhalb von Funktionen:

if(OrderSymbol()!=Symbol())continue;