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: 4499
Beiträge: 40861
Benutzer: 6.885
Aktive Benutzer: 242
Links: 80
Wir begrüßen unseren neuesten Benutzer: mann013
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 3 Stunden
- mann013
vor 23 Stunden
- schlafmuet...
vor 4 Tagen
- BodoM
vor 6 Tagen
- tisas
vor 6 Tagen
- slaw4ik

Onlineuser
'Wer ist online' anzeigen Benutzer: 5
Gäste: 123
Gesamt: 128
Team: 0
Team:  
Benutzer:  Domke01, Indikator-Trading, LQK, SebastianPalmer, Stier
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 4 Tagen
LQK LQK ist gerade online
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 65
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 (vor 4 Tagen um 20:58 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt vor 3 Stunden
LQK LQK ist gerade online
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 65
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.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 3 Stunden
LQK LQK ist gerade online
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 65
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
Mit Zitat antworten
  #4 (permalink)  
Alt vor 2 Stunden
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
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
Mit Zitat antworten
  #5 (permalink)  
Alt vor 29 Minuten
LQK LQK ist gerade online
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 65
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
Mit Zitat antworten
Antwort

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 +2. Es ist jetzt 22:29 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.
-----------------------------------------------------------------------------------------------------------------------------