Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4588
Beiträge: 41432
Benutzer: 6.973
Aktive Benutzer: 205
Links: 82
Wir begrüßen unseren neuesten Benutzer: chippbutty
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Tagen
- chippbutty
vor 5 Tagen
- M0rtis
vor 6 Tagen
- Alexander2...
vor einer Woche
- Geldman041...
vor einer Woche
- jomaka

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 103
Gesamt: 103
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 30.07.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard 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.

Geändert von LQK (30.07.20 um 20:58 Uhr)
  #2 (permalink)  
Alt 03.08.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard

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.
  #3 (permalink)  
Alt 03.08.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard

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
  #4 (permalink)  
Alt 03.08.20
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 140
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

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
  #5 (permalink)  
Alt 03.08.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
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
  #6 (permalink)  
Alt 03.08.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.040
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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?
  #7 (permalink)  
Alt 03.08.20
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 454
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von LQK Beitrag anzeigen
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
  #8 (permalink)  
Alt 04.08.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AVT Beitrag anzeigen
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!
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2020 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------