Jump to content
Tom Next - Daytrading Community

Recommended Posts

Posted
Damit hättest du den Trailingstop in ticks angegeben, was meist einfacher zum Denken ist.

 

Ok, werde es testen, das könnte der Fehler gewesen sein. Muss ich denn dann nicht wieder

den Trailingstop * 2 angeben. Also wenn ich 10 Punkte haben will muss ich 20 beim Dax angeben,

da hier die Ticksize 0.5 ist?

  • Replies 54
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Posted
Ok, werde es testen, das könnte der Fehler gewesen sein. Muss ich denn dann nicht wieder

den Trailingstop * 2 angeben. Also wenn ich 10 Punkte haben will muss ich 20 beim Dax angeben,

da hier die Ticksize 0.5 ist?

 

Genau, 10 Punkte= 20 Ticks. Hier gilt es die Anwenderspec zu kennen. Wenn du als Anwender sagst "ich denk gern in Punkten" dann machs in Punkten, wird nur bei Forex schwierig, weil der Parameter dann ein Double sein müsste etc.

 

Sicherheitshalber:

Die aktuellste TradeBox heißt "lTradeBox.mq4" (Namensconvention) und die Funktionen beginnen alle mit "tb" nicht wie bisher mit "TB" ...

 

 

tbCloseOrder (OrderTicket(), OrderLots(), 3, 5);
exitErfolgreich = true;

 

Hier würde ich den return value von tbCloseOrder nutzen. (es kann sein das die TradeBox aufgibt, und die ORder nicht geschlossen wurde):

if(tbCloseOrder (OrderTicket(), OrderLots(), 3, 5) < 0)
 exitErfolgreich = true;

 

Habs jetzt mal am EURUSD getestet, Trailingstop funktioniert bei mir so:

if ((TrailingStop>0) && ( OrderStopLoss() == 0 || (OrderStopLoss()-Ask)>TrailingStop*ticksize))
{	   
 tbModifyOrder (OrderTicket(), OrderOpenPrice(),  OrderOpenPrice() - TrailingStop*ticksize, OrderTakeProfit(), 0);
}

 

Ob ein Trailingstop bei diesem System Sinn macht, ist natürlich eine andere Frage ;)

aber beim MM/RM können wir uns noch austoben.

Posted

Danke für den Code, werde ihn später einbauen.

Trailingstops machen, wenn überhaupt nur bei Forex Sinn, so zumindest meine

aktuellen Tests.

 

Aber generell funktioniert das System auf dem Forex-Markt noch gar nicht.

Entweder man schränkt die Zeiten zur Berechnung der Daily-Range ein, oder

das RM/MM ist für den Markt noch ausbaufähig.

 

Für den DAX und ich meine bei GOLD siehen die Ergebnisse sehr gut aus. Allerdings

kann ich ja immer nur max. 3 Monate zurück testen, das die Daten der Kontrakte ansonsten

nicht verwendbar sind. Kann man irgendwo die alten Kontrakte ausgraben und testen

oder sich einen Continuous-Kontrakt zusammenbasteln.

 

Ok, weitere Tests bzgl. dem Forex-Markt folgen.

 

Mich interessiert noch folgendes:

Was müsste für einen produktiven Einsatz noch an dem EA gemacht werden ?

Posted
Noch eine Info. Die Datei DT_Include.mqh beherbergt einfach nur die Standard-Includes zur TradeBox.

Leider darf ich sie nicht hochladen. Das müsste noch angepasst werden.

 

@Admi

:wink: ... kann DT diese Dateien jetzt "hochladen....."?

 

danke.

Posted
Trailingstops machen, wenn überhaupt nur bei Forex Sinn, so zumindest meine

aktuellen Tests.

 

Aber generell funktioniert das System auf dem Forex-Markt noch gar nicht.

Entweder man schränkt die Zeiten zur Berechnung der Daily-Range ein, oder

das RM/MM ist für den Markt noch ausbaufähig.

 

Ich habs vorhin kurz auf EURUSD getestet, ohne Trailingstop wars leicht positiv mit ein PF von 1.15 oder so. Man müsste sich aber die Zeiten anschauen.

 

Für den DAX und ich meine bei GOLD siehen die Ergebnisse sehr gut aus. Allerdings

kann ich ja immer nur max. 3 Monate zurück testen, das die Daten der Kontrakte ansonsten

