Einzelnen Beitrag anzeigen
  #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