Jump to content


Photo

Hilfe bei OrderCloseBy


  • Please log in to reply
12 replies to this topic

#1 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 38 posts
  • 88 thanks

Posted 19 September 2017 - 06:57 PM

Hallo alle Zusammen,

 

ich bastle mir grade ein Unterprogramm für das sofortige Schließen einer Order bei Gegensignal.

Sprich, wenn ich grade Long im Markt bin und etwas später einen Sell-Stop setze, der auch geschortet wird - soll die Long-Position sofort gelöscht werden.

 

Aber mit Schleifen hab ich so meine Probleme, daher brauche ich bitte eure Hilfe, da ich hier etwas zusammen gebastelt hab, was so gar nicht funktioniert.

//+------------------------------------------------------------------+//|========================OPPOSITE CLOSE============================|//+------------------------------------------------------------------+int OppositeClose() { int g,h;  for (g=Total-1; g>=0; g--) {  if (OrderSelect(g,SELECT_BY_POS,MODE_TRADES) == true)   if (OrderType()==OP_BUY || OrderType()==OP_SELL) {    for (h=Total-1; h>=0; h--) {     if(OrderSelect(h,SELECT_BY_POS,MODE_TRADES) == true)       if(OrderType()==OP_SELL) {       Oppoclose = OrderCloseBy(h+1,h,DarkOrange);       Print("Close SELL by Opposite"," Ordertype:",OrderType());       return(1);      }      if(OrderType()==OP_BUY) {       Oppoclose = OrderCloseBy(h+1,h,DarkOrange);       Print("Close BUY by Opposite"," Ordertype:",OrderType());       return(1);      }     }    }   }   return(0);  }

 


  • 0

Thanked by 2 Members:
whipsaw , Vola

#2 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,464 posts
  • 9645 thanks
  • Wohnsitz:BW

Posted 19 September 2017 - 08:30 PM

Hi , bin aus der Übung : Deine Variable (?)  "Total" ist vorher mit Orderstotal() belegt worden oder welchen Wert hat sie  ? Welche Fehlermeldungen bekommst Du denn überhaupt ? Grüße


  • 0
Do not trade alone

Thanked by 3 Members:
whipsaw , Vola , Forex1+

#3 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 38 posts
  • 88 thanks

Posted 19 September 2017 - 09:29 PM

achso, ja hab ich vergessen anzugeben. Ja 

Total = OrdersTotal();

Und hier rufe ich die Subroutine auf:

//+------------------------------------------------------------------+ //|=======================Check position=============================| //+------------------------------------------------------------------+ for (int i=0; i<Total; i++) {  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) {   if((OrderType() <= OP_SELLSTOP) && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {        //+------------------------Exit Buy-----------------------------+           if(OrderType() == OP_BUY) {     if(CloseOnOppositeSignal) OppositeClose();    }    //+------------------------Exit Sell----------------------------+    if(OrderType() == OP_SELL) {     if(CloseOnOppositeSignal)  OppositeClose ();    }   }  }}

Dieser Fehler wird ausgeben, sobald ich Long gehe und geht auch über die Short-Position hinaus.

Also sprich, gehe Long, kommt dieser Fehler, simuliere ich weiter und setzte einen Sell-Stop, woraus dann eine Short-Position wird, wird dieser Fehler weiterhin ausgelöst. Am Ende laufe ich mit beiden Positionen im Markt und im Looping wird andauernd dieser Fehler immer weiter ausgegeben.

und hier ist der fehler...

Attached Files


Edited by Gunner_Duck, 19 September 2017 - 09:30 PM.

  • 0

Thanked by 1 Member:
Vola

#4 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 287 posts
  • 1443 thanks

Posted 19 September 2017 - 09:50 PM

Der Error zeigt einen ungültigen Funktionsparameterwert. Prüfe vielleicht mal ob Funktionen wie zB. OrderCloseBy() auch immer die richtigen Ticketnummern bzw. Parameter bekommen.

 

Grüße


  • 0
It's a losing game, without passion !

Thanked by 3 Members:
whipsaw , Vola , Kleinerbroker

#5 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,464 posts
  • 9645 thanks
  • Wohnsitz:BW

Posted 19 September 2017 - 10:14 PM

Hi

 

Dr.Google antwortet auf Eingabe "ERROR 4015" wie folgt :

 

Wenn Du da suchst, dann kommt häufig ein Problem mit der LOTgrösse an die Oberfläche .

 

https://www.google.d.....0.WvOJRnkF8A0

 

 

Gucke doch mal, was da bei Dir drinnen steht ... welcher Wert wird übergeben, wenn zum Close durch Dein Prg aufgerufen wird ?

 

Hoffe hilft

Grüße & GN8

 

Wolfgang

 

PS.: anbei erster Schuss nur : https://www.forexfac...ad.php?t=557438


  • 0
Do not trade alone

Thanked by 2 Members:
whipsaw , Vola

#6 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 38 posts
  • 88 thanks

Posted 19 September 2017 - 10:19 PM

Also ich hab die Ticketnummer jetzt in die Schleife integriert - hab da ja was falsches abgefragt :-/

int OppositeClose() { int g,h;  for (g=Total-1; g>=0; g--) {  if (OrderSelect(g,SELECT_BY_POS,MODE_TRADES) == true)   if (OrderType()==OP_BUY || OrderType()==OP_SELL) {    for (h=Total-1; h>=0; h--) {     if(OrderSelect(h,SELECT_BY_POS,MODE_TRADES) == true)       if(OrderType()==OP_SELL) {       Oppoclose = OrderCloseBy(Ticket-1,Ticket,DarkOrange);       Print("Close SELL by Opposite"," Ordertype:",OrderType());       return(1);      }      if(OrderType()==OP_BUY) {       Oppoclose = OrderCloseBy(Ticket-1,Ticket,DarkOrange);       Print("Close BUY by Opposite"," Ordertype:",OrderType());       return(1);      }     }    }   }   return(0);}