nicht verwendbar sind. Kann man irgendwo die alten Kontrakte ausgraben und testen

oder sich einen Continuous-Kontrakt zusammenbasteln.

 

Du kannst dir aus der TradeSignal die alten Kontrakte rausziehen, daraus einen Continuous bauen und diesen bei MT einspielen (getarnt als GER30 ;), du kannst natürlich auch der Anpassungsmethode der TradeSignal vertrauen und dir direkt einen Contiuous raussaugen... meine Erfahrungen damit sind aber eher ungut.

 

Du musst nur eines aufpassen: GER30 = DAX != FDAX ! bringt also nur was, wenn du testen willst ob du die gleichen Ergebnisse wie auf der TradeSignal hast, bzw. einfach allgemein den EA testen willst.

 

Man könnte auch ein Symbol, das man derzeit nicht verwendet "hijacken" und einfach die andere History einspielen.

 

Mich interessiert noch folgendes:

Was müsste für einen produktiven Einsatz noch an dem EA gemacht werden ?

Jetzt wirds spannend.

 

Bei Verwendung von Stops, Trailingstops etc, würd ich die an die Vola (ATR) koppeln.

MM/RM: Da bei Eröffnung des Trades, schon klar ist, wo der "Stop" liegt (ca), sollte die Lotsize so berechnet werden, das jeder Trade "gleich viel" Risiko hat. Also entweder jeder Trade x% vom Kapital oder fixen Geldbetrag.

Dann würd ich den EA noch "ausputzen" ;) Nichts gegen deine Fortschritte, aber zB das mit der Margin etc. müsste noch raus/angepasst werden. Und dann ist die Frage für wen, und welche Anwendung.

Gibt es in der finalen Version globale/statische Variablen die für den Ablauf wichtig sind, sollten diese in ein File gesichert werden, sodass bei stromausfall oder neustarten nach dem neustart des MT der EA exakt an der gleichen Stelle weitermacht, wie zuvor etc.

Hardwaretechnische Details sind dann natürlich auch noch zu überlegen.

Posted

Hardwaretechnische Details sind dann natürlich auch noch zu überlegen.

 

Würdest Du denn eine VR-Server empfehlen? Ich meine, auf der anderen Seite,

handelst Du eigentlich EAs automatisiert oder macht das generell jemand hier im Forum?

Posted
Hardwaretechnische Details sind dann natürlich auch noch zu überlegen.

Ich meine, auf der anderen Seite,

handelst Du eigentlich EAs automatisiert oder macht das generell jemand hier im Forum?

 

Ich selber handle überhaupt nix, zumindest im Moment.

 

Ich denke zu Beginn muss man sich noch keinen Server mieten. Ein "kostengünstiger" Test mit dem eigenen PC und einem Notstrom-system zeigt schnell ob der EA in Real funktioniert. Entscheided man sich dann, das dauerhaft laufen zu lassen, macht es natürlich sinn über einen Server nachzudenken.

Posted (edited)

Muss es bei OrderModify nicht immer heißen Bid-TrailingStop*ticksize ... wenn ich einen TrailingStop setzen will bzw. Ask+... ? Ich setze doch denn Stopp vom aktuellen Preis entfernt?

 

Hier würde ich den return value von tbCloseOrder nutzen. (es kann sein das die TradeBox aufgibt, und die ORder nicht geschlossen wurde):

 

Warum gibst Du nicht True/False zurück, wäre doch einfacher zu handhaben? Den Wert bekommst du eh von

CloseOrder wieder?

 

Ach ja, ATR ist eingebaut. Natürlich sind es weniger Trades, aber dadurch fallen einige auch raus. Hab noch keine wirkliche Meinung, ob es etwas bringt, da der Testzeitraum zu kurz ist.

 

Der Code des DT_Includes ist nichts anderes als das hier:

 

// Includes, werden als Code eingebunden
#include <stderror.mqh>
#include <stdlib.mqh>

// Imports, jedes Modul, verwendet eigen Kopie davon.
// Neue Versionen können separat kompiliert werden.
#import "stdlib.ex4"
  string ErrorDescription (int error_code);
#import

#import "TradeBox.ex4"
  int TBSendOrder (string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
				double takeprofit, string comment, int magic, datetime expiration, int max_retries=-1);
  int TBCloseOrder (int ticket, double lots, int slippage, int max_retries=-1);
  int TBModifyOrder (int ticket, double price, double stoploss, double takeprofit, datetime expiration);   
  void TBSetInformationLevel (int val);
  double TBGetVersionNumber ();
#import

 

TrailingStop ist eingebaut, aber auskommentiert, m.M. nach bringt der wenig, da Gewinne

immer abgeschnitten werden, was meint Ihr?

 

DT_EA_DailyRange.mq4

Edited by DarthTrader
Posted
Muss es bei OrderModify nicht immer heißen Bid-TrailingStop*ticksize ... wenn ich einen TrailingStop setzen will bzw. Ask+... ? Ich setze doch denn Stopp vom aktuellen Preis entfernt?

:wink: natürlich.

 

Warum gibst Du nicht True/False zurück, wäre doch einfacher zu handhaben? Den Wert bekommst du eh von

CloseOrder wieder?

 

Ehrlich gesagt: weil ich die Close Function von der send Function übernommen hab und nur angepasst habe, und dort macht es Sinn. Es ist ein bissl Konsistenzmäßig, vor allem weil ich bei einem Fehler direkt den (-1)*FehlerCode retouniere.

Aber gut das dus gesagt hast, das war im wesentlichen eh ein Bug.

 

 

Ach ja, ATR ist eingebaut. Natürlich sind es weniger Trades, aber dadurch fallen einige auch raus. Hab noch keine wirkliche Meinung, ob es etwas bringt, da der Testzeitraum zu kurz ist.

 

Du meinst den Daily-ATR oder?

 

Zum Trailing: du musst ihn ja nit auskommentieren, setz einfach den Parameter auf 0, dann ist das testen leichter.

Posted
Der Code des DT_Includes ist nichts anderes als das hier:

 

// Includes, werden als Code eingebunden
#import "TradeBox.ex4"
  int TBSendOrder (string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
				double takeprofit, string comment, int magic, datetime expiration, int max_retries=-1);
  int TBCloseOrder (int ticket, double lots, int slippage, int max_retries=-1);
  int TBModifyOrder (int ticket, double price, double stoploss, double takeprofit, datetime expiration);   
  void TBSetInformationLevel (int val);
  double TBGetVersionNumber ();
#import

 

Wie ich schon sagte: das ist die alte TradeBox, bitte "lTradeBox" verwenden, die neuen Versionen werden auch alle so heißen

Posted (edited)

Zum Trailing: du musst ihn ja nit auskommentieren, setz einfach den Parameter auf 0, dann ist das testen leichter.

 

:wink: Klar, dafür ist ja die Abfrage > 0 da ....

 

Habe noch einen Bug mit der ATR behoben ... ab dem Wert 2 wurden nur BUY Aufträge verarbeitet.

 

DT_EA_DailyRange.mq4

Edited by DarthTrader
Posted
:wink:

c.jpg

 

Ersetze den Code #inlude einfach durch den oben geposteten. Hier issser nochmal.

Es ist einfach lesbarer, wenn man den Header in eine extra Datei auslagert.

 

// Includes, werden als Code eingebunden
#include <stderror.mqh>
#include <stdlib.mqh>

// Imports, jedes Modul, verwendet eigen Kopie davon.
// Neue Versionen können separat kompiliert werden.
#import "stdlib.ex4"
  string ErrorDescription (int error_code);
#import

#import "ITradeBox.ex4"
  int tbSendOrder (string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
				double takeprofit, string comment, int magic, datetime expiration, int max_retries=-1);
  int tbCloseOrder (int ticket, double lots, int slippage, int max_retries=-1);
  int tbModifyOrder (int ticket, double price, double stoploss, double takeprofit, datetime expiration);   
  void tbSetInformationLevel (int val);
  double tbGetVersionNumber ();
#import

 

Viel Spaß beim Testen

DT

  • 2 weeks later...
Posted

Ich habe jetzt mal eine Lotsize-Berechnung eingebaut. Man, man, man, .... hat mich einige

(gefühlte) Lebensjahre gekostet. Hier der Code:

 

