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: 4483
Beiträge: 40716
Benutzer: 6.866
Aktive Benutzer: 251
Links: 80
Wir begrüßen unseren neuesten Benutzer: hk0163
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- hk0163
vor 2 Tagen
- magnr1
vor 2 Tagen
- boypac007
vor 3 Tagen
- Anja
vor 5 Tagen
- ThaScorp

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 77
Gesamt: 78
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 54
LQK befindet sich auf einem aufstrebenden Ast
Standard Hartnäckiger OrderSend error 130 bei meinem EA - bitte um Hilfe

Hallo,

ich habe zu Übungszwecken einen kleinen Test-EA geschrieben, der jeden Morgen mit dem ersten Tick ab 9 Uhr einen Trade eröffnet.

Der EA ist soweit debuggt.

Der Backtest ist mir bislang allerdings noch nicht gelungen. Ich bekomme einen hartnäckigen OrderSend error 130 angezeigt, den ich bislang noch nicht lösen konnte.

Mein ursprüngliches Set an Werten, mit denen ich den EA betreiben wollte, war:

Zitat:
Lotsize = 1.0, TP = 1.033, SL = 0.95

Ich will damit den DAX-CFD DE30DAX.CASH handeln. Mein Broker ist JFD. Bei JFD ist ein Punkt ein Euro. JFD lässt Mikrolots zu (d.h. 0.1 ist die Mindestgröße bei einem Trade, 1.000 die Maximalgröße), hier eine kleine Übersicht:

https://www.jfdbank.com/de/online-tr...indicesSection


Laut Google tritt der Error 130 dann auf, wenn mit den Werten von SL und TP was nicht stimmt. Ich habe daher verschiedene Einstellungen probiert, aber der Error 130 ist bei all den folgenden Einstellungen wieder aufgetreten:

Zuerst habe ich den Abstand von SL und TP zum Kaufpreis vergrößert und weniger Dezimalstellen verwendet:

Zitat:
Lotsize = 1.0, TP = 2.0, SL = 0.5

Ich habe noch viel mehr Eingaben getestet, aber ich kann mich nicht mehr an alle erinnern. Überdies führte ohnehin keine davon zum Erfolg.

Dann habe ich es auch mal mit ganz großen und ganz kleinen Werten probiert, jedoch führte keiner davon zum Erfolg, Error 130 blieb:


Zitat:
Lotsize = 1000.0, TP = 1500.0, SL = 100

Bei Lotgrößen unter 1 kommt seltsamerweise eine neue Fehlermeldung (Error 4051, Error 130 tritt dann nicht auf) obwohl JFD ja angibt, dass ein Trade eine Größe von 0.1 Lot handelbar ist. Hier ein Beispiel, das ich u.a. mit kleinen Werten unter 1 getestet habe:

Zitat:
Lotsize = 0.5, TP = 1.5, SL = 0.2

Als Slippage habe ich bei all meinen Versuchen immer einen Wert von 5 angegeben.


---


Ich weiß jetzt nicht, was ich sonst noch ausprobieren könnte.

Ich bitte um Eure Hilfe!



---


Besten Dank und Grüße,
LQK

Geändert von LQK (vor 2 Wochen um 19:34 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.376
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Na, wo bleibt den der Code dazu?

Und was soll
TP = 1.033, SL = 0.95
beim DAX-CFD DE30DAX.CASH??

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 2 Wochen
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 54
LQK befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Na, wo bleibt den der Code dazu?
Hier der Code des kompletten EA. Die fraglichen Code-Teile habe ich rot markiert.


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



// 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!");
	
	if ((TimeHour(TimeLocal()) == global_BeginnDerHeissenStunde)&& Flag_Variable == false)
	
	   {
	   
	   Print("Erste IF-Anweisung Ausführunsteil wurde erreicht!");
	   
			   order_id = OrderSend(
		              Symbol(), 
		              OP_BUY, 
		              global_PositionGroesse, 
		              Bid,
		              global_Slippage, 
		              global_SL, 
		              global_TP, 
		              NULL, 
		              0, 
		              0,
		              clrNONE);
						
	      
	         Print("Soeben wurde ein Trade geöffnet!");
	      
	         // 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:
Und was soll
TP = 1.033, SL = 0.95
beim DAX-CFD DE30DAX.CASH??

traderdoc
Ich verstehe nicht, worauf Du mit diser Frage hinaus willst?

(Womöglich weist die Antwort darauf, schon auf die Lösung meines Problems hin?)


---


Besten Dank und Grüße!

LQK
Mit Zitat antworten
  #4 (permalink)  
Alt vor 2 Wochen
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 376
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von LQK Beitrag anzeigen
Hier der Code des kompletten EA. Die fraglichen Code-Teile habe ich rot markiert.
Code:
input double global_SL = 0.95 ;
input double global_TP = 1.033;
input int = 1.0;
input int global_Slippage = 5;

			   order_id = OrderSend(
		              Symbol(), 
		              OP_BUY, 
		              global_PositionGroesse, 
		              Bid,
		              global_Slippage, 
		              global_SL, 
		              global_TP, 
		              NULL, 
		              0, 
		              0,
		              clrNONE);
Ich verstehe nicht, worauf Du mit diser Frage hinaus willst?

(Womöglich weist die Antwort darauf, schon auf die Lösung meines Problems hin?)
Übersetze doch einfach den OrderSend in Worte, Zeile für Zeile, so:
Sende eine Order
für das Symbol (in Deinem Falle) Dax
zum Kauf
von 1.0 Lots
zum gegenwärtigen Bidpreis
bei einer Maximalabweichung von 5
und setze den Stopploss auf 0.95
und den Takeprofit auf 1.033

So, und dann siehst Du wohl sofort wo der Fehler liegt, oder?
Wo steht der Dax grade? Und wo sind Deine SL und TP Marken?
AVT
Mit Zitat antworten
  #5 (permalink)  
Alt vor 2 Wochen
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 418
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Kurz was mir aufgefallen ist:

Er kann die Order nicht abgeben, da bei TP und SL feste Werte benötigt werden oder 0.

Zitat:
input double global_SL = 0.95 ;
input double global_TP = 1.033;
Ist das der Versuch einer Prozentrechnung?

Eine Buy Order wird nicht mit dem Bid Preis eröffnet.
__________________

Easy Trading Assistant
Mit Zitat antworten
  #6 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.376
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

So und das ist es, was ich damit meinte.
Es kann keine Order geöffnet werden, wenn nicht
die Werte für SL und TP stimmig sind.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
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 10:35 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.
-----------------------------------------------------------------------------------------------------------------------------