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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3820
Beiträge: 36898
Benutzer: 6.067
Aktive Benutzer: 491
Links: 80
Wir begrüßen unseren neuesten Benutzer: POCJonah7
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 7 Stunden
- POCJonah7
vor 14 Stunden
- flowi88
vor 14 Stunden
- dealtycoon
vor 19 Stunden
- VicenteWuc
vor 22 Stunden
- sazaron

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 61
Gesamt: 63
Team: 0
Team:  
Benutzer:  kohout83, Stier
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #21 (permalink)  
Alt 23.06.15
Neues Mitglied
 
Registriert seit: Mar 2015
Ort: Berlin
Beiträge: 28
saro2018 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
int lastorder; solltest Du mal gegen int lastorder = -1; ersetzen.
Daran liegt es aber nicht.

Du mußt Dir überlegen, wo der EA lang laufen soll un dan den Stellen, wo Du das kontrollieren willst, schreibst Du halt Print("T"); Sollten mehrere Stellen gleichzeitig kontrolliert werden dann Print("T1");, Print("T2"); usw.Damit kannst Du dann genau unterscheiden wo, und v.a. an der Reihenfolge der Prints, wann er im Verlaufe der Abarbeitung wo langgelaufen war.

Experimentiere doch einfach mit dem Print etwas.

traderdoc
Danke erstmal, hat schonmal gut geholfen mit dem Print. Also der Fehler, den er mir rausgibt ist der folgende: "OrderSend error 130". Dieser erscheint sobald eine Order im Minus geschlossen wurde und er versucht in die Bedingung rein zu gehen, um eine Gegenposition aufzubauen. In diesem Fall habe ich das mit dem Print gemacht und er leitet mich zu deinem Code den du mir geschickt hast:
Code:
if (closedProfit < 0) {
    Print("T");
  // if(total < 1) {          //was soll total sein???
      if (lastorder == 0) {
         ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2,STOPLOSS, TAKEPROFIT, NULL, mymagicnumber);
         
      }
      if (lastorder == 1) {
         ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, STOPLOSS, TAKEPROFIT, NULL, mymagicnumber);
      }
   }
Ich habe schon probiert, die Marketorder durch eine Pending zu verändern um den Markteinstieg zu verzögern, allerdings auch vergebens..

Gruß Aron
  #22 (permalink)  
Alt 23.06.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

"OrderSend error 130"
bedeutet Invalid Stops, d.h. der Wert des StopLoss oder TakeProfit in der Funktion OrderSend() ist so falsch, dass der MT4 keine Order öffnen kann.

Also die Stops kontrollieren!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #23 (permalink)  
Alt 24.06.15
Neues Mitglied
 
Registriert seit: Mar 2015
Ort: Berlin
Beiträge: 28
saro2018 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
"OrderSend error 130"
bedeutet Invalid Stops, d.h. der Wert des StopLoss oder TakeProfit in der Funktion OrderSend() ist so falsch, dass der MT4 keine Order öffnen kann.

Also die Stops kontrollieren!

traderdoc
Ich habe mir gerade das noch einmal gründlich angeschaut, und den StopLoss und TakeProfit angepasst, allerdings gab er dann wieder den gleichen Fehler Code raus. Als ich daraufhin den gleichen Stop und Take Profit eingestellt habe, wie in meinen vorherigen Bedingungen hat er förmlich diese Bedingung ignoriert.

Er soll faktisch sofort eine Market Order eröffnen, sobald der vorherige Trade in den Stop gelaufen ist. Kann es vielleicht auch an der Verzögerung liegen, dass es dort Schwierigkeiten gibt? Also das eine sofortige Market Order nicht möglich ist zu dem gleichen Preis, wie der Stop der letzten Order war?
Kann der error 130 vielleicht noch etwas anderes bedeuten?

Gruß
Aron
  #24 (permalink)  
Alt 24.06.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

if (closedProfit < 0) {
Print("T");
// if(total < 1) { //was soll total sein???
if (lastorder == 0) {
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2,STOPLOSS, TAKEPROFIT, NULL, mymagicnumber);

}
if (lastorder == 1) {
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, STOPLOSS, TAKEPROFIT, NULL, mymagicnumber);
}
}

Laß Dir doch über Print() die Werte für StopLoss und TakeProfit ausdrucken, dann wirst Du sehen, dass die nicht stimmen.
Wenn ich das richtig überflogen habe, dann werden die beiden Werte oben aus den externen Variablen übernommen. Das geht natürlich nicht. In Deinen vorherigen OrderSend-Funktionen sind die SL und TP anscheinend ja richtig berechnet worden.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #25 (permalink)  
Alt 24.06.15
Neues Mitglied
 