// -----
// Diese Funkion berechnet die Lotgröße nach dem Fixed Fractional Ansatz.
// Hierbei werden auch der Wechselkurs und CrossCurrencies mit betrachtet.
// Der StopLoss wird immer in Pips umgerechnet => immer kleinster veränderbarer Wert.
// DAX	=> 40 Punkte	 = 40 / TickSize	  = 40 / 0.5		= 80 Pips
// GOLD   => 20 Punkte	 = 20 / TickSize	  = 20 / 0.01	   = 2000 Pips
// EURUSD => 0.0020 Punkte = 0.0020 / TickSize  = 0.0020 / 0.0001 = 20 (normale) Pips
// -----
double calculateLotSize (double risk, double stopLoss)
{   
  double lotSize		  = 0;
  double moneyToInvest	= 0;
  double aktuellerPreis   = 0;
  string baseCurrency	 = StringSubstr (Symbol(), 0, 3);
  string quoteCurrency	= StringSubstr (Symbol(), 3, 3);
  string accountCurrency  = AccountCurrency();
  double accountBalance   = AccountBalance();
  double minLotSize	   = MarketInfo (Symbol(), MODE_MINLOT);		 
  double maxLotSize	   = MarketInfo (Symbol(), MODE_MAXLOT); 
  double aktuellerSpread  = MarketInfo (Symbol(), MODE_SPREAD);	 
  
  // Wert eines Pips in zweiter Währung (bei USD immer 10) oder
  // bei CFDs Wert der minimalsten BEwegung, DAX = 12.50 bei 0.5 Ticksize
  double tickValue		= MarketInfo (Symbol(), MODE_TICKVALUE);		
  
  // Kontraktgröße in erster Währung
  double contractSize	 = MarketInfo (Symbol(), MODE_LOTSIZE);   
  
  // Letzte Nachkommastelle des Underlyings (0.01 oder 0.0001)
  double tickSize		 = MarketInfo (Symbol(), MODE_TICKSIZE);  
  
  // Wert eines Pips in AccountCurrency, also EUR o. USD bei einem Lot
  double singlePipValue;  


  // Zu riskierenden Betrag berechnen
  moneyToInvest  = (accountBalance / 100) * risk;
  
  // -----
  // Wenn USD die erste quotierte Währung ist (USDJPY, USDCAD, USDCHF, ...), 
  // teilt man ein Pip durch den Ask-Kurs und multipliziert das Ergebnis mit der Lotgröße.
  // Beispiel: Wenn USDCHF bei 1,4323 steht, ist ein Pip (0,0001 / 1,4323) * $100.000 = $6,98 wert.
  // Wenn USD die zweite Währung ist (EURUSD,...) ist ein Pip immer $10 wert.
  // Beispiel: Wenn EURUSD bei 1,4523 steht, ist ein Pip (0,0001 / 1,4523) = 6,89 Eur = $10 (6,89 Eur * 1,4523) wert.
  // Analog, wenn EUR die erste Währung ist...
  // -----   
  
  // FOREX-Markt
  if (isFOREXSymbol(Symbol()))
  {
  Print ("Lot-Berechnung für FOREX-Markt ...");
  if (quoteCurrency == accountCurrency) {
	 singlePipValue = contractSize * tickSize;
  }   
  else if (baseCurrency == accountCurrency) {
	 singlePipValue = contractSize * tickSize / MarketInfo(Symbol(), MODE_ASK);
  }
  else if (baseCurrency != accountCurrency && quoteCurrency != accountCurrency) {
	 singlePipValue = contractSize * tickSize * MarketInfo(baseCurrency + accountCurrency, MODE_ASK) / MarketInfo(Symbol(), MODE_ASK);
  }
  }
  // CFDs
  else if (isCFDSymbol(Symbol()))   
  {
  Print ("Lot-Berechnung für CFD-Kontrakt ...");
  // 12.5€ beim DAX, 1 * Wechselkurs von €/$ bei GOLD
  singlePipValue = tickValue;
  }
  

  // Größe der Lotsize für FOREX-Markt + CFD-Markt identisch, wenn ich immer Stop in Pips umrechne (/tickSize)
  lotSize = NormalizeDouble (moneyToInvest / ((stopLoss/tickSize) * singlePipValue), 2);   

  
  // Ausgabe, um Werte zu übeprüfen
  Print ("Symbol=", Symbol(), "  Kurs=", Ask, "  Spread=", aktuellerSpread,
	  "  Kontraktgr.=", contractSize, 
	  "  SinglePipValue=", singlePipValue, " ", AccountCurrency(), 
	  "  Risiko=", risk, "%  StopLoss=", stopLoss/tickSize, " Pips");
		
  
  // Durch den Broker festgelegte Grenzen einhalten
  if (lotSize < minLotSize) {
  return (minLotSize);
  }
  else if (lotSize > maxLotSize) {
  return (maxLotSize);
  }
  else {
  return (lotSize);
  }
}

 