Nun funktioniert es so wie ich will.

 

EDIT: Ach ne, klappt doch nicht. Also beim Short-Eintritt werden nun beide Orders geschlossen :-/

 

Trotzdem frage ich mich grade, ob OrderCloseBy die richtige Funktion ist für mein Anliegen!?

 

Weil ich jetzt trotzdem, dass es funktioniert, lauter solcher Fehler hier...

Attached Files


Edited by Gunner_Duck, 19 September 2017 - 10:27 PM.

  • 0

Thanked by 2 Members:
whipsaw , Vola

#7 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,464 posts
  • 9645 thanks
  • Wohnsitz:BW

Posted 19 September 2017 - 10:55 PM

ich bin noch nicht in Deinen Code eingestiegen aber Dr.Google führt mich u.a. hierher

 

https://book.mql4.com/appendix/errors

 

Und wenn ich da unter 4108 gucke, dann steht da Invalid Ticket ..... das interpretiere ich so, dass Du eine Ticketnummer schliessen möchtest , die der Terminal nicht kennt .

 

OrderCloseBy() kenne ich nicht, eine Order habe ich immer mit OrderDelete() geschlossen . Aber das findest Du im MQL4 Handbuch .....

 

GN8

Wolfgang


  • 0
Do not trade alone

Thanked by 2 Members:
whipsaw , Vola

#8 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,464 posts
  • 9645 thanks
  • Wohnsitz:BW

Posted 19 September 2017 - 11:01 PM

hier suchen : https://docs.mql4.com/trading

 

da steht, dass OrderCloseBy() eine geöffnete Order schliesst und zwar durch eine entgegengesetzte Order :  https://docs.mql4.com/trading/ordercloseby  ; da wird auch die Ticketnummer benötigt !

 

OrderDelete() schliesst eine Pending Order ... braucht auch die richtige Ticketnummer

 

musst Dich was durchsuchen

 

Wenn es nichts hilft, dann kommentiere aus und lasse Dir die Variablen ausgeben, dann können wir daraus weitersuchen

 

nun wirklich gn8 :-)


  • 0
Do not trade alone

Thanked by 1 Member:
whipsaw

#9 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 38 posts
  • 88 thanks

Posted 20 September 2017 - 09:58 AM

also, dass man mit orderdelete pendings löscht und mit orderclose positionen schließt, die aktuell im markt sind, weiß ich ja.

Deswegen hab ich ja die OrderCloseBy-Funktion gewählt.

 

 

Die Ticketnummer hab ich mir schon ausgeben lassen. Die Long-Position bekommt in dem Fall die #1 und der Sell-Stop bekommt die #2.

 

Was mich aber grade etwas stutzig macht ist die Fehlermeldung, dass "order 2 for OrderCloseBy function is not a market order".

 

Würde ja bedeuten, dass er die Order schon zu schließen versucht, wo sie noch nicht als Markt Order aktiviert ist.


  • 0

Thanked by 2 Members:
whipsaw , Vola

#10 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,464 posts
  • 9645 thanks
  • Wohnsitz:BW

Posted 20 September 2017 - 04:25 PM

so hört sich das an , ja . Wg orderdelete/orderclose wollte ich Dir nicht zu nahe treten . Versuche lediglich remote Tips zu geben, so gut wie es eben geht ( ohne Skype oder anderen Medien die direkte Kommunikation erlauben ) blush.gif  Grüße Wolfgang


  • 0
Do not trade alone

Thanked by 3 Members:
whipsaw , Vola , Gunner_Duck

#11 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,156 posts
  • 13596 thanks
  • Wohnsitz:O-Town

Posted 20 September 2017 - 04:33 PM

Ich würde da ganz anders ran gehen. Erst checken, ob ein Signal vorliegt und dann getrennt von der Richtung mich auch separat um die long und/oder short Orders kümmern.


  • 0

Marktgedanken - ...denn der Markt vergisst nie!

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , Vola

#12 Gunner_Duck

Gunner_Duck

    Runners

  • Addict
  • PipPip
  • 38 posts
  • 88 thanks

Posted 20 September 2017 - 06:37 PM

Wg orderdelete/orderclose wollte ich Dir nicht zu nahe treten . Versuche lediglich remote Tips zu geben, so gut wie es eben geht ( ohne Skype oder anderen Medien die direkte Kommunikation erlauben ) blush.gif  Grüße Wolfgang

 

nein, nein, alles gut, so hab ich das auch gar nicht aufgenommen ;-)

Bin so oder so für jeden Tipp dankbar.

 

 

Ich würde da ganz anders ran gehen. Erst checken, ob ein Signal vorliegt und dann getrennt von der Richtung mich auch separat um die long und/oder short Orders kümmern.

 

Könntest du mir bitte ein Beispielcode geben.


Edited by Gunner_Duck, 20 September 2017 - 06:40 PM.

  • 0

Thanked by 2 Members:
whipsaw , Vola

#13 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,156 posts
  • 13596 thanks
  • Wohnsitz:O-Town

Posted 20 September 2017 - 07:30 PM

Nö. Den hacke ich jetzt nicht hier rein. Kann aber die Tage gerne mal per Teamviewer oder Skype Dir das erklären.


  • 0

Marktgedanken - ...denn der Markt vergisst nie!

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , Vola



0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users