Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   MT will meine EA unbedingt auf dem Chart USDCHF ausführen, ich will das aber nicht (http://www.expert-advisor.com/forum/showthread.php?t=6733)

LQK 30.07.20 20:44

MT will meine EA unbedingt auf dem Chart USDCHF ausführen, ich will das aber nicht
 
Hallo,

nachdem ich gerade dabei bin einen EA zu debuggen, ist mir beim Testen aufgefallen, dass MT den EA jedesmal auf dem Chart bzw. dem Symbol USDCHF ausführen will.

Ich will den EA jedoch auf dem Dax30-CFD traden und auch auf diesem Chart Testen. Zum Testen ist der Dax30-CFD schon deshalb sehr gut geeignet, weil dieser Markt 23 Stunden am Tag geöffnet hat, d.h. ich bekomme mit dem Dax30-CFD fast zu jeder Uhrzeit Ticks , dass ich den EA testen kann. Bei dem USDCHF ist das nicht so, deshalb ist der USDCHF zum testen/debuggen des EA ungeeignet, wenn ich spätabends noch am EA arbeite und Ticks brauche um den EA zu testen.

Ich habe jetzt verschiedenes versucht, konnte jedoch MT bislang nicht davon abbringen, den EA auf USDCHF ausführen zu wollen. Habe jetzt noch verschiedene andere EA und Test-Stücke von mir probiert, es ist immer dasselbe: MT will immer alles auf USDCHF ausführen und lässt sich nicht davon abbringen.

Habe jetzt extra um dieses Problem zu lösen einen nahezu leeren Test-EA erstellt. Beim Erstellen des Test-EA mit dem Wizzard habe ich keinerlei Hinweise auf USDCHF gefunden. Auch im Code selbst des kleinen Test-EA finde ich keinen Hinweis auf USDCHF. Dennoch will MT auch den kleinen Test-EA hartnäckig immer auf USDCHF ausprobieren.

Habe u.a. Folgendes ausprobiert:


1.
Mit Strg + W alle Chartfenster geschlossen. Den Test-EA kompiliert und gestartet. Ergebnis: MT öffnet ein Chartfenster USDCHF und will den EA darauf ausführen.


2.
Mit Strg + W alle Chartfenster geschlossen. Ein Chartfenster für den Dax30-CFD geöffnet. Den Test-EA neu kompiliert und gestartet. Ergebnis: Der Test-EA öffnent ein neues Chartfenster USDCHF, legt das bereits offene Chartfenster Dax30-CFD in den Hintergrund und will den Test EA auf dem Chartfenster USDCHF ausführen.

---

Ich will selbst bestimmten, auf welchem Chart MT meine EA ausführen soll. In dem Fall also nicht auf USDCHF, sondern auf dem Dax30-CFD.

Habe im Moment keine Idee, was ich noch ausprobieren könnte. Ich freue mich über jeden konstruktiven Hinweis. :)

---

Besten Dank und Grüße
LQK


Hier noch der Quellcode des kleinen Test-EA:

Code:

//+------------------------------------------------------------------+
//|                                                      test12.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+


Nachtrag:

Die Möglichkeit, einen EA zu starten indem man diesen aus dem Navigator auf den gewünschten Chart zieht, ist mir bekannt. Diese funktioniert auch bei mir (scheinbar), allerdings würde ich gerne den EA aus Metaeditor heraus starten, beenden und ggf. pausieren. Das ginge mit dieser Methode nicht.

LQK 03.08.20 18:46

Sollte ich tatsächlich der erste sein, der mit diesem Problem zu kämpfen hat?

Wiederholtes Schließen, Öffnen des EA und Neustarten des PC hat es jedenfalls nicht gelöst. :)

LQK 03.08.20 19:20

Ich habe jetzt mal folgende Änderung durchgeführt.

So war es vorher (Code-Auszug, fragliche Stellen rot markiert):

Code:

...
                          order_id = OrderSend(
                              Symbol(),
                              OP_BUY,
                              global_PositionGroesse,
                              Ask,
                              global_Slippage,
                              global_SL,
                              global_TP,
                              NULL,
                              0,
                              0,
                              clrNONE);
..


Und so nach der Veränderung:

Code:

                          order_id = OrderSend(
                              ".DE30Cash",
                              OP_BUY,
                              global_PositionGroesse,
                              Ask,
                              global_Slippage,
                              global_SL,
                              global_TP,
                              NULL,
                              0,
                              0,
                              clrNONE);


Das Problem ist unverändert. Nach Kompilieren und Starten öffnet der EA einen Chart USDCHF und will auf diesem Chart traden.

Überraschenderweise führt es nicht zu einer Fehlermeldung, wenn als Symbol völliger Blödsinn übergeben wird (siehe Beispiel unten), weder beim Compilierne noch zur Laufzeit:


Code:

                  order_id = OrderSend(
                              "QuatschmitSoße",
                              OP_BUY,
                              global_PositionGroesse,
                              Ask,
                              global_Slippage,
                              global_SL,
                              global_TP,
                              NULL,
                              0,
                              0,
                              clrNONE);


Der EA verhält sich immer gleich, egal, was ich als Symbol übergebe (öffnet einen Chart USDCHF und will auf diesem traden. Hat jemand eine Idee?

Besten Dank für jeden konstruktiven Hinweis und Grüße
LQK

Indikator-Trading 03.08.20 19:30

Bist du dir sicher dass du definitiv keine Kompelierungsfehler hast? Ist dennoch einer in deinem Code, dann wird die funktionierende ex4 Datei nicht ersetzt und wenn die vorher "hart" auf USDCHF eingestellt war, dann läuft die auch weiterhin so. Ohne mehr von deinem Code wird das aber schwer dir hier weiter zu helfen

LQK 03.08.20 21:59

Zitat:

Zitat von Indikator-Trading (Beitrag 44167)
Bist du dir sicher dass du definitiv keine Kompelierungsfehler hast?

Ja, da bin ich sicher.

Wie schon in meinem EP geschrieben: Derzeit führt MT jeden (!) EA den ich probiert habe auf dem Chart USDCHF auf. Habe ja für diesen Thread extra einen kleinen Test-EA erstellt, bei dem das auch so auftritt (siehe EP).

Gerne kann ich auch den EA posten, bei dem das Problem zuerst aufgetreten ist. Wollte das nur Vermeiden, weil er auch noch andere Fehle hatte und ich dachte, es ist einfacher mit einem kleinen Test-EA wie im EP.

Aber gut, hier jetzt der EA bei dem das Problem zuerst auftrat als Quellcode. Mittlerweile habe ich ihn soweit debuggt, dass der Backtest funktioniert hat. Wundere Dich also nicht über die seltsamen Print-Ausgaben die immer mal wieder auftauchen, die habe ich fürs debuggen gebraucht. ;)

Was der EA machen soll (ist mehr oder weniger eine kleine Programmierübung für mich, die ich dann konsequent weiterentwickeln will, vielleicht irgendwann mal zu einem funktionierenden EA) ist das: Öffne jeden Tag mit dem ersten Tick der nach 9 Uhr kommt einen Trade. Wenn bis 10 Uhr kein Tick gekommen ist (was in der Praxis nicht passieren wird) wird kein Trade geöffnet. Geschlossen wird der Trade nur dann, wenn SL oder TP erreicht wird, d.h. es wird zwar täglich lediglich ein Trade geöffnet, es kann aber passieren, dass mehrere Trades gleichzeitig offen sind.

Ich hoffe inständig, dass der Thread jetzt nicht OT wird, und die Funktionen des EA diskutiert werden, anstelle mein eigentliches Problem (dass MT jeden EA bei mir auf USDCHF ausführen will).

Hier der Quellcode des besagten EA, bei dem das Problem zuerst auftrat:

Code:

//+------------------------------------------------------------------+
//|                            Hausaufgabe v17 ab jetzt debuggen.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+


// 0.95, 1.033, 1.0m 5


// Deklaration und Initialisierung globale Konstanten

input int global_BeginnDerHeissenStunde = 9;
input double global_SL = 0.95;
input double global_TP = 1.033;
input int global_PositionGroesse = 1.0;
input int global_Slippage = 5;



// Deklaration globale Variablen

int order_id;
bool Flag_Variable;



// OnInit() macht hier nichts außer Flag_Variable zu initialisieren und onTick() zu starten.

void OnInit()
        {
       
        // Initialisierung Flag_Variable. Die Flaf_Variable signalisiert, ob an dem Tag ab 9 Uhr
        // bereits ein Trade geöffnet wurde.
       
        Flag_Variable = false;
        //OnTick();
       
        Print("OnInit() Methodenrumpf wurde durchlaufen");

        }




void OnTick()         
 
  // Der erste Tick ab neun Uhr führt zum Öffnen eines Trades, sofern an diesem Tag noch
  // kein Trade ab neun Uhr geöffnet wurde.
 
   
 
 
     
        {
       
        //Print("OnTick() Methodenaufruf hat funktioniert und Kopf des Methodenrumpfs wurde erreicht!");
       
       

  double lokal_Slippage;
  double lokal_SL;
  double lokal_TP;
  double lokal_PositionGroesse;
 
  lokal_PositionGroesse = global_PositionGroesse;
  lokal_Slippage = Ask * lokal_Slippage;
  lokal_SL = Ask * lokal_SL;
  lokal_TP = Ask * lokal_TP;
   
       
        if ((TimeHour(TimeLocal()) == global_BeginnDerHeissenStunde)&& Flag_Variable == false)
       
          {
         
          Print("Erste IF-Anweisung Ausführunsteil wurde erreicht!");
         
                          order_id = OrderSend(
                              ".DE30Cash",
                              OP_BUY,
                              lokal_PositionGroesse,
                              Ask,
                              lokal_Slippage,
                              lokal_SL,
                              lokal_TP,
                              NULL,
                              0,
                              0,
                              clrNONE);
                                               
             
                Print("Soeben wurde ein Trzzzzzade geöffnet!");
                Print("Gewünschte Postitionsgröße ist:" + lokal_PositionGroesse);
           
                Print("technische Angaben:");
           
                Print(MarketInfo(Symbol(), MODE_LOTSIZE));
            Print(MarketInfo(Symbol(), MODE_MINLOT));
            Print(MarketInfo(Symbol(), MODE_LOTSTEP));
            Print(MarketInfo(Symbol(), MODE_MAXLOT));
            Print(Ask);
               
               
               
               
             
                // Nachdem ein Trade eröffnet wurde, wird die Flag_Variable auf true gesetzt.
                      Flag_Variable = true;
                     
                      Print("Flag-Variable wurde ein neuer Wert zugewiesen: " + Flag_Variable); 
                     
                      Print("Ausführungsteil der ersten IF-Anweisung wurde jetzt vollständig durchlaufen!");
          }
         
         
         
        // Nachdem die "heiße" Stunde vorüber ist, wird die Flag_Varaibel wieder auf false gesetzt.                 
    if ((TimeHour(TimeLocal()) > global_BeginnDerHeissenStunde) && Flag_Variable == true)
     
   
     
      {
          Print("Zweite IF-Anweisung Ausführunsteil wurde erreicht!");
                  Flag_Variable = false;
                 
                  Print("Flag-Variable wieder zurückgesetzt auf:" + Flag_Variable);
                 
          }
  }



Zitat:

Ist dennoch einer in deinem Code, dann wird die funktionierende ex4 Datei nicht ersetzt und wenn die vorher "hart" auf USDCHF eingestellt war, dann läuft die auch weiterhin so. Ohne mehr von deinem Code wird das aber schwer dir hier weiter zu helfen
Wenn Du einen Fehler im Code diesbezüglich findest, umso besser. Dann wäre das die Lösung für mich und Du hättest mir dann sehr geholfen! :)

Da das Problem aber bei bisher jedem EA auftrat, den ich zu dem Zweck getestet habe, auch in dem kleinen "leeren" EA den ich im EP gepostet habe, frage ich mich, ob nicht eine "harte" Einstellung in MT selbst das macht. Aber welche?

Habe vorhin noch mal extra ein neues Demokonto eröffnet, da tritt das Problem auch auf. Brokerwechsel habe ich noch nicht versucht, erscheint mir auch übertrieben. Neuinstallation von MT habe ich bisher auch noch nicht versucht, da ich bedenken habe, dass dann irgendwelche Daten und Einstellungen erstmal weg sind.

Ich freue mich über jeden konstruktiven Hinweis! :)

Grüße,
LQK

MA-EA 03.08.20 22:47

Was sagen die Reiter "Experten" und "Journal"?

Wenns nicht am EA liegt, wirds wohl am MT4 liegen. Deine Daten kannst Du ja aus den MT4-Ordnern in nen anderes Verzeichnis kopieren. Wenn nach ner kompletten De- und Neu-Installation das Problem immer noch auftritt, kann Dir wohl nur noch Dein Broker helfen. Ist das vielleicht nen Konto, mit dem man nur USDCHF traden kann? :confused:

AVT 03.08.20 23:40

Zitat:

Zitat von LQK (Beitrag 44141)
Die Möglichkeit, einen EA zu starten indem man diesen aus dem Navigator auf den gewünschten Chart zieht, ist mir bekannt. Diese funktioniert auch bei mir (scheinbar), allerdings würde ich gerne den EA aus Metaeditor heraus starten, beenden und ggf. pausieren. Das ginge mit dieser Methode nicht.

Dann mußt Du im Terminal - Marktübersicht:
- das Symbol für den Dax an die erste Stelle setzen
- Maus drauf und nach oben ziehen
AVT

LQK 04.08.20 13:51

Zitat:

Zitat von AVT (Beitrag 44173)
Dann mußt Du im Terminal - Marktübersicht:
- das Symbol für den Dax an die erste Stelle setzen
- Maus drauf und nach oben ziehen
AVT

Das war die Lösung! Damit ist das Problem gelöst! :) Da wäre ich wohl von selbst nie drauf gekommen!

Besten Dank für den Hinweis! :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:18 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum