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: 4174
Beiträge: 39033
Benutzer: 6.462
Aktive Benutzer: 222
Links: 80
Wir begrüßen unseren neuesten Benutzer: Ele
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 18:12).
Neue Benutzer:
vor 2 Tagen
- Ele
vor 5 Tagen
- Tomico
vor einer Woche
- vishal
vor einer Woche
- damianator
vor einer Woche
- karsten_th...

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 67
Gesamt: 68
Team: 0
Team:  
Benutzer:  Stier
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By MA-EA
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 11.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 11
dd2509 befindet sich auf einem aufstrebenden Ast
Standard 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);
}
Mit Zitat antworten
  #2 (permalink)  
Alt 12.01.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 731
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dd2509 Beitrag anzeigen
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.
Mit Zitat antworten
  #3 (permalink)  
Alt 13.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 11
dd2509 befindet sich auf einem aufstrebenden Ast
Standard

ACHSO... Der Wert von OrderOpenPreis soll neu berechnet werden wenn OrdersTotal = 0 ist
Mit Zitat antworten
  #4 (permalink)  
Alt 13.01.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 731
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Erklär bitte noch mal ganz genau, was das Ganze werden soll.
dd2509 likes this.
Mit Zitat antworten
  #5 (permalink)  
Alt 13.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 11
dd2509 befindet sich auf einem aufstrebenden Ast
Standard 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); }
Mit Zitat antworten
  #6 (permalink)  
Alt 13.01.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 731
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #7 (permalink)  
Alt 13.01.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 306
Leopold befindet sich auf einem aufstrebenden Ast
Standard

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---
Mit Zitat antworten
  #8 (permalink)  
Alt 13.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 11
dd2509 befindet sich auf einem aufstrebenden Ast
Standard Ihr seid die Besten

Ihr hattet recht, es lag an Ticket.... Danke Jungs !!!!
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 +2. Es ist jetzt 11:10 Uhr.


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