Ich habe teilweise bei anderen etwas abgeschaut, überwiegend selbst überlegt.

Viele Tests zeigen eigentlich, dass es auch jedem Markt funktioniert.

Meine Frage ist nun, seht Ihr das genau so?

 

Wo sind noch Fehler oder Verbesserungen im Code?

 

Danke schonmal

DT

Posted
Ich habe jetzt mal eine Lotsize-Berechnung eingebaut.
:wub:

 

Für die Mitleser: Du gehst jetzt also her und setzt dir ein gewisses InitialRisk für jeden Trade fest. Also wieviel der Trade maximal verlieren darf, wenn es total daneben geht. (Da der EA ohne Stoploss arbeitet, sondern nur bei "Close unter einem Level" ausstoppt, wird das nie exakt hinkommen, aber besser als nix).

Dann berechnest du die POsitionsgröße so, das ein erreichen des StopLoss genau im Verlust von InitialRisk resultiert.

Dadurch kriegen die Trades untereinander, auch wenn sie unterschiedliche Stopentfernungen haben, immer die gleiche Chance. (Korrigier mich wenn ich mich irre)

 

zum Code:

Der aufwändige Teil ist das berechnen der SinglePipValue richtig? (wobei du hier beim überlegen wie das geht, sicher einiges gelernt hast...)

 

Wie wärs mit MarketInfo(Symbol(),MODE_TICKVALUE) ?

MODE_TICKVALUE ... Tick value in the deposit currency.

Das wär doch was du brauchst oder?

 

Wie hast du vor dein Risiko zu steuern? const % von AccountBalance() ?

Posted
Für die Mitleser: Du gehst jetzt also her und setzt dir ein gewisses InitialRisk für jeden Trade fest. Also wieviel der Trade maximal verlieren darf, wenn es total daneben geht. (Da der EA ohne Stoploss arbeitet, sondern nur bei "Close unter einem Level" ausstoppt, wird das nie exakt hinkommen, aber besser als nix).

Dann berechnest du die POsitionsgröße so, das ein erreichen des StopLoss genau im Verlust von InitialRisk resultiert.

Dadurch kriegen die Trades untereinander, auch wenn sie unterschiedliche Stopentfernungen haben, immer die gleiche Chance. (Korrigier mich wenn ich mich irre)

 

So soll es sein. Ich habe ja auf jeden Fall einen StopLoss durch den Einstiegskurs. Klar, den gebe ich nichr direkt mit, dass sollte man vielleicht ändern ...

sonst habe ich ja keine Absicherung im Markt ... :wub:

 

zum Code:

Der aufwändige Teil ist das berechnen der SinglePipValue richtig? (wobei du hier beim überlegen wie das geht, sicher einiges gelernt hast...)

 

Auf jeden Fall, aber man muss sich jedes mal erneut hineindenken ...

 

 

Wie wärs mit MarketInfo(Symbol(),MODE_TICKVALUE) ?

Das wär doch was du brauchst oder?

 

Genau und es wird auch schon verwendet (siehe Code). Die Frage ist nur, ob noch Fehler im Code

drin sind. Die Berechnung sollte an sich so funktionieren.

 

Wie hast du vor dein Risiko zu steuern? const % von AccountBalance() ?

 

Fixed Fractional mit X% vom AccountBalance(), so soll es erstmal laufen.

Für andere Vorschläge bin ich gerne offen.

Posted
So soll es sein. Ich habe ja auf jeden Fall einen StopLoss durch den Einstiegskurs. Klar, den gebe ich nichr direkt mit, dass sollte man vielleicht ändern ...

sonst habe ich ja keine Absicherung im Markt ... :wub:

Naja, wenn man den Tagesopen als Stoploss dazuschreibt, ändert sich ja die Strategie oder? Wär natürlich interessant obs besser oder schlechter wird.

 

Zum Tickvalue: soweit ich das verstanden haben (und kurz in MT getestet) berechnet MarketInfo(Symbol(),MODE_TICKVALUE) genau das was deine singlepipvalue macht, du würdest dir hier also Code sparen.

 

