Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   OrderSelect (http://www.expert-advisor.com/forum/showthread.php?t=6307)

dd2509 11.01.19 21:38

OrderSelect
 
Hallo liebe Traderfreunde,

Ich brauche mal eine Tip, mein EA soll mit hilfe der Funktion OrderOpenPrice den Einstiegspreis der ersten geöffneten Order ermitteln und diesen dann für die folgenden Order zur Verfügung stellen.

input int TP = 20;
input int SL = 10;
input int SL1 =20;
input int TP1 =30;
int BUY;
double Price;
double Price1;
input double Distance=20;
int ticket;
double OP;


void OnTick()
{

if (OrderSelect(ticket, SELECT_BY_TICKET)==true);
{OP = OrderOpenPrice();
return;}

Price=Ask;
Price1=OP-Distance*Point;


if (OpenPosCount(BUY)==0){ticket=OrderSend(Symbol(), OP_BUY, 0.86, Price, 3,Price-SL*Point,Price+TP*Point, "MarketOrder", 123456, 0, Blue);
return(ticket);}
if (OpenPosCount(BUY)==1){OrderSend(Symbol(), OP_SELL, 1.35, Price1, 3, Price1+SL1*10*Point, Price1-TP1*10*Point, "MarketOrder", 12356, 0, Red);}
}

int OpenPosCount(int BUY)
{
int OffenePositionen=0;
for(int x=0;x<=OrdersTotal()-1;x++)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol())

OffenePositionen ++;
}
}
return(OffenePositionen);
}

MA-EA 12.01.19 09:10

Zitat:

Zitat von dd2509 (Beitrag 42016)
Hallo liebe Traderfreunde,

Ich brauche mal eine Tip, mein EA soll mit hilfe der Funktion OrderOpenPrice den Einstiegspreis der ersten geöffneten Order ermitteln und diesen dann für die folgenden Order zur Verfügung stellen.

:confused:

dd2509 12.01.19 23:45

ACHSO... Der Wert von OrderOpenPreis soll neu berechnet werden wenn OrdersTotal = 0 ist :)

MA-EA 13.01.19 04:39

Erklär bitte noch mal ganz genau, was das Ganze werden soll. :confused:

dd2509 13.01.19 04:54

jo
 
Also, ich eröffne eine Order, dann lasse ich über die Funktion OrderOpenPrice den Preis von der ersten Order ausgeben und weise ihn der Variablen OP zu .
Dann berechne ich das Einstiegslevel für eine zweite Order mit dem Preis der ersten Order. Das funktioniert auch bei der ersten Ausführung. Nun Löscht er aber die Variable nicht wenn alle Order geschlossen sind und eröffnet immer die zweite Order bei dem berechneten Preis der ersten Ausführung ...

Price =Ask;

Price1 = OP-(Distance*Point);
Price3 = OP;
if (OpenPosCount(BUY)==0){ticket=OrderSend(Symbol(), OP_BUY, 0.01, Price, 1,Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue);
return(ticket);}



if (OpenPosCount(BUY)==1){OrderSend(Symbol(), OP_SELL, 0.03, Price1, 1, Price1+SL1*10*Point, Price1-TP1*10*Point, "MarketOrder", 12356, 0, Red);}


int _OrdersTotal = OrdersTotal();
OP = 0.0;
for(int z = _OrdersTotal - 1;z >= 0; z --)
{
if
(OrderSelect(1, SELECT_BY_TICKET,MODE_TRADES)==true)

{ OP = OrderOpenPrice();}}


return(OP); }

MA-EA 13.01.19 10:50

Vermutlich wegen SelectbyTicket. Denn das Ticket ist ja von der ältesten Order. Probiers mit SelectbyPos,modehistory.

Aber ich bin eher noch als Einsteiger zu deklarieren. :rolleyes:

Leopold 13.01.19 10:57

Hallo,

einfach wenn die 2. Order ausgeführt wird setzt du den Wert OP auf z.B. 0. Bei der if-Abfrage baust du dann ein dass eine Order nur eröffnet werden darf wenn OP > 0 oder so ähnlich.

PS: (OrderSelect(1, SELECT_BY_TICKET,MODE_TRADES)==true) - verstehe ich nicht. Du willst doch immer nur die erste OFFENE Position abfragen oder? Ticketnummer gibt es immer nur einmal. Hier würdest du immer den OpenPrice der Order mit Ticketnummer 1 abfragen auch wenn diese geschlossen ist.

---Leopold---

dd2509 13.01.19 15:46

Ihr seid die Besten
 
Ihr hattet recht, es lag an Ticket.... Danke Jungs !!!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:21 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum