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: 4972
Beiträge: 43246
Benutzer: 7.217
Aktive Benutzer: 85
Links: 84
Wir begrüßen unseren neuesten Benutzer: DFeck
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- DFeck
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 96
Gesamt: 96
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree5Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #201 (permalink)  
Alt 27.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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.
Angehängte Grafiken
Dateityp: jpg or_Zeichen.jpg (205,1 KB, 3x aufgerufen)
  #202 (permalink)  
Alt 27.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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

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);}}}}
  #203 (permalink)  
Alt 27.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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);}}}}

Geändert von MA-EA (27.03.16 um 22:31 Uhr)
  #204 (permalink)  
Alt 27.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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);}}}}
  #205 (permalink)  
Alt 29.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Moin.

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

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.
  #206 (permalink)  
Alt 29.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

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.
  #207 (permalink)  
Alt 29.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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);
  #208 (permalink)  
Alt 29.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

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?
  #209 (permalink)  
Alt 29.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Gar nicht. War da nicht mehr ganz wach. 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.
  #210 (permalink)  
Alt 29.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

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.
Thema geschlossen

Lesezeichen

Stichworte
expert advisor, gleitender durchschnitt, mql4, programmierung, programmierung metatrader, programmierung mql4, trading

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 +1. Es ist jetzt 10:55 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------