Sonst hab ich keine Fehler im Code gefunden :beers:

 

 

 

Fixed Fractional mit X% vom AccountBalance(), so soll es erstmal laufen.

Für andere Vorschläge bin ich gerne offen.

Im Moment keine anderen Vorschläge ;)

Was ich mir nur bei % vom Balance immer denke:

Wir wissen das ein System nicht 100% profitable ist, es gibt immer wieder Gewinnphasen, die aber direkt von Verlustphasen gefolgt werden. Beim % vom Balance haben wir den Effekt, das nach einer Gewinnphase, die nachfolgenden Trades höheres Risiko fahren dürfen (was die folgenden Verlusten auch gerne verpulvern) und nach einigen Verlusten die nachfolgenden weniger Risiko kriegen (wodurch die folgenden Gewinner nicht soviel Chance haben...). Das geht ja eigentlich gegen die Grundidee oder?

Im schlimmsten Fall hast dann sowas: Großer Gewinner -> Risiko wird drastisch erhöht -> gefolgt von 2 Verlierern -> Risiko wird deutlich gesenkt -> der nachfolgende Gewinner hat auch mit CRV 2 nicht die Chance die gerade eingefahrenen Verluste auszugleichen.

 

Ich hab mal überlegt das ganze mit Schwellen zu regeln. Also das Risiko ist immer zwischen 1 und 5 % (Hausnummern) von der Balance, aber eigentlich fix. Steigt die Balance, so sinkt der prozentuale Prozentsatz vom Risiko. Fällt dieser unter 1%, so wird er auf 3% erhöht wo er dann absolut wieder fix bleibt. Sinkt das Kapital und das Risiko steigt auf über 5%, wird es auf 3% gesenkt. dadurch gibt es kein rumzappeln. Es werden also hintereinanderlaufende Trades in der Regel mit dem gleichen Risiko gesetzt.

Oder dazu noch ein schleifendes System, also wenn das Risiko unter 1% fällt wird es schrittweise erhöht.

 

Aber genau genommen hab ich keine Ahnung ;) Es muss vermutlich zum jeweiligen System passen.

Posted
Naja, wenn man den Tagesopen als Stoploss dazuschreibt, ändert sich ja die Strategie oder? Wär natürlich interessant obs besser oder schlechter wird.

 

Nun ja, der Open-Kurs ist ja nur ein Worst-Case-Stopp, der wird im Normalfall gar nicht erreicht,

da ich nach X-Bars-Under-Range raus gehe. Es ist nur wichtig, dass ein Stopp im Markt ist, wenn mal

der EA oder mein PC abschmirt.

 

Hab es jetzt so gelöst, dass ich berechne ob der Open oder Range +- 1% näher an der Eröffnung der Position

dran ist, damit das Risiko etwas besser angepasst ist. So gehe ich max. 1% oder eben den Open des Tages als

Risiko ein. Beide Wert werden kaum erreicht, da andere Stopps ziehen

 

Zum Tickvalue: soweit ich das verstanden haben (und kurz in MT getestet) berechnet MarketInfo(Symbol(),MODE_TICKVALUE) genau das was deine singlepipvalue macht, du würdest dir hier also Code sparen.

 

Ich muss aber ja auch beim FOREX-Markt die Umrechnung in die Account-Balance mit einkalkulieren.

So einfach läuft es dann leider doch nicht :-)

 

Sonst hab ich keine Fehler im Code gefunden :wub:

 

Super, dann teste ich ihn mal auf einem Realkonto mit FDAX und GOLD.

 

Was ich mir nur bei % vom Balance immer denke:

Wir wissen das ein System nicht 100% profitable ist, es gibt immer wieder Gewinnphasen, die aber direkt von Verlustphasen gefolgt werden. Beim % vom Balance haben wir den Effekt, das nach einer Gewinnphase, die nachfolgenden Trades höheres Risiko fahren dürfen (was die folgenden Verlusten auch gerne verpulvern) und nach einigen Verlusten die nachfolgenden weniger Risiko kriegen (wodurch die folgenden Gewinner nicht soviel Chance haben...). Das geht ja eigentlich gegen die Grundidee oder?

Im schlimmsten Fall hast dann sowas: Großer Gewinner -> Risiko wird drastisch erhöht -> gefolgt von 2 Verlierern -> Risiko wird deutlich gesenkt -> der nachfolgende Gewinner hat auch mit CRV 2 nicht die Chance die gerade eingefahrenen Verluste auszugleichen.

 

