Frage zum Berater für mehrere Währungen

 

Guten Abend!

Ich denke daran, zwei Paare zu einem EA zu kombinieren. Ich habe es getan.

Aber plötzlich hatte ich Zweifel. Ich habe es so gemacht:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

Online und im Strategietester funktioniert alles! Vielleicht ist das nicht ganz der richtige Weg, um es zu tun:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
Die zweite Option scheint auch im Testgerät zu funktionieren.

Aber wie geht man am besten vor?

 
rid:

Guten Abend!


Ich denke daran, zwei Paare zu einem EA zu kombinieren. Ich habe es getan.


Aber plötzlich hatte ich Zweifel. Ich habe es so gemacht:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

Online und im Strategietester funktioniert alles! Vielleicht ist das nicht ganz der richtige Weg, um es zu tun:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
Die zweite Option scheint auch im Testgerät zu funktionieren.

Aber wie geht man am besten vor?




Normalerweise berechne ich alle Indikatorwerte zu Beginn, d.h. Variante 1, das ist einfacher, man kommt nicht durcheinander und der Code ist strukturierter.
 

Ich danke Ihnen! Für die Antwort. Eine weitere Frage. Nachlaufende Stopps wollen nicht funktionieren. Sie funktionieren einzeln im Prüfgerät!

Aber online funktioniert es für ein Paar. Aber bei einem anderen erzeugt er einen Fehler - direkt nach dem Anhängen des Expert Advisors.

Aber Angebote gehen - nur ohne Schleppnetz auf das zweite Paar.

Fehler 130 beim Ändern von SL

int start()
  {
РАСЧЁТ  ИНДИКАТОРОВ 
{
ПОКУПКА/ПРОДАЖА
  }
 
for (int j=0; j<OrdersTotal(); j++)                                    {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)          {
ИДЕТ КОД 1 ТРЕЙЛИНГА.
   }
 
for (int r=0; r<OrdersTotal(); r++)                                    {
    if (OrderSelect(r, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)          {
ИДЕТ КОД 2 ТРЕЙЛИНГА
}
 
return(0);  
  }
Die nachgestellten Codes sind identisch, aber die externen und internen Variablen haben unterschiedliche Zeichen.

Ich kann nicht verstehen, was los ist. Vielleicht kann mir das jemand sagen?

 
versuchen Sie es so
int start()
{
//РАСЧЁТ  ИНДИКАТОРОВ 
 
//ПОКУПКА/ПРОДАЖА
  
 
for (int j=0; j<OrdersTotal(); j++)
  {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)         
              {
                  ИДЕТ КОД 1 ТРЕЙЛИНГА.
              }
          if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)   
              {
                  ИДЕТ КОД 2 ТРЕЙЛИНГА
              }
        }
   }
 
 
  return(0);  
}
 
Wenn Sie den Code strukturieren, wird er für Sie und andere leichter zu verstehen sein.
 

Ich werde es ausprobieren, danke.

 

Es scheint zu funktionieren!

Noch kein Fehler. Ich warte auf Gewinne, um das Schleppnetz zu überprüfen.

Weitere Fragen. Wenn es Ihnen nichts ausmacht.

Das sind bei weitem nicht die einfachsten Beispiele für Experimente mit mehreren Währungen, und wo sie vorhanden sind, sind sie nichts für schwache Nerven. Es ist zu kompliziert, um alles zu verstehen.

Es gibt eine in meinem Code:

 double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
//-------Проверяем условие на покупку-------------
if  (

In den seltenen Beispielen auf dieser Website, in denen ein ähnlicher Block vorhanden ist, gibt es jedoch eine Linie:

RefreshRates();
 double BID = MarketInfo("GBPUSD", MODE_BID);
 double ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);

Ich habe auch diese Zeile eingefügt. Es wurde zusammengestellt. Aber ich bemerke keine Veränderung der Leistung.

Wie viel wird hier benötigt? Vielleicht sollte es in meinem EA belassen werden. Es wirkt bei allen Zecken. Und es verwendet ein Array von Werten -

//------заполняем массив значениями RSI GBPUSD -----------
 double RSI_array[30];
