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: 4621
Beiträge: 41681
Benutzer: 6.996
Aktive Benutzer: 183
Links: 82
Wir begrüßen unseren neuesten Benutzer: baalexeyfranesay3088
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- baalexeyfr...
vor 6 Tagen
- Tbened
vor einer Woche
- coinboy
vor einer Woche
- Kat34r
vor 2 Wochen
- Goldstream

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

Empfehlungen

Like Tree6Likes
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard ordersend errror 3

moin zusammen,

ich habe einen Ea der boxen anhand von einem vorgegebenen zeitrahmen definiert. an den rändern werden pending orders platziert > also klasischer range handel.

jetzt bin ich dabei ihn so umzuschreiben, dass er mehrere boxen tradet. nach vielen versuchen, bin ich jetzt soweit das er die boxen einzeichnet und auch trades eingeht.

das problem ist das er die pending orders ständig öffnet und schliesst und damit dann auch aufhört bevor die ablaufzeit rum ist.

um das problem zu verdeutlichen packe ich in den anhang mal ein screenshot vom chart und die mq4 datei.

vielleicht findet sich hier ja jemand der mir helfen kann das problem zu lösen.

vielen dank schon mal im voraus.

berlin
Angehängte Grafiken
Dateityp: png Bildschirmfoto 2021-01-12 um 13.05.05.png (48,0 KB, 4x aufgerufen)
Angehängte Dateien
Dateityp: mq4 ordersend error 3.mq4 (41,5 KB, 4x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 175
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Hallo Berlin,

hier ein paar Anmerkungen zu deinem Code:

Die zweite If-Abfrage wird nie True werden, da dies sonst der ersten If-Abfrage widersprechen würde:
if(TimeCurrent() >= rangeStart1)
{
drawRange1();

//reset range variables
if(TimeCurrent() < rangeStart1)
{
rangePoints1 = 0;
rangeHigh1 = 0;
rangeLow1 = 0;
}


In dieser If-Abfrage musst du die Einzelteile in Klammern setzten, sonst wird es nicht so funktionieren, wie du dir das vorstellst. Dies gilt für auch für den Rest von deinem Code
Code:
      if(checkTime1()
         && inRange
         && rangePoints1 >= MinRangePoints && rangePoints1 <= MaxRangePoints
         && counterLong + counterShort < MaxTrades)
Gruß Timo
berlin likes this.
Mit Zitat antworten
  #3 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard nochmal von vorne :)

timo, vielen dank für deine antwort.

ich habe das ganze noch einmal neu aufgesetzt und folgendes der übersichthalber verändert.

1. aus der ersten if,if anweisung hab ich else if gemacht.
2. mit void box1() und void box2() den void tick bereich übersichtlicher gemacht
3. die boxen ein und ausschaltbar true/false gemacht

damit ist aus meiner sicht jede box deutlich von einander getrennt und es sollte aus meinem bescheidenen verständnis keine korrelationen zwischen den boxen entstehen.

wenn ich die boxen einzeln teste (also jeweils die andere ausschalte) funktioniert es wunderbar.

sind aber beide auf true kommt der ordersend error 3 wieder und er bearbeitet immer nur die erste box sauber. nach abschluss des tages setzt er wohl alles wieder richtig zurück und startet am nächsten tag sauber mit der ersten box und macht dann bei der zweiten box wieder die fehler.

woran liegt das?

im anhang ist die aktualisierte version.

vielen dank und lieben gruss
berlin
Angehängte Dateien
Dateityp: mq4 Range_multibox.mq4 (40,6 KB, 1x aufgerufen)
Mit Zitat antworten
  #4 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

In dieser If-Abfrage musst du die Einzelteile in Klammern setzten, sonst wird es nicht so funktionieren, wie du dir das vorstellst. Dies gilt für auch für den Rest von deinem Code
Code:
      if(checkTime1()
         && inRange
         && rangePoints1 >= MinRangePoints && rangePoints1 <= MaxRangePoints
         && counterLong + counterShort < MaxTrades)
Gruß Timo[/QUOTE]

aber es ist doch in klammern und innerhalb der klammer mit && getrennt.

wenn du den neuen ea mal in den tester haust und eine box ausstellst siehst du das es genau so funktioniert wie es soll.
Mit Zitat antworten
  #5 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 175
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Leider nicht zwingend, hängt auch mal gerne von der Interpretationsqualität des Compilers ab.

Nehmen wir mal nur den diesen Bereich hier:
MaxRangePoints && counterLong + counterShort < MaxTrades

(MaxRangePoints && counterLong) -> Boolsches Und und ergibt ein True/False
(counterShort < MaxTrades) -> Ergibt auch ein True/False

aber was ist dann mit dem + ?

Der Compiler könnte hieraus also (True/False) + (True/False) machen...

Du MUSST sauber programmieren, also so das es keinen Spielraum für Interpretationen gibt.

Ich mache eher zu viele Klammern, aber so ist die richtige Funktion immer vorgegeben:

Code:
  
if(checkTime1() && 
  inRange && 
  (rangePoints1 >= MinRangePoints) && 
  (rangePoints1 <= MaxRangePoints) && 
  ((counterLong + counterShort) < MaxTrades))
berlin likes this.
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 175
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

OrderSend Error 3 bedeutet: ERR_INVALID_TRADE_PARAMETERS

Du hast also beim Senden der Order falsche Parameter übergeben. Bei PendingOrders ist das mal schnell der Fall, wenn der Preis über den Level liegt, bei welchem die PendingOrder eigentlich erst ausläsen sollte.

Schau dir also einfach ins Detail an, wann der Error entsteht und lass dir die OrderParameter mit ausgeben.
Gruß Timo
berlin likes this.
Mit Zitat antworten
  #7 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.074
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

@ berlin

Nen Haufen Pending Orders platzieren, interessante Idee...

Dürfte auch nicht allzu schwierig sein...

Erzähl mal genau wie Du Dir das vorstellst.

Allerdings ist es nicht gerade von Vorteil, dass der Broker jeden Price, SL, TP usw. sehn kann.
berlin likes this.
Mit Zitat antworten
  #8 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
@ berlin

Nen Haufen Pending Orders platzieren, interessante Idee...

Dürfte auch nicht allzu schwierig sein...

Erzähl mal genau wie Du Dir das vorstellst.

Allerdings ist es nicht gerade von Vorteil, dass der Broker jeden Price, SL, TP usw. sehn kann.
nein, die idee ist:
1. es entsteht eine box innerhalb einer vordefinierten zeit
2. sie bildet ein lokales high und low
3. zum ende der box wird am high eine buystop order und am low eine sellstop order platziert.
4. nach eine definierten zeitraum werden die nicht abgeholten orders gelöscht.

folglich > klassischer range handel

- wenn der ea läuft und nur eine box eingeschaltet ist funktioniert es auch wunderbar.
- wenn aber beide boxen eingeschaltet sind gibt es bei der zweiten box das problem "ordersend error 3" und äussert sich so das er ständig stoporders eröffnet und sofort wieder schliesst. siehe screeshot aus meinem ersten beitrag.

in der zwischenzeit habe ich ihn neu geschrieben/umstrukturiert siehe meinen 2ten beitrag datei "range multibox"

das der broker meine parameter nach platzierung der orders sehen kann, stellt für mich kein problem dar.
Mit Zitat antworten
  #9 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
Leider nicht zwingend, hängt auch mal gerne von der Interpretationsqualität des Compilers ab.

Nehmen wir mal nur den diesen Bereich hier:
MaxRangePoints && counterLong + counterShort < MaxTrades

(MaxRangePoints && counterLong) -> Boolsches Und und ergibt ein True/False
(counterShort < MaxTrades) -> Ergibt auch ein True/False

aber was ist dann mit dem + ?

Der Compiler könnte hieraus also (True/False) + (True/False) machen...

Du MUSST sauber programmieren, also so das es keinen Spielraum für Interpretationen gibt.

Ich mache eher zu viele Klammern, aber so ist die richtige Funktion immer vorgegeben:

Code:
  
if(checkTime1() && 
  inRange && 
  (rangePoints1 >= MinRangePoints) && 
  (rangePoints1 <= MaxRangePoints) && 
  ((counterLong + counterShort) < MaxTrades))
ah, verstehe. hab geltungsbereiche bis jetzt vorwiegend aus der perspektive von geschweiften klammern gesehen. aber mit einer präziseren klammersetzung werden unnötige missverständnisse vermieden.

vielen dank dafür!
Mit Zitat antworten
  #10 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Nov 2020
Beiträge: 42
berlin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
OrderSend Error 3 bedeutet: ERR_INVALID_TRADE_PARAMETERS

Du hast also beim Senden der Order falsche Parameter übergeben. Bei PendingOrders ist das mal schnell der Fall, wenn der Preis über den Level liegt, bei welchem die PendingOrder eigentlich erst ausläsen sollte.

Schau dir also einfach ins Detail an, wann der Error entsteht und lass dir die OrderParameter mit ausgeben.
Gruß Timo
hey timo,

wie müsste die abfrage genau aussehen?

ich habe folgendes geschrieben:
Print("executeLong2=", rangePoints2,sl,tp,rangeHigh2);

bekomme das zurück:

executeLong2=5225.011570.6511659.4811622.9

das ist nicht so aussagekräftig

vielen dank und lieben gruss
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 +1. Es ist jetzt 23:26 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2021 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.
-----------------------------------------------------------------------------------------------------------------------------