Ich hab mal überlegt das ganze mit Schwellen zu regeln. Also das Risiko ist immer zwischen 1 und 5 % (Hausnummern) von der Balance, aber eigentlich fix. Steigt die Balance, so sinkt der prozentuale Prozentsatz vom Risiko. Fällt dieser unter 1%, so wird er auf 3% erhöht wo er dann absolut wieder fix bleibt. Sinkt das Kapital und das Risiko steigt auf über 5%, wird es auf 3% gesenkt. dadurch gibt es kein rumzappeln. Es werden also hintereinanderlaufende Trades in der Regel mit dem gleichen Risiko gesetzt.

Oder dazu noch ein schleifendes System, also wenn das Risiko unter 1% fällt wird es schrittweise erhöht.

 

Stimmt, aber vorerst reicht es auch so. Da ich immer von stetigen Gewinnen ausgehe,

wirkt sich das von dir gesagte eher positiv aus ... :-)

 

Was meinen die anderen zum Thema Money-Management?

 

Danke schonmal

DarthTrader

Posted (edited)

So, habe den EA jetzt mal drei Tage laufen lassen. Nur gestern gab es bei GOLD und im FDAX ein Signal,

beide wurden mit 1% von der LowerRange mit einem InitialStopp versehen. Beide wurde nach ca.1 Stunde

mit dem X-Bar-Stopp wieder vom Markt genommen. Alles Ok soweit. Beide Trades waren gegen 15 bzw. 16 Uhr wieder beendet.

 

Allerdings habe ich ein ungutes Gefühl bei den Range-Werten. Ich lege den EA auf den Chart, dann den Indikator, dieser wird vom EA verwendet. Beginnt ein neuer Tag wird erstens der Rangewert nicht immer an die UpperRange geschrieben und die Range sieht manchmal auch etwas merkwürdig aus, als ob er den neuen Tag im laufenden Betrieb gar nicht erkennt.

 

Heute Morgen hatte ich den Fall beim EURUSD, der nebenher läuft, dass ich den Indikator gelöscht habe und wieder auf den Chart gezogen habe. Die Range sah danach wieder sehr gut aus, aber anders als im laufenden Betrieb ...

 

... wenn ich mich also nicht auf die Range verlassen kann ... habe ich verloren ... aber wo ist der Fehler im Code ...

 

... zurzeit werden die Ranges vom Indikator gezeichnet, wenn ich die im EA selbst zeichne, dann spare ich mir das

drauf ziehen des Indis auf den Chart. Kann das etwas mit dem Fehler zu tun haben ... ?

Edited by DarthTrader
Posted
Ich muss aber ja auch beim FOREX-Markt die Umrechnung in die Account-Balance mit einkalkulieren.

So einfach läuft es dann leider doch nicht :-)

 

Wie gesagt, lt meinen Tests tut Tickvalue das alles bereits. Probiers einfach aus.

 

... zurzeit werden die Ranges vom Indikator gezeichnet, wenn ich die im EA selbst zeichne, dann spare ich mir das

drauf ziehen des Indis auf den Chart. Kann das etwas mit dem Fehler zu tun haben ... ?

 

Der Indi den du händisch auf den Chart ziehst, hat nichts mit dem Indi den der EA verwendet zu tun. (außer sie sind zufällig die gleichen). Dem EA ist vollkommen egal was du sonst noch auf dem Chart aufführst.

Posted
Der Indi den du händisch auf den Chart ziehst, hat nichts mit dem Indi den der EA verwendet zu tun. (außer sie sind zufällig die gleichen). Dem EA ist vollkommen egal was du sonst noch auf dem Chart aufführst.

 

Aber heißt das, dass ich immer aus dem EA die Ranges zeichnen sollte ...

Posted

Ok, dann werde ich es mal so implementieren, hoffentlich tauchen die Fehler dann nicht mehr auf.

 

Bleibt nur noch die Frage warum P. Kahler gestern eine satten Gewinn, mit stetig-steigender

Equity von 08/2007 bis heute im EURUSD, mit genau dieser Strategie, aufweisen kann ...

... und ich nur bei nem PF von knapp über 1 liege ... bei Mythos war es ebenso .... :wub:

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...