int    i=0;
while (i<31)
 {
RSI_array[i]=iRSI("GBPUSD",0,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i);
i++;

 
Das Prinzip des Multicurrency Expert Advisor ist ungefähr wie folgt:
1. bei der Berechnung von Indikatoren bestimmte Währungen und Zeitintervalle angeben, z.B.: iRSI("GBPUSD",60,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); //aber hier ist ein Fehler
2. mit Hilfe von MarketInfo Preise, Punkte usw. ermitteln.
3. iLow(...) anstelle von z. B. Low[0] verwenden
und gelten für alle Währungspaare.
Viel Glück!
 

Ich habe den Fehler! Anstelle von "0" gebe ich Indikatorvariablen für Währungen ein - den Zeitrahmen, in dem der Expert Advisor arbeitet.

Mein Expert Advisor scheint reibungslos zu funktionieren. Und die Schleppnetze funktionieren auch.

Und eine letzte Frage, hoffe ich. Ich habe eine weitere eingefügt. Es handelt sich jedoch nicht um den eingebauten Indikator, sondern um einen benutzerdefinierten Indikator. Im Testgerät funktioniert dieses Paar. Aber online geht das nicht! Es erzeugt etwas Seltsames: fast jede Sekunde wird dieser Indikator gesetzt und gelöscht. ..... - Haben Sie einen Rat?

//***************************************************************

kLerk ! Von allen Experten, die diese Woche hier waren, sind Sie der einzige, der auf meine Frage geantwortet hat. Und ich habe die Antworten bekommen, mit denen ich meistens zufrieden war. ( Außer bei der Frage nach RefreshRates() )

Bitte tragen Sie hier Ihre E-Mail-Adresse ein.

Als Zeichen meiner Dankbarkeit sende ich Ihnen einen einfachen Handels-"Gral" - EA! der von meinem guten Freund erfunden wurde.(Einverstanden) Ich arbeite mit ihm mit manueller Bestätigung. Ich arbeite mit ihm als manuelle Bestätigung und verwende nur zwei eingebaute Induktionsindikatoren.

Ohne Ironie, - dass es wirklich fast ein "Gral" ist (bei einiger Geschicklichkeit der Arbeit mit ihm), - werden Sie nach ein paar Minuten nach Erhalt sehen! Aber - jeder soll es sich ansehen:

Das Symbol ---------

Zeitraum 30 Minuten (M30) 2007.01.02 11:00 - 2007.08.15 00:00

Modell Alle Ticks (basierend auf allen kleinsten verfügbaren Perioden mit fraktaler Interpolation jedes Ticks)

Qualität der Modellierung 67.35%

Ersteinlage 10000,00

Reingewinn 4009,24

Gesamtgewinn 6335,06 Gesamtverlust -2325,82

Rentabilität 2,72 Erwartete Auszahlung 21,44

Maximale Absenkung 245,63 (2,18%) Relative Absenkung 2,18% (245,63)

Handel insgesamt 187

Short-Positionen (% Gewinn) 71 (80,28%)

Long-Positionen (% Gewinn) 116 (68,10%)

Gewinnbringende Geschäfte (in % aller Geschäfte) 136 (72,73%)

Verlustgeschäfte (% von allen) 51 (27,27%)

Größter gewinnbringender Handel 145,02, Verlusthandel -47. 77

Durchschnittlich profitabler Handel 46,58, Verlusthandel -45,60

Maximale Anzahl von Dauergewinnen (Gewinn) 9 (586. 96)

laufende Verluste (Verlust) 4 (-189,99

Und hier ist die Out-of-Sample-Testtabelle für November/Dezember des vergangenen Jahres 2006:

 
rid:

Als Zeichen meiner Dankbarkeit werde ich Ihnen einen einfachen "Gral" des Handels schicken - einen Berater!

Glückwunsch, klerk, du hast den Gral umsonst bekommen!
 
<< Druckt etwas Unverständliches: fast jede Sekunde wird dieser Indikator gesetzt und entfernt...... -

Höchstwahrscheinlich entsprechen die tatsächlichen Parameter, mit denen der benutzerdefinierte Indikator aufgerufen wird, nicht den formalen Parametern, die mit dem externen Schlüssel im Listing aufgeführt sind (Anzahl, Reihenfolge, Typ, ...). Ein sehr häufiger Fehler.