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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3819
Beiträge: 36908
Benutzer: 6.066
Aktive Benutzer: 490
Links: 80
Wir begrüßen unseren neuesten Benutzer: flowi88
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 5 Stunden
- flowi88
vor 5 Stunden
- dealtycoon
vor 10 Stunden
- VicenteWuc
vor 13 Stunden
- sazaron
vor 17 Stunden
- MalcolmBun

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 60
Gesamt: 61
Team: 0
Team:  
Benutzer:  beabro60
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 13.05.16
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 17
oli44 befindet sich auf einem aufstrebenden Ast
Standard MT4 Order Pool funktioniert nicht richtig!?

Hallo Zusammen,

bin grad der Verzweiflung nahe und bräuchte eine Erklärung die mein Weltbild in MQL4 wieder gerade rückt! Zu meinem EA (eigentlich nichts kompliziertes):

Er eröffnet 6 Währungspaare welche zusämmenhängend permanent auf Gewinn / Verlust überprüft werden sollen:

EURUSD / GBPUSD / USDCHF / USDCAD / NZDUSD / AUDUSD
0 1 2 3 4 5

Dabei werden folgende korrelierende Paare geprüft:

(EURUSD/GBPUSD) , (USDCHF/USDCAD) , (NZDUSD/AUDUSD)

Ein solches zusammenhängendes Paar nenne ich einen "Basket" (Korb).

Sollte z.B. der Basket (USDCHF/USDCAD) im Profit von x-Euro sein, so wird
das Paar USDCHF geschlossen und danach sofort wieder eröffnet. Weiters
wird dann auch das Paar USDCAD sofort geschlossen und dann wieder eröffnet. Also kurz gesagt: der Basket geschlossen und dann wieder eröffnet.

Sollte der Basket im Verlust von y-Euro sein, wird er wie auch oben beschrieben geschlossen.

Somit werden also ständig alle Basket´s überprüft.

Soweit zur Erklärung der Handelslogik. Die Umsetzung in MQL4 fand ich mittelts verschachtelter Schleifen nicht sonderlich schwierig. Die einzelnen Order werden mittels OrderSelect(Counter,SELECT_BY_POS) aus dem OrderPool selektiert.

Allerdings fiel mir bei einem Durchlauf auf, das mein EA die Baskets nicht wieder im richtigen Zusammenhang in den OrderPool aufnimmt, die Baskets werden demnach "auseinandergebrochen". Somit kann der EA diese dann nachfolgend nicht mehr korrekt überprüfen.

Anbei ein Auszug meines EA´s (Hauptteil der Handelslogik):

/////////// Begin of trading block /////////

// EA Trade logic ...


// Bevor Counter for-Schleife laufen darf muss geprüft werden, ob OrderCount > 0 && OrderCount = gerade ist
// Sonst haben wir keine Baskets, ein Basket besteht immer aus zwei Paaren
// Mathmod überprüft ob die Anzahl der Positionen geradzahlig ist (Division durch 2 = Rest 0) nur dann
// haben wir eine vollständige Anzahl von Baskets