Registriert seit: Mar 2015
Ort: Berlin
Beiträge: 28
saro2018 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
if (closedProfit < 0) {
Print("T");
// if(total < 1) { //was soll total sein???
if (lastorder == 0) {
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2,STOPLOSS, TAKEPROFIT, NULL, mymagicnumber);

}
if (lastorder == 1) {
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, STOPLOSS, TAKEPROFIT, NULL, mymagicnumber);
}
}

Laß Dir doch über Print() die Werte für StopLoss und TakeProfit ausdrucken, dann wirst Du sehen, dass die nicht stimmen.
Wenn ich das richtig überflogen habe, dann werden die beiden Werte oben aus den externen Variablen übernommen. Das geht natürlich nicht. In Deinen vorherigen OrderSend-Funktionen sind die SL und TP anscheinend ja richtig berechnet worden.

traderdoc
Das könnte natürlich sein.. Wie kann ich über die Print() Funktion den StopLoss und TakeProfit ausdrucken?
Ich habe allerdings auch mal probiert einfach Werte einzusetzen eg. 20 für SL und 30 für TP, allerdings kommt dann immer noch der Fehler.
Ist das auch ein Fehler einfach Werte dafür einzusetzen?

Gruß
Aron
  #26 (permalink)  
Alt 24.06.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von saro2018 Beitrag anzeigen
Das könnte natürlich sein.. Wie kann ich über die Print() Funktion den StopLoss und TakeProfit ausdrucken?
Ich habe allerdings auch mal probiert einfach Werte einzusetzen eg. 20 für SL und 30 für TP, allerdings kommt dann immer noch der Fehler.
Ist das auch ein Fehler einfach Werte dafür einzusetzen?

Gruß
Aron
Das könnte nicht nur sein, sondern das ist es mit Sicherheit, weil Du setzt direkt die Pipwerte der Variablen StopLoss und TakeProfit ein!! Das geht natürlich nicht!
Print(StopLoss)!

Berechne doch einfach den zu setzenden StopLoss so, wie Du ihn auch weiter oben bei Dir im Programm schon berechnet hast!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #27 (permalink)  
Alt 24.06.15
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 224
pako befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von saro2018 Beitrag anzeigen
Das könnte natürlich sein.. Wie kann ich über die Print() Funktion den StopLoss und TakeProfit ausdrucken?
Ich habe allerdings auch mal probiert einfach Werte einzusetzen eg. 20 für SL und 30 für TP, allerdings kommt dann immer noch der Fehler.
Ist das auch ein Fehler einfach Werte dafür einzusetzen?

Gruß
Aron
if (lastorder == 1)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2,NormalizeDouble(Ask - STOPLOSS*Point(),Digits()), NormalizeDouble(Ask + TAKEPROFIT*Point(),Digits()), NULL, mymagicnumber);
}
  #28 (permalink)  
Alt 24.06.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von pako Beitrag anzeigen
if (lastorder == 1)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2,NormalizeDouble(Ask - STOPLOSS*Point(),Digits()), NormalizeDouble(Ask + TAKEPROFIT*Point(),Digits()), NULL, mymagicnumber);
}
Nun lass ihn mal ein wenig mitmachen.

STOPLOSS*Point() und TAKEPROFIT*Point()
Außerdem wieder diese unsaubere Sache mit dem Ignorieren der 5-DigitBroker.
Das würde bei ihm nach Deiner Funktion und den Variablenwerten von StopLoss = 25 und TakeProfit = 20 zu realen Werten von 2,5 und 2,0 Pips führen. Da kann es schon wieder Probleme mit dem StopLevel geben.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #29 (permalink)  
Alt 24.06.15
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 224
pako befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Nun lass ihn mal ein wenig mitmachen.

STOPLOSS*Point() und TAKEPROFIT*Point()
Außerdem wieder diese unsaubere Sache mit dem Ignorieren der 5-DigitBroker.
Das würde bei ihm nach Deiner Funktion und den Variablenwerten von StopLoss = 25 und TakeProfit = 20 zu realen Werten von 2,5 und 2,0 Pips führen. Da kann es schon wieder Probleme mit dem StopLevel geben.

traderdoc
das kann man noch in init() funktion berechnen

und logische fehler lieber im debugger suchen

aber erst syntax fehler korrigieren
Angehängte Grafiken
Dateityp: jpg Unbenannt.jpg (232,2 KB, 3x aufgerufen)

Geändert von pako (24.06.15 um 16:03 Uhr)
  #30 (permalink)  
Alt 24.06.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von pako Beitrag anzeigen
das kann man noch in init() funktion berechnen

und fehler suchen lieber im debugger

Ja! Das sollte man da immer berechnen. Nur wenn er die Funktion so nimmt, wie Du sie vorgegeben hast, kann es falsch werden und dann wundert er sich beim nächsten mal, warum wieder der Fehler 130 kommt oder warum seine Stops so dicht am Entry sitzen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
mql4, oco, order, order öffnen, programmierung, programmierung metatrader


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 10:42 Uhr.



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