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: 4127
Beiträge: 38794
Benutzer: 6.415
Aktive Benutzer: 224
Links: 80
Wir begrüßen unseren neuesten Benutzer: Pedro2020
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 18:12).
Neue Benutzer:
vor 8 Stunden
- Pedro2020
vor 13 Stunden
- Code765
vor einem Tag
- trufx2895
vor einem Tag
- Ado
vor 2 Tagen
- Tradingfre...

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 80
Gesamt: 81
Team: 0
Team:  
Benutzer:  daybyter
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By MA-EA
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 4 Tagen
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 vor 3 Tagen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 715
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 vor 3 Tagen
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 vor 3 Tagen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 715
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 vor 3 Tagen
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 vor 2 Tagen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 715
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 vor 2 Tagen
Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 289
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 vor 2 Tagen
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 07:29 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.
-----------------------------------------------------------------------------------------------------------------------------