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)
-   -   Automatisches Trading mit 2 GDs (http://www.expert-advisor.com/forum/showthread.php?t=4468)

MA-EA 27.03.16 15:09

Liste der Anhänge anzeigen (Anzahl: 1)
Soviel ich weiß, muss man ab 0:00 Uhr over Night Gebühren oder sowas zahlen. Das würde ich gerne vermeiden, in dem er zu bestimmten Uhrzeiten alle offenen Positionen, sofern vorhanden, automatisch schließt.

Keine Ahnung ob das so richtig ist:

Code:

extern string Close_all_Orders_after = "23:50:00";
extern string Close_all_Orders_before = "23:55:00";

Code:

datetime A = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Close_all_Orders_after);
datetime B = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Close_all_Orders_before);

Ist das mit dem Order schließen so besser? Bzw. überhaupt richtig?
Code:

//Close Trade
if (IsInvested){
for (i=OrdersTotal()-1; i>=0; i--){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC<MA1 && MA1<MA2) || (TC>A && TC<B)) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);}

if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC>MA1 && MA1>MA2) || (TC>A && TC<B)) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);}}}}

Und ist "||" als Zeichen für "oder/or" richtig?

Edit: das Zeit gesteuerte schließen sollte man wohl besser optional einbaun mit "bool" true/false.

MA-EA 27.03.16 20:24

Hier mein Versuch, alle Orders zu bestimmten Zeiten zu schließen. Keine Ahnung ob das funktioniert. :rolleyes:

Code:

//Globale Variablen
//Open Time
extern string Open_Orders_From = "08:00:30";
extern string Open_Orders_Till = "17:01:00";
extern string Always = "Open always if both 00:00:00";
//Close Time
extern string TF = "true=Yes/false=No";
extern bool Close_all_Orders_after_Time_O_Clock = true;
extern string Close_all_Orders_after = "23:50:00";
extern bool Close_all_Orders_before_Time_O_Clock  = true;
extern string Close_all_Orders_before = "23:55:00";

Code:

datetime CA = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Close_all_Orders_after);
datetime CB = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Close_all_Orders_before);
bool CAA = (Close_all_Orders_after_Time_O_Clock);
bool CAB = (Close_all_Orders_before_Time_O_Clock);

Code:

if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC<MA1 && MA1<MA2) || (CAA=true && TC>CA) || (CAB=true && TC<CB)) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);}

if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC<MA1 && MA1<MA2) || (CAA=true && TC>CA) || (CAB=true && TC<CB)) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);}}}}


MA-EA 27.03.16 22:08

Ich glaube, beim Schließen war ein logischer Fehler drin. So müsste es richtig sein:

Code:

if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC<MA1 && MA1<MA2) || (CAA=true && TC>CA) || (CAA==true && TC>CA && CAB==true && TC<CB)) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);}

if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC>MA1 && MA1>MA2) || (CAA=true && TC>CA) || (CAA==true && TC>CA && CAB==true && TC<CB)) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);}}}}


MA-EA 27.03.16 23:09

So müsste es eigentlich reichen
Code:

if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC<MA1 && MA1<MA2) || (CAA=true && TC>CA)) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);}

if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if ((LC>MA1 && MA1>MA2) || (CAA=true && TC>CA)) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);}}}}


MA-EA 29.03.16 02:01

Moin.

Ich versuche gerade, sowas wie eine Vola-Berechnung zu
programmieren. Allerdings erfolglos. :rolleyes:

Eigentlich ist es einfach:

1. PRICE_HIGH - PRICE_CLOSE
2. PRICE_CLOSE - PRICE_LOW

Alles Kerze 1.

Wenn er dann Buy oder Sell machen will, soll er abfragen, welches Ergebnis größer ist. Und nur dann soll er in die entsprechende Richtung eine Order öffnen.

ralfbenker 29.03.16 02:37

Nimm doch gleich die ATR. Guck dir mal die iATR() Funktion an.
iATR(eine Periode)/iATR(zwei Perioden) >1

Da sparst Du Dir das manuelle Rechnen.

MA-EA 29.03.16 04:06

Den ATR muss er auch erst mal berechnen.

Ist das alles richtig geschrieben? Kann er damit ohne Probleme arbeiten?
Code:

//Kurs
double LC = iClose(Symbol(), TimeFrame, 1);
double H = iHigh(Symbol(), TimeFrame, 1);
double L = iLow(Symbol(), TimeFrame, 1);

//HCL Berechnung
double HC = H-LC;
double CL = LC-L;

//Open
double O0 = iOpen(Symbol(), TimeFrame, 0);
double O1 = iOpen(Symbol(), TimeFrame, 1);


ralfbenker 29.03.16 06:46

Die Berechnungen sind richtig. Aber ich versteh nicht so ganz wie du da ne Vola rauskriegen willst.
Nehmen wir an du hast ne positive Kerze H/L/O/C 10/5/6/9
Das Ergebnis wäre HC =1 CL=4

Wäre dieselbe Kerze negativ also 10/5/9/6 dann hättest du
HC = 4 und LC = 1

Ändert sich die Größe des Kerzenkörpers änderen sich HC und LC genau entgegengesetzt. Und wie berechnest du daraus ne Vola?

MA-EA 29.03.16 08:53

Gar nicht. War da nicht mehr ganz wach. :rolleyes: Wollte bloß berechnen lassen, obs stärker nach unten oder oben geht. Ne Vola-Berechnung hab ich noch
extra programmiert. Hoffentlich funktionier das alles auch.

MA-EA 29.03.16 15:21

Hallo.

Das mit der Vola scheint nix zu bringen, weil die auch bei nem
Trend <> als bei der Kerze davor sein kann.

Zu prüfen, ob Abstand zwischen High und Close <>
als Abstand zwischen Close und Low ist, scheint auch nicht zu helfen.

Deswegen hab ich die Beiden Funktionen rausgenommen. Und einen
Vergleich eingefügt, ob Open Kerze 0 <> Open Kerze 1 ist. Und
ob Close Kerze 1 <> Close Kerze 2 ist. Ich frag mich, ob man auch
Kerze 3 und vielleicht Kerze 4 vergleichen sollte. Da er sowieso aufs
Schneiden der GDs (2, 4, 8) warten muss, hätte man vielleicht noch etwas mehr Sicherheit, dass es kein Seitwärtstrend ist. :confused:


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:16 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