if(OrdersTotal() >= 2 && MathMod(OrdersTotal(),2) == 0 && IsConnected() == true)
{
for(int Counter = 0; Counter <= OrdersTotal()-2; Counter+=2)
{
// Durchlaufe Orderpool und prüfe ob ein Basket im Profit (Profit >= CashWin) oder Verlust (Profit <= CashLoss) liegt

Selected = false;
while(Selected == false)
{
Selected = OrderSelect(Counter,SELECT_BY_POS);
}
OrderProfit_1 = OrderProfit() - ( OrderCommission() + OrderSwap() );

Selected = false;
while(Selected == false)
{
Selected = OrderSelect(Counter+1,SELECT_BY_POS);
}
OrderProfit_2 = OrderProfit() - ( OrderCommission() + OrderSwap() );

// Prüfe ob Basket im Profit (Profit >= CashWin) liegt

if(OrderProfit_1 + OrderProfit_2 >= CashWin || OrderProfit_1 + OrderProfit_2 <= CashLoss)
{
// Basket wird nun gecashed und danach sofort ein neues gleichwertiges Basket eröffnet
BasketCount++;
if(OrderProfit_1 + OrderProfit_2 >= CashWin) {WinBasketCount++;CashWin += 0.1;CashLoss += 0.1; if(CashLoss >= -0.1){CashLoss = -1.0;}} // Bei Gewinn ziehen wir unseren CashLoss (um x Cent) zusammen (max. bis -0.1 Cent)
if(OrderProfit_1 + OrderProfit_2 <= CashLoss) {LossBasketCount++;CashWin -= 0.1;CashLoss -= 0.1;} // Bei Verlust weiten wir unseren CashLoss (um x Cent) aus

Print("Counter by Cash = ",Counter);
Print("CashLoss = ",CashLoss);
Print("CashWin = ",CashWin);

for(int i = 1; i <= 2; i++)
{
Selected = false;
while(Selected == false)
{
Selected = OrderSelect(Counter,SELECT_BY_POS);
if(Selected == true) Print("Order Selected to close by Counter = ",Counter);
CurrencySymbol = OrderSymbol();
OrderTicketNumber = OrderTicket();
}

// Unterscheide nun ob Position eine buy oder sell Order ist
if(OrderType() == OP_BUY)
{
Closed = false;
while(Closed == false)
{
Closed = CloseBuyOrder(CurrencySymbol,OrderTicketNumber,Sli ppage);
}

if(Closed)
{
// Print("Order closed : ", CurrencySymbol);
// Neue identische buy Order wird eröffnet
Opened = false;
while(Opened == false)
{
Opened = OpenBuyOrder(CurrencySymbol,LotSize,Slippage,Magic Number);
}

// if(Opened) Print("Order opened : ", CurrencySymbol);
}
}

else if(OrderType() == OP_SELL)
{
Closed = false;
while(Closed == false)
{
Closed = CloseSellOrder(CurrencySymbol,OrderTicketNumber,Sl ippage);
}

if(Closed)
{
// Print("Order closed : ", CurrencySymbol);
// Neue identische sell Order wird eröffnet
Opened = false;
while(Opened == false)
{
Opened = OpenSellOrder(CurrencySymbol,LotSize,Slippage,Magi cNumber);
}

// if(Opened) Print("Order opened : ", CurrencySymbol);
}
}
}
// Counter wird um 2 reduziert, da nach löschen des Baskets die Indizes der neueren Order den Platz der gelöschten Order einnehmen (nachrutschen)
// Diese Position muss also erneut geprüft werden, ansonsten würden Baskets ausgelassen !
Counter -= 2;
}
}
}

/////////// End of trading block ///////////

Nun die Logdatei eines Programmlaufs:



