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: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

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

Ich glaube, die beste Methode wäre

Buy/Sell wenn LC über beiden GDs. Close wenn LC unter/über schnellen GD. Oder besser über/unter beiden GDs?


Oder vielleicht große Charts (15M, vielleicht sogar 30M) und dann

Buy/Sell wenn schneller GD über/unter langsamen GD. Close wenn schneller GD=langsamer GD. Dann bräuchte man wieder schnelle GDs, die relativ dicht am Kurs liegen.

Hab mal ne Art Vergleich gemacht, wie groß und klein die Trends in verschiedenen Zeitfenstern sind. Wenn man innerhalb des Tages handeln will, wirft der M5 eigentlich genug ab. Was größeres als M15 brauch man als Daytrader eigentlich nicht.
  #112 (permalink)  
Alt 18.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hab in einem meiner 3 Bücher () ne interessante Strategie gelesen. Bei der ich mir nicht mehr so viele Sorgen wegen Seitwärtsbewegungen und Verlusten machen muss. Und zwar haben die, wenn ihre WP an Wert zulegten, einfach welche nach gekauft. Gewinne maximiert und Verluste waren dann bloß noch halb so schlimm.

Also:Nach jeden LC, der die Position wertvoller gemacht hat, soll
einfach eine einstellbare Menge an Lot nach gekauft werden. Wenn sie ins Minus geht nicht.


Als blödes Beispiel:

Währungspaar XY ist jetzt bei 100 Pips. Da steigt man ein mit 0.01 Lot. Kurze Zeit später schließt es bei 105 Pips und ist somit wertvoller geworden. Deswegen kauft man 0.01 Lot (einstellbar) nach. Nach dem nächsten LC ist es bei 110 Pip, hat also wieder an Wert zu genommen und man kauft wieder 0.01 Lot nach. Und immer so weiter, solange es bei jedem LC an Wert zugelegt hat. Etwas später schließt es bei 108 Pips. Da es nicht wertvoller geworden ist, kauft man dies mal nicht nach. Irgendwann wird die Order bei 106 Pips geschlossen, weil das Ausstiegs-Signal kam. Letztendlich konnte man 0.03 Lot gut machen, weil man bei jeder Wertsteigerung nach gekauft hat.

Könnte mir Jemand sowas einbauen? Mit einstellbarer Lot-Größe, um die nach gekauft werden soll natürlich. Dann könnte er das Maximum aus Gewinn-Trades raus holen und Verluste würden eigentlich keinen mehr interessieren.
  #113 (permalink)  
Alt 19.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Wär vielleicht doch nicht so gut.

Ist dieses Meisterstück des Programmierens richtig?

Code:
//Open Trade
   if (!IsInvested) {
      if (LC>GD1c && LC>GD2c && GD1c>GD2c) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
      if (LC<GD1c && LC<GD2c && GD1c<GD2c) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);
   }

//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<GD1c && LC<GD2c && GD1c<GD2c) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);
         }
         if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
            if(LC>GD1c && LC>GD2c && GD1c>GD2c) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);
  #114 (permalink)  
Alt 20.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Ist es machbar, dass er nach beiden GDs extra handelt?

Also z.B.:
Buy/Sell wenn LC</>FastGD

und gleichzeitig eine weitere Order wenn:
Buy/Sell wenn LC</>SlowGD


Die jeweils schließen wenns dann andersrum aussieht. Ist das möglich,
mehrere Orders zu öffnen/schließen, je nach dem wie und ob der Kurs
einen beider GDs gekreuzt hat? Dann könnte der Schnelle viele kurze
Trends mit nehmen und der Langsame den Tages-Trend oder so. Wo
der eine Verlust macht, macht der Andere Gewinn.
  #115 (permalink)  
Alt 20.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Keine Ahnung ob das ne gute Idee ist. Schätze mal, ich muss
das so machen, dass er sich beim Öffnen nen Order-Ticket ausdenkt
und sich beim schließen dann auf diese bezieht. Wie macht man das?

Edit:Oder reicht diese MagicNumber um ihn die richtige Order schließen zu lassen?

Edit:Jetzt fällt mir erst ein, dass der LC über/unter einem der GDs sein, aber in den Verlust gehn könnte. Also müsste er erst Orders öffnen, wenn er über/unter beiden GDs ist. Und dann seperat schließen, je nachdem welchen GD er überholt.

//Open Trade
if (!IsInvested) {
if (LC>GD1c && LC>GD2c) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
if (LC>GD1c && LC>GD2c) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
if (LC<GD1c && LC<GD2c) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);
if (LC<GD1c && LC<GD2c) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);
}

//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<GD1c) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);

if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
if(LC<GD2c) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);
}
if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
if(LC>GD1c) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);

if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
if(LC>GD2c) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);
}
}
}
}

return(0);

Geändert von MA-EA (20.02.16 um 15:16 Uhr)
  #116 (permalink)  
Alt 20.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Ist das richtig und logisch für den EA? Kapiert er, was er machen soll?

Code:
//Open Trade
   if (!IsInvested) {
      if (LC>GD1c && GD1c<GD2c) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
      if (LC>GD1c && LC>GD2c) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
      if (LC<GD1c && GD1c>GD2c) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);
      if (LC<GD1c && LC<GD2c) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);
   }

//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<GD1c) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);
         }  
         if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {            
            if(LC<GD2c) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);
         }
         if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
            if(LC>GD1c) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);
         }  
         if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {            
            if(LC>GD2c) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);
         } 
      }
    }    
   }
         
 return(0);
}
  #117 (permalink)  
Alt 20.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Wär wohl besser, jeder Order nen eindeutigen Namen zu geben, der
beim Exit-Befehl dann eindeutig zu geordnet werden kann. Bloß wie?

Da steht beim Öffnen irgendwo "Name", kann ich da irgendwie einen
bestimmen und den dann bei den Exit-Befehlen benutzen, damit er
immer genau weiß, welche Order zu schließen ist?

Also zum Beispiel:

Wenn
LC>FastGD && FastGD<SlowGD dann öffne Buy Order mit dem Name "Kreuzung mit schnellem GD"

oder wenn
LC>FastGD && LC>SlowGD dann öffne Buy Order mit dem Namen
"Kreuzung mit beiden GD"

Wenn dann die Gegebenheiten fürs Schließen da sind:

Wenn
Buy Order "Kreuzung mit schnellem GD" offen ist und
LC<FastGD dann schließe Order "Kreuzung mit schnellem GD"

und
wenn
Buy Order "Kreuzung mit langsamen GD" offen ist und
LC<slowGD dann schließe Order "Kreuzung mit beiden GD"

Wenn Ihr versteht, was ich meine.
  #118 (permalink)  
Alt 20.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hab eben mal das Ganze im Strategietester probiert. Er hat fast immer 2 Orders mit exakt dem gleichen Verlust angezeigt. Also entweder kann man pro WP nur eine Order öffnen, oder er muss jede Order eindeutig identifizieren können, um sie dann bei ihren jeweiligen Signalen korrekt schließen zu können.

Geht das? Kann man vielleicht die MagicNumber selbst vergeben? Oder der Order nen vor festgelegten Name geben?

Oder müssen vielleicht die Befehle umgeschrieben werden?

Also erst der OPEN in der ersten Zeile
in der nächsten Zeile gleich EXIT und Return.

Das für alle 4 OPEN- und EXIT-Bedingungen und Befehle.

Aber mit ner eindeutigen Bezeichnung der Order fährt man wohl besser. Es gibt ja auch irgendwie Bots, die immer wieder automatisch Orders in beide Richtungen abgeben. Ob die profitabel sind, soll jetzt mal egal sein. Also muss das mit meinem EA ja auch gehn. Wenn das funktioniert, dann wird praktisch mit jeder Order Gewinn gemacht. Der schnelle GD schnappt sich die schnellen Trends. Der Langsame schnappt sich die Langsamen und noch ein bißchen von den Schnellen. Wenn der eine wegen ner Seitwärtsphase auf der Stelle tritt, kann der Andere jeweils mit den großen oder den kleinen Trends noch was rausholen. Oder zumindest die Verluste verkleinern.
  #119 (permalink)  
Alt 22.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Kann Jemand was davon empfehlen? Oder vielleicht abraten?
  #120 (permalink)  
Alt 22.02.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Abend.

Hab ein bißchen rum probiert.

Wenns nix ausmacht:

Chart:M5
FastGD:18 und 30 (1,5 und 2,5 Stunden)
SlowGD:30 und 60 (2,5 und 5 Stunden)
Angehängte Dateien
Dateityp: ex4 Valerius_2GDv3-OpenFastGDCloseBeideGDs.ex4 (10,3 KB, 4x aufgerufen)
Dateityp: ex4 Valerius_2GDv3-OpenCloseBeideGDs.ex4 (10,4 KB, 3x aufgerufen)
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 18:37 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.
-----------------------------------------------------------------------------------------------------------------------------