OrderModify-fout
Page 1 of 634 123 ... LastLast
Results 1 to 10 of 31

Thread: OrderModify-fout

  1. #1
    Ik zit vast en weet niet zeker wat ik verkeerd doe.
    Mijn EA rapporteert een OrderModify-fout 1 op bijna elk vinkje.
    Ik probeer de EA ertoe te brengen een order te wijzigen wanneer de invoervariabele verandert van de OrderOpenPrice (), die oorspronkelijk is geopend met vermelding.

    De EA werkt correct en zal de volgorde aanpassen naar het juiste punt, maar hij probeert deze te wijzigen, zelfs als de invoer variabele == is voor zichzelf, of OrderOpenPrice ().

    In het verleden om waarden te controleren heb ik een afdruk (invoer) geplaatst; and Print (OrderOpenPrice ()); direct na if (entry! = OrderOpenPrice ()) {en het probeert nog steeds mijn ordermodify-statement uit te voeren, zelfs als beide == zijn voor elkaar.

    Wat doe ik verkeerd?
    Dank je
    Hier is de code die ik over dit probleem heb.


    Ingevoegde code int totalorders = OrdersTotal (); for (int i = totalorders-1; igt; = 0; i--) {OrderSelect (i, SELECT_BY_POS); if (OrderSymbol () == Symbol () OrderType () == OP_SELLSTOP RiskManagement == true) {if (entry! = OrderOpenPrice ()) {OrderModify (OrderTicket (), entry, stoploss, takeprofit, 0,0); }} if (OrderSymbol () == Symbol () OrderType () == OP_SELLSTOP RiskManagement == false) {if (entry! = OrderOpenPrice ()) {OrderModify (OrderTicket (), entry, entry (StopLossPips * Point), vermelding - (TakeProfitPips * Point), 0,0); }

    Ik vond het antwoord op mijn fout, bij het vergelijken van doubles is het het beste om lt; gt; in plaats van! =.
    De jongens op MQL4-forums hielpen me met dit probleem.
    Bedankt

  2. #2
    Controleer de waarden van uw variabelen tijdens uw programma-afloop.

  3. #3

    Quote Originally Posted by ;
    Controleer de waarden van uw variabelen tijdens uw programma-afloop.
    Ik deed dat en dit is wat het terugkrijgt 10:53:11 2008.11.13 12:00 work181 GBPUSD, H4: 1.5494 10:53:11 2008.11.13 12:00 work181 GBPUSD, H4: 1.5494 10:53:11 2008.11 .13 12:00 work181 GBPUSD, H4: OrderModify-fout 1 de 1.5494 is de invoer- en openorderprijs. mijn functie is onder: if (NormalizeDouble (entry, 4)! = OrderOpenPrice ()) {OrderModify (OrderTicket (), entry, stoploss, takeprofit, 0,0); het bereikt nog steeds de verklaring van de if-functie op elk vinkje, terwijl dit niet zou moeten gebeuren omdat zowel entry als orderopenprice () exact hetzelfde zijn. Ik weet niet waarom het dit doet.

  4. #4
    Ik weet niet zeker hoe de 'invoer' prijs wordt berekend, maar breid het uit naar meer decimalen, doe hetzelfde voor de orderinvoerprijs. Ik vermoed dat er daar minieme verschillen zullen zijn waarvoor beide waarden moeten worden genormaliseerd.

  5. #5
    Waarom NormalizeDouble (invoer, 4) ...? Waarom niet NormalizeDouble (invoer, Cijfers) ...? Weet je zeker dat het een 4-cijferig account is? Wat betreft de variabele OrderOpenPrice (), zou ik aannemen dat deze is opgegeven in cijfers, maar ik kan me vergissen?

  6. #6

    Quote Originally Posted by ;
    Ik weet niet zeker hoe de 'invoer' prijs wordt berekend, maar breid het uit naar meer decimalen, doe hetzelfde voor de orderinvoerprijs. Ik vermoed dat er daar minieme verschillen zullen zijn waarvoor beide waarden moeten worden genormaliseerd.
    entry en entry1 worden berekend door een aantal indiors. Ik ben niet helemaal zeker waarom dit niet werkt, als je de onderstaande code bekijkt. mijn sellstop-bestellingen bereiken de afdrukfuncties niet bij het invoeren van == orderopenprice (). lt; --- dus dit betekent dat het correct werkt voor de sellstop-bestellingen. wanneer het programma de buystop-orders bereikt, bereikt het de printfuncties zelfs wanneer entry1 == orderopenprice (). lt; --- dit werkt niet correct. Code # 91 ingevoegd; kleur = # 0000ff # 93; int # 91;color # 93; totalorders = # 91; kleur = # 8a2be2 # 93; OrdersTotal # 91;color # 93; (); # 91; kleur = # 0000ff # 93; voor # 91;kleur # 93; (# 91; kleur = # 0000ff # 93; int # 91;color # 93; i = totalorders- # 91; kleur = # 008000 # 93; 1 # 91;color # 93 ;; igt; = # 91; color = # 008000 # 93; 0 # 91;color # 93 ;; i--) {# 91; color = # 8a2be2 # 93 ; OrderSelect # 91;color # 93; (i, SELECT_BY_POS); # 91; color = # 0000ff # 93, # 91 als;kleur # 93; (OrderSymbol () == # 91; color = # 8a2be2 # 93; Symbol # 91;color # 93; () OrderType () == OP_SELLSTOP RiskManagement == true) {# 91; color = # 0000ff # 93; if # 91;kleur # 93; (# 91; kleur = # 8a2be2 # 93; Normalize Dubbel # 91;kleur # 93; (invoer, # 91; kleur = # 008000 # 93; 4 # 91;kleur # 93! = OrderOpenPrice ()) { # 91; color = # 8a2be2 # 93; Print # 91;kleur # 93; (# 91; color = # 8a2be2 # 93; NormalizeDouble # 91;kleur # 93, (invoer, # 91; color = # 008000 # 93; 4 # 91;kleur # 93); # 91; color = # 8a2be2 # 93, # 91 Print;kleur # 93; (OrderOpenPrice ()); OrderModify (OrderTicket (), ingang, stoploss, takeprofit, # 91; color = # 008000 # 93; 0 # 91;kleur # 93,, # 91; color = # 008000 # 93; 0 # 91;kleur # 93 ; }} # 91; kleur = # 0000ff # 93; als # 91;kleur # 93; (OrderSymbol () == # 91; color = # 8a2be2 # 93; Symbol # 91;color # 93; () OrderType () == OP_SELLSTOP RiskManagement == false) {# 91; color = # 0000ff # 93; if # 91;kleur # 93; (# 91; kleur = # 8a2be2 # 93; Normalize Dubbel # 91;kleur # 93; (invoer, # 91; kleur = # 008000 # 93; 4 # 91;kleur # 93! = OrderOpenPrice ()) { OrderModify (OrderTicket (), ingang, ingang (StopLossPips * # 91; color = # 8a2be2 # 93; Point # 91;kleur # 93, entry (TakeProfitPips * # 91; color = # 8a2be2 # 93; Point # 91;kleur # 93, # 91; color = # 008000 # 93; 0 # 91;kleur # 93,, # 91; color = # 008000 # 93; 0 # 91;kleur # 93; }} # 91; kleur = # 0000ff # 93; als # 91;kleur # 93; (OrderSymbol () == # 91; color = # 8a2be2 # 93; Symbol # 91;color # 93; () OrderType () == OP_BUYSTOP RiskManagement == true) {# 91; color = # 0000ff # 93; if # 91;kleur # 93; (# 91; kleur = # 8a2be2 # 93; Normalize Dubbel # 91;kleur # 93; (entry1, # 91; color = # 008000 # 93; 4 # 91;color # 93! = OrderOpenPrice ()) { # 91; color = # 8a2be2 # 93; Print # 91;kleur # 93; (# 91; color = # 8a2be2 # 93; NormalizeDouble # 91;kleur # 93, (entry1, # 91; color = # 008000 # 93; 4 # 91;kleur # 93); # 91; color = # 8a2be2 # 93, # 91 Print;kleur # 93; (OrderOpenPrice ()); OrderModify (OrderTicket (), entry1, stoploss1, takeprofit1, # 91; color = # 008000 # 93; 0 # 91;kleur # 93,, # 91; color = # 008000 # 93; 0 # 91;kleur # 93 ; }} # 91; kleur = # 0000ff # 93; als # 91;kleur # 93; (OrderSymbol () == # 91; color = # 8a2be2 # 93; Symbol # 91;color # 93; () OrderType () == OP_BUYSTOP RiskManagement == false) {# 91; color = # 0000ff # 93; if # 91;kleur # 93;(# 91; kleur = # 8a2be2 # 93; Normalize Dubbel # 91;kleur # 93; (entry1, # 91; color = # 008000 # 93; 4 # 91;color # 93! = OrderOpenPrice ()) { OrderModify (OrderTicket (), entry1, entry1- (StopLossPips * # 91; color = # 8a2be2 # 93; Point # 91;kleur # 93, entry1 (TakeProfitPips * # 91; color = # 8a2be2 # 93; Point # 91;kleur # 93, # 91; color = # 008000 # 93; 0 # 91;kleur # 93,, # 91; color = # 008000 # 93; 0 # 91;kleur # 93; }}

  7. #7

    Quote Originally Posted by ;
    Waarom NormalizeDouble (invoer, 4) ...? Waarom niet NormalizeDouble (invoer, Cijfers) ...? Weet je zeker dat het een 4-cijferig account is? Wat betreft de variabele OrderOpenPrice (), zou ik aannemen dat deze is opgegeven in cijfers, maar ik kan me vergissen?
    het is een 4-cijferige account, dus cijfers of 4 moeten beide werken. Ik probeer nu al een week te programmeren en ben niet bekend met alle verschillende beschikbare functies.

  8. #8
    Oh, op welk punt zeg je entry = OrderOpenPrice () ...? Omdat als je dat eenmaal doet, de twee exact zouden moeten zijn (of, ik heb hier nooit een probleem gehad), en zou het niet nodig moeten zijn om het te normaliseren. En natuurlijk is er een goede kans dat ze niet langer exact zijn, en dit kan de oorzaak zijn van de fout. Als u dit normaliseert, rondt het het getal hoger of lager in en als de variabele OrderOpenPrice () verder wordt uitgevoerd, krijgt u een probleem.

  9. #9

    Quote Originally Posted by ;
    Oh, op welk punt zeg je entry = OrderOpenPrice () ...? Omdat als je dat eenmaal doet, de twee exact zouden moeten zijn (of, ik heb hier nooit een probleem gehad), en zou het niet nodig moeten zijn om het te normaliseren. En, natuurlijk als je dat eenmaal doet, zullen ze niet exact zijn, en dit zou de oorzaak kunnen zijn van de fout.
    Sorry, ik kan zien hoe mijn formulering in de vorige post verwarrend kan zijn. wat ik zei is dat als mijn ingangsvariabele gelijk is aan de openstaande prijs van de openstaande bestellingen, deze functie hieronder niet naar zijn verklaring mag gaan. (correct ??) if (NormalizeDouble (entry, 4)! = OrderOpenPrice ()) Dit werkt nu correct op sellstop-orders, maar wanneer het programma de buystop-orders bereikt met exact dezelfde functie, met uitzondering van de variabele, die is veranderd naar entry1, het kijkt naar if (NormalizeDouble (entry1,4)! = OrderOpenPrice ()) en gaat verder met de instructie die de volgorde bij elk vinkje moet wijzigen, omdat het deel van de order dat het wijzigt de entry1 is en entry1 is al gelijk aan zichzelf, het geeft ordermodifiiefouten terug 1 hoop dat dit logisch is

  10. #10
    Waarom kan je niet gewoon proberen ... if (entry! = OrderOpenPrice () ...? Als je, zoals je zegt, allebei 4 cijfers hebt, is het niet nodig om het te normaliseren. Of, als ze geen 4 cijfers zijn (en zijn groter), dan door te verklaren dat entry = OrderOpenPrice () zou moeten dekken. Dat betekent natuurlijk niet dat er geen instanties zijn waar je cijfers moet normaliseren, maar hier niet, denk ik niet. heeft gelijk, en je zou iets moeten doen als ... if (NormalizeDouble (entry, 4)! = NormalizeDouble (OrderOpenPrice (), 4)) ... Of het kan beter zijn om het naar het volgende cijfer uit te voeren als , zoals hij zegt, er is de geringste variatie tussen de twee.

Similar Threads

  1. MT4 Metatrade-fout?
    By alvaroabm in forum Cryptocurrencies
    Replies: 3
    Last Post: 18:54,
  2. DLL-fout 126
    By jpdraz in forum Cryptocurrencies
    Replies: 1
    Last Post: 12:53,

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.