0 04:19:35.202 Expert Correlation.Casher.06.05.2016 EURUSD,H4: loaded successfully
0 04:19:41.491 Correlation.Casher.06.05.2016 EURUSD,H4 inputs: RiskLimit=5000.0; CashWin=2.0; CashLoss=-2.0; LotSize=0.01; UseMessage=true; SendWaitTime=7200; Slippage=5; MagicNumber=123;
2 04:19:42.001 Correlation.Casher.06.05.2016 EURUSD,H4: open #88462415 sell 0.01 EURUSD at 1.13893 ok
2 04:19:42.412 Correlation.Casher.06.05.2016 EURUSD,H4: open #88462416 buy 0.01 GBPUSD at 1.44503 ok
2 04:19:42.622 Correlation.Casher.06.05.2016 EURUSD,H4: open #88462417 buy 0.01 USDCHF at 0.97397 ok
2 04:19:42.853 Correlation.Casher.06.05.2016 EURUSD,H4: open #88462418 sell 0.01 USDCAD at 1.29337 ok
2 04:19:43.123 Correlation.Casher.06.05.2016 EURUSD,H4: open #88462419 buy 0.01 NZDUSD at 0.68013 ok
2 04:19:43.383 Correlation.Casher.06.05.2016 EURUSD,H4: open #88462420 sell 0.01 AUDUSD at 0.73491 ok
0 04:19:43.383 Correlation.Casher.06.05.2016 EURUSD,H4: initialized
0 08:09:37.839 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 2
0 08:09:37.839 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -1.9
0 08:09:37.839 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 2.1
0 08:09:37.839 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 2
2 08:09:38.329 Correlation.Casher.06.05.2016 EURUSD,H4: close #88462417 buy 0.01 USDCHF at 0.97397 at price 0.97332
2 08:09:38.630 Correlation.Casher.06.05.2016 EURUSD,H4: open #88468174 buy 0.01 USDCHF at 0.97351 ok
0 08:09:38.630 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 2
2 08:09:39.201 Correlation.Casher.06.05.2016 EURUSD,H4: close #88462418 sell 0.01 USDCAD at 1.29337 at price 1.28953
2 08:09:39.551 Correlation.Casher.06.05.2016 EURUSD,H4: open #88468175 sell 0.01 USDCAD at 1.28947 ok
0 09:04:10.635 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 4
0 09:04:10.635 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -2.0
0 09:04:10.635 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 2.0
0 09:04:10.635 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 09:04:10.895 Correlation.Casher.06.05.2016 EURUSD,H4: close #88468174 buy 0.01 USDCHF at 0.97351 at price 0.97282
2 09:04:11.286 Correlation.Casher.06.05.2016 EURUSD,H4: open #88473926 buy 0.01 USDCHF at 0.97306 ok
0 09:04:11.286 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 09:04:11.646 Correlation.Casher.06.05.2016 EURUSD,H4: close #88468175 sell 0.01 USDCAD at 1.28947 at price 1.29133
2 09:04:11.867 Correlation.Casher.06.05.2016 EURUSD,H4: open #88473928 sell 0.01 USDCAD at 1.29115 ok
0 09:10:03.372 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 2
0 09:10:03.372 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -2.1
0 09:10:03.372 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 1.9
0 09:10:03.372 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 2
2 09:10:03.903 Correlation.Casher.06.05.2016 EURUSD,H4: close #88462416 buy 0.01 GBPUSD at 1.44503 at price 1.44366
2 09:10:04.183 Correlation.Casher.06.05.2016 EURUSD,H4: open #88474791 buy 0.01 GBPUSD at 1.44393 ok
0 09:10:04.183 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 2
2 09:10:04.434 Correlation.Casher.06.05.2016 EURUSD,H4: close #88462419 buy 0.01 NZDUSD at 0.68013 at price 0.67906
2 09:10:05.465 Correlation.Casher.06.05.2016 EURUSD,H4: open #88474796 buy 0.01 NZDUSD at 0.67925 ok
0 09:54:01.936 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 2
0 09:54:01.936 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -2.2
0 09:54:01.936 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 1.8
0 09:54:01.936 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 2
2 09:54:03.669 Correlation.Casher.06.05.2016 EURUSD,H4: close #88474791 buy 0.01 GBPUSD at 1.44393 at price 1.44172
2 09:54:06.252 Correlation.Casher.06.05.2016 EURUSD,H4: open #88482393 buy 0.01 GBPUSD at 1.44198 ok
0 09:54:06.252 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 2
2 09:54:07.174 Correlation.Casher.06.05.2016 EURUSD,H4: close #88474796 buy 0.01 NZDUSD at 0.67925 at price 0.67897
2 09:54:07.374 Correlation.Casher.06.05.2016 EURUSD,H4: open #88482397 buy 0.01 NZDUSD at 0.67914 ok
0 10:12:19.514 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 4
0 10:12:19.514 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -2.1
0 10:12:19.514 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 1.9
0 10:12:19.514 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 10:12:20.726 Correlation.Casher.06.05.2016 EURUSD,H4: close #88482393 buy 0.01 GBPUSD at 1.44198 at price 1.44333
2 10:12:22.759 Correlation.Casher.06.05.2016 EURUSD,H4: open #88484788 buy 0.01 GBPUSD at 1.44352 ok
0 10:12:22.759 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 10:12:22.949 Correlation.Casher.06.05.2016 EURUSD,H4: close #88482397 buy 0.01 NZDUSD at 0.67914 at price 0.67988
2 10:12:24.351 Correlation.Casher.06.05.2016 EURUSD,H4: open #88484794 buy 0.01 NZDUSD at 0.68000 ok
0 10:20:25.874 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 4
0 10:20:25.874 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -2.2
0 10:20:25.874 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 1.8
0 10:20:25.874 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 10:20:26.104 Correlation.Casher.06.05.2016 EURUSD,H4: close #88484788 buy 0.01 GBPUSD at 1.44352 at price 1.44238
2 10:20:26.605 Correlation.Casher.06.05.2016 EURUSD,H4: open #88485593 buy 0.01 GBPUSD at 1.44254 ok
0 10:20:26.605 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 10:20:27.706 Correlation.Casher.06.05.2016 EURUSD,H4: close #88484794 buy 0.01 NZDUSD at 0.68000 at price 0.67874
2 10:20:27.907 Correlation.Casher.06.05.2016 EURUSD,H4: open #88485597 buy 0.01 NZDUSD at 0.67886 ok
0 10:34:08.396 Correlation.Casher.06.05.2016 EURUSD,H4: Counter by Cash = 4
0 10:34:08.396 Correlation.Casher.06.05.2016 EURUSD,H4: CashLoss = -2.3
0 10:34:08.396 Correlation.Casher.06.05.2016 EURUSD,H4: CashWin = 1.7
0 10:34:08.396 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 10:34:09.438 Correlation.Casher.06.05.2016 EURUSD,H4: close #88485593 buy 0.01 GBPUSD at 1.44254 at price 1.44078
2 10:34:11.351 Correlation.Casher.06.05.2016 EURUSD,H4: open #88487328 buy 0.01 GBPUSD at 1.44106 ok
0 10:34:11.351 Correlation.Casher.06.05.2016 EURUSD,H4: Order Selected to close by Counter = 4
2 10:34:11.441 Correlation.Casher.06.05.2016 EURUSD,H4: close #88485597 buy 0.01 NZDUSD at 0.67886 at price 0.67803
2 10:34:12.703 Correlation.Casher.06.05.2016 EURUSD,H4: open #88487332 buy 0.01 NZDUSD at 0.67825 ok
0 11:28:47.642 Correlation.Casher.06.05.2016 EURUSD,H4: uninit reason 1
2 11:28:47.752 Correlation.Casher.06.05.2016 EURUSD,H4: close #88473926 buy 0.01 USDCHF at 0.97306 at price 0.97442
2 11:28:47.842 Correlation.Casher.06.05.2016 EURUSD,H4: close #88487328 buy 0.01 GBPUSD at 1.44106 at price 1.44036
2 11:28:47.972 Correlation.Casher.06.05.2016 EURUSD,H4: close #88487332 buy 0.01 NZDUSD at 0.67825 at price 0.67904
2 11:28:48.132 Correlation.Casher.06.05.2016 EURUSD,H4: close #88462420 sell 0.01 AUDUSD at 0.73491 at price 0.73489
2 11:28:48.253 Correlation.Casher.06.05.2016 EURUSD,H4: close #88462415 sell 0.01 EURUSD at 1.13893 at price 1.13916
2 11:28:48.393 Correlation.Casher.06.05.2016 EURUSD,H4: close #88473928 sell 0.01 USDCAD at 1.29115 at price 1.29179
0 11:28:48.403 Expert Correlation.Casher.06.05.2016 EURUSD,H4: removed

//////////////////////////////

Der Fehler tritt auf, als er zum ersten Mal das Paar GBPUSD im Index 2 löscht - dieses Paar
wurde zu Beginn nach dem EURUSD Paar eröffnet und müsste eigentlich den Index 1 haben ! Hat es aber nicht und das geht mir nicht in den Sinn - wie kann das sein ?! Wird der Inhalt des Index vom Broker übermittelt, sodas dieser evtl. nicht korrekt ist - falls ja würde es keinen Sinn machen mit diesem Befehl zu arbeiten.

Wäre für Eure Hilfe sehr dankbar - sorry aber die Einrückungen meines EA´s wurde hier beim reinkopieren nicht richtig dargestellt. Hoffe man kann ihn trotzdem einigermassen gut lesen.

Grüße

Oliver
  #2 (permalink)  
Alt 13.05.16
Mitglied
 
Registriert seit: May 2015
Beiträge: 124
yytrader befindet sich auf einem aufstrebenden Ast
Standard

Hallo Oliver,

ich habe deinen Code nicht ganz verstanden und ich konnte direkt keinen Fehler erkennen.

Gib dirch nach jedem Element der For-schleife alle offenen Orders aus, so kannst du sehen, was mit dem Index passiert.

Gruß

yytrader
  #3 (permalink)  
Alt 14.05.16
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 17
oli44 befindet sich auf einem aufstrebenden Ast
Standard

Hallo yytrader,

danke dass du mal rübergeschaut hast. werde das mal machen mit der ausgabe aller offenen order innerhalb der for schleife nach jedem element. lässt sich relativ leicht machen (vorher eine funktion programmieren und diese an den jeweiligen programmpunkten immer wieder aufrufen). danke für den tipp!

Habe hier mal den EA hochgeladen, da sich so die programmstruktur besser
lesen lässt. wenn man dies hier einfach reinkopiert wird es doch sehr
unleserlich.

Ich könnte mir auch vorstellen das das problem an einem verbindungsabbruch während der programmausführung liegt. der orderpool ist ja im speicher abgelegt und muss immer vom server des brokers aktualisiert werden - vielleicht kommt der ea ja dabei durcheinander.

Werde weiter daran arbeiten, da dies für spätere entwicklungen wichtig werden kann!

danke nochmals ;-)
Angehängte Dateien
Dateityp: mq4 Correlation.Casher.06.05.2016.mq4 (65,2 KB, 5x aufgerufen)
  #4 (permalink)  
Alt 14.05.16
Gesperrter Benutzer
 
Registriert seit: Dec 2015
Beiträge: 53
TLO Trader befindet sich auf einem aufstrebenden Ast
Standard

Interessant: Gestern Abend stand der mehrfach veränderte Quellcode dieses EA hier noch direkt im Forum, jetzt wurde der komplette Thread geändert und die mqh als Anhang geliefert.

Ehrlich gesagt, ich habe keine Ahnung, worum es bei Eurer STRATEGIE geht und ob das Sinn macht, was Ihr vorhabt, aber ich habe mir den Quellcode mal runtergeladen und compiliert.

Ausser einigen Warnings war nichts da, ob es läuft und irgendwas macht, und vor Allem: Was sehen wir frühestens am Pfinstdienstag, wenn der Markt wieder öffnet.

Ich werde euren EA nächste Woche mal auf einem Demo testen und schauen, ob und was da passiert. Ich gebe Euch Rückmeldung!

Versuch und Irrtum führen (vielleicht) irgendwann zum Erfolg!

Gebt nicht auf, Jungs!!!
  #5 (permalink)  
Alt 14.05.16
Gesperrter Benutzer
 
Registriert seit: Dec 2015
Beiträge: 53
TLO Trader befindet sich auf einem aufstrebenden Ast
Standard

Die erste positive Antwort ist schon da:

Euer EA produziert ein lupenreines Input-Window, das ist doch schon mal was! Jetzt kümmern wir uns mal um das Konzept und die Strategie, und wenn das funktioniert, auch noch um die letzten Feinheiten der Programmierung.

Erstmal muss das Ding laufen lernen, Baskets sind ja auch kein ganz neuer Ansatz. Wie Ihr das jetzt umsetzen wollt, das müsst Ihr schon mal sagen, ich kann zwar auch MQL 4 programmieren, aber bitte verlangt jetzt nicht, dass ich aus Eurem Quellcode Eure Strategie rauslesen soll!! Das würde mich Stunden, wenn nicht Tage kosten!

Aber zum Aufbau: Die Input-Box erscheint am Monitor, das ist doch auch was!
Angehängte Grafiken
Dateityp: png ScreenShot_20160514031312.png (23,6 KB, 13x aufgerufen)
  #6 (permalink)  
Alt 14.05.16
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 17
oli44 befindet sich auf einem aufstrebenden Ast
Standard

Hallo TLO willkommen an Bord ;-)

danke vorab für deine unterstützung - das forum lebt!

die "Strategie" ist relativ simpel und müsste noch entsprechend ausgebaut werden. Nur bremst mich dieser Fehler in der weiteren entwicklung aus, deshalb habe ich mich auch an dieses Forum gewandt.

Der EA eröffnet zunächst 6 Währungspaare. Diese habe ich nach Korrelationstabellen ausgewählt.

Die zusammenhängenden Basket´s lauten:

(EURUSD/GBPUSD) , (USDCHF/USDCAD) , (NZDUSD/AUDUSD)

Man kann nun mittels CashWin und CashLoss einstellen wann ein Basket im Gewinn bzw. Verlust geschlossen werden soll.

Bsp.: CashWin = 2 / Basket (EURUSD/GBPUSD) wird nach einem Gewinn >= 2 EUR geschlossen. Usw.... Gleiches gilt für die anderen Baskets.

Nehmen wir an im Basket (USDCHF/USDCAD) würde ein Gewinn vorliegen, dann sollten im Orderpool folgende Schritte ausgeführt werden.

Schritt 0: Order werden gesetzt
---------
EURUSD / GBPUSD / USDCHF / USDCAD / NZDUSD / AUDUSD

Schritt 1: USDCHF wird gelöscht
---------
EURUSD / GBPUSD / USDCAD / NZDUSD / AUDUSD

Schritt 2: USDCHF wird wieder eröffnet
---------
EURUSD / GBPUSD / USDCAD / NZDUSD / AUDUSD / USDCHF

Schritt 3: USDCAD wird gelöscht
---------
EURUSD / GBPUSD / NZDUSD / AUDUSD / USDCHF

Schritt 4: USDCAD wird wieder eröffnet
---------
EURUSD / GBPUSD / NZDUSD / AUDUSD / USDCHF / USDCAD

Dieses Spiel läuft immer so weiter, der EA prüft ständig die Baskets auf Gewinn bzw. Verlust - schliesst sie dann und eröffnet direkt wieder neu.

Nur leider (siehe meine Log-Datei) läuft irgedwann mit dem Index etwas schief und die Baskets ("zerbrechen"). Sie müssen im Orderpool immer zusammenhängend bleiben. Der EA prüft immer ab Position 0,2,4,...,OrdersTotal()-2. So löscht er laut Logfile das Paar GBPUSD im Index 2, es müsste aber den Index 1 haben !!

Nicht ganz einfach die Sache in Worte zu fassen (schon spät / früh ;-)

Ich denke aber der Grund liegt in Verbindungsunterbrechungen seitens des Brokers / Providers. Diese kommen immer wieder mal vor. Dagegen muss ich den EA noch robuster programmieren.

Weiters möchte ich den EA danach noch so erweitern, dass er die Stops bzw. Takeprofits in Abhängigkeit von erfolgten Verlusten / Gewinnen variabel anpasst, also nicht mit konstanten Werten arbeitet, da sich ein evtl. Vorteil im Markt verändert.

Interessant wäre es auch zu Backtesten (Geht aber nur mit MT5) in wieweit
sich solch ein Basket in der Vergangenheit maximal in den Verlust bewegt hätte.

Naja, es wird nicht Langweilig - euch noch schöne Pfingsten !
  #7 (permalink)  
Alt 14.05.16
Gesperrter Benutzer
 
Registriert seit: Dec 2015
Beiträge: 53
TLO Trader befindet sich auf einem aufstrebenden Ast
Standard

Ich fürchte, Olli, Du verzettelst Dich da ein wenig!

Ich bin keineswegs bei Dir an Bord, meine Frage war viel einfacher:
Was hast Du vor und wie soll das funktionieren?

Soweit ich das sehe, reichen Deine bisherigen Kenntnisse nicht einmal ansatzweise, um da irgend etwas umzusetzen!

Sich eine "Strategie" auszudenken und dann einen Code programmieren?
Mann oh Mann, wenn das mal so einfach wäre!!

Worauf willst Du eigentlich raus, auf Arbitrage?

Gib Dir Mühe, aber wenn Du glaubst, da irgend etwas mit erreichen zu
können: Ich fürchte: NEIN!

Einen automatischen Expert-Advisor programmieren, der dann dauerhaft sozusagen "im Schlaf" Geld verdient? No Chance, absolutely no Chance!

Aber bemühe Dich, mach weiter und arbeite Tag und Nacht an Deiner Idee,
irgenwann hast Du dann auch den "Bogen raus".

Und dann ist es auch noch immer knallharte Arbeit!
  #8 (permalink)  
Alt 14.05.16
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 17
oli44 befindet sich auf einem aufstrebenden Ast
Standard

Hallo TLO trader,

wirklich schade aber dein post trägt absolut nichts zu einer vernünftigen beantwortung meiner bisherigen frage bei. daher scheint es mit deinen kenntnissen wohl auch nicht gerade zum besten bestellt zu sein. ich möchte hier auch keine sinnfreien diskussionen über den erfolg oder misserfolg von EA´s im allgemeinen anstossen - dies bringt mir nichts.

allerdings kann ich dir versichern, das ich für mich das thema profitable ea programmierung zufriedenstellend gelöst habe. es nicht nicht wirklich überaus schwer einen profitablen ea zu programmieren - die herausforderung liegt im nachhinein in den statistischen auswertungen und entsprechenden anpassungen der parameter. hier beissen sich die meisten halt die zähne aus - meist in dem irrtum begründet es gäbe einen konstanten vorteil den man nur finden müsste. diesen gibt es aber nicht - ein vorteil kommt und geht und die kunst liegt darin zu erkennen wann man ihn abschöpfen kann und wann man sich aus dem markt heraushält. aber dies führt einfach alles zu weit - für mich ist nur die beantwortung meiner gestellten frage von interesse. wenn du dazu nichts beitragen kannst .... ?!

euch viele grüße und ein schönes wochenende
  #9 (permalink)  
Alt 15.05.16
Gesperrter Benutzer
 
Registriert seit: Dec 2015
Beiträge: 53
TLO Trader befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von oli44 Beitrag anzeigen
Hallo TLO trader,

1. wirklich schade aber dein post trägt absolut nichts zu einer vernünftigen beantwortung meiner bisherigen frage bei.

2. allerdings kann ich dir versichern, das ich für mich das thema profitable ea programmierung zufriedenstellend gelöst habe. es nicht nicht wirklich überaus schwer einen profitablen ea zu programmieren - die herausforderung liegt im nachhinein in den statistischen auswertungen und entsprechenden anpassungen der parameter.
Zu1: Die vernünftige Beantwortung Deiner Frage lag duchaus in meiner Absicht. Nur wollte ich dich zunächst auf den richtigen Denk-Weg führen!

Zu2: Wenn Du einen profitblen EA hättest, würdest Du hier nicht nach Wegen suchen, einen zu entwickeln. Ich habe dafür schon zu viele angeblich profitable EA gesehen, die alle nicht funktionieren.

3. (und das ist von mir): Deine Strategie habe ich schon verstanden.
Du willst jeweils 2 negativ korrelierende Währungspaare in ein Basket packen und solange warten, bis es einen bestimmten Gewinn macht oder eben Verlust und es dann schliessen. Mein Rat: Baue das Programm dann auch genau so auf und verliere dich nicht irgendwo in den Tücken des Programmierens. Definiere also die Baskets eindeutig, eröffne und schliesse sie gleichzeitig.

Ich habe irgendwo noch so ein Basket-System in den tiefen meiner Festplatte schlummern, sollte ich es dort noch finden, werde ich es hier mal einstellen.
  #10 (permalink)  
Alt 15.05.16
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 17
oli44 befindet sich auf einem aufstrebenden Ast
Standard

Hallo TLO Trader,

danke für deine konstruktive kritik. In dieser Strategie sind allerdings
"positiv" korrelierende Paare zusammengefasst. So korreliert derzeit
z.B. (EUR/USD // GPB/USD) >= 44,3% :

Realtime Forex Market Correlation - Korrelation verschiendener Devisenpaare

Es wäre im übrigen kein großes Problem den EA so zu programmieren, dass er
das gewünschte leistet - eine lösung besteht z.b. darin über die OrderSend() funktion ein jeweils entsprechendes "OrderComment" zu verwenden und dieses
bei prüfung abzufragen. So könnte es nicht mehr zum "aufbrechen" der Baskets kommen.

Allerdings geht es mir hier auch um die korrekte funktionsweise des orderpools.
Ich möchte einfach wissen "warum" die baskets zerbrechen. bisher konnte ich keinen logischen fehler in meiner programmstruktur finden - theoretisch müsste der ea also korrekt funktionieren - daher meine bisherige vermutung "verbindungsunterbrechungen zum server".

Zu profitablen EA´s kann ich deine erfahrungen bestätigen. Es finden sich natürlich unmengen EA´s im netz die "nicht" profitabel sind. Der grund liegt wie gesagt oftmals in der falschen annahme eines konstanten vorteils.

Daher kann ich dir aus o.g. gründen gerne zu deinem punkt 2.) insoweit antworten, dass man selbstverständlich immer auf der suche nach neuen wegen und strategien sein sollte. Auch profitable EA´s haben in ungünstigen marktsituationen sog. "Ruhephasen". Diese gilt es zu überbrücken - Stichwort:
Bildung eines "Portfolios". Und dies ist letztendlich mein ziel. immer mehr profitable strategien zu finden und diese umszusetzen - positiver nebeneffekt (ständige beschäftigung mit der programmierung / kreativität und ganz wichtig SPASS AN DER SACHE).

In der Basket-Strategie sehe ich im übrigen durchaus potential und werde sie entsprechend weiter ausbauen.

Beste Grüße und einen schönen Sonntag

Oliver
Thema geschlossen

Lesezeichen

Stichworte
basket, mql4, orderpool, programmierung, programmierung metatrader


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 01:34 Uhr.



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