Quit – Routine
Forums › ProRealTime Deutsch forum › ProOrder Support › Quit – Routine
- This topic has 5 replies, 3 voices, and was last updated 2 years ago by robertogozzi.
Tagged: exit, positionperf, quit, strategyprofit
-
-
02/01/2022 at 7:20 PM #187275
Hallo,
ich würde gerne eine Quit-Routine codieren welche ein Handelssystem stoppt , wenn der aktuelle Profit eines Handelssystems (inklusive des negativen Profits der aktuell offenen Position) unter einen festgelegten Prozentsatz des bis dahin maximal erwirtschafteten Gewinns eines Handelssystems fällt. Ich habe mich selbst schon daran versucht, aber mit meinem Code stimmt irgendetwas nicht, das Handelssystem wird nicht nach den festgelegten Prozentwerten angehalten. Es wäre nett wenn sich jemand den Code mal anschauen würde.Quit-Routine12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273//_______________________________________________________________________Quit-Strategy//_______________________________________________________________________DAX-Spreadif opentime>=011500 and opentime<080000 thenSPREAD=4elsif opentime>=080000 and opentime<085900 thenSPREAD=2elsif opentime>=090000 and opentime<=173000 thenSPREAD=1.2elsif opentime>173000 and opentime<=220000 thenSPREAD=2elsif opentime>220000 and opentime<011500 thenSPREAD=5endif//___________________________________________if not onmarket thensetENTRY=0endif//___________________________________________LONGif longonmarket thenif not setENTRY thenENTRY=tradeprice+SPREADsetENTRY=1endif//___________________________________________positionPROFIT (negative)if setENTRY and close<ENTRY thenpositionPROFIT=(ENTRY-close)*abs(countofposition)endifendif//___________________________________________SHORTif shortonmarket thenif not setENTRY thenENTRY=tradeprice-SPREADsetENTRY=1endif//___________________________________________positionPROFIT (negative)if setENTRY and close>ENTRY thenpositionPROFIT=(close-ENTRY)*abs(countofposition)endifendif//______________________________________________QUITonce maxPROFIT=0maxPROFIT=max(strategyprofit,maxPROFIT)if (strategyprofit-positionPROFIT)<=-250 thenquitendifif maxPROFIT>500 and maxPROFIT<=2500 thenif (strategyprofit-positionPROFIT)<maxPROFIT*0.5 thenquitendifendifif maxPROFIT>2500 and maxPROFIT<=10000 thenif (strategyprofit-positionPROFIT)<maxPROFIT*0.6 thenquitendifendifif maxPROFIT>10000 thenif (strategyprofit-positionPROFIT)<maxPROFIT*0.7 thenquitendifendif02/01/2022 at 8:27 PM #187283Wenn ich es richtig verstehe, dann ist im Verlustfall Dein positionPROFIT natürlich negativ.
(strategyprofit-positionPROFIT) ist daher gleichbedeutend mit strategyprofit minus minus xxxx,-€.
minus*minus gibt PLUS, ergo rechnest Du: wenn strategyprofit PLUS Verlustbetrag <= soundsoviel ist, dann… was natürlich zu keinem Zeitpunkt erreicht werden kann.
Je mehr Verlust Du machst, desto größer wird ja der Betrag. 😉02/01/2022 at 9:07 PM #187284Mathematisch richtiger wäre es, die Faktoren schlicht in der Reichenfolge zu tauschen: “positionPROFIT + strategyprofit”. Dann sollte das funktionieren.
02/02/2022 at 9:43 AM #187312Danke für die schnelle Hilfe, ich sollte wohl nochmal die Grundrechenarten durchgehen 😁. Ich habe jetzt mal einen Backtest mit der von Dir vorgeschlagenen Änderung vorgenommen. Leider funktioniert die geänderte Version nur mit einiger Verzögerung, wenn das Handelssystem z.B. bei 70% des bis dahin erwirtschafteten Maximalgewinns aussteigen soll geschieht das erst bei rund 40% – 50% des Maximalgewinns. Ist das einfach nur ein Fehler im Backtest oder stimmt noch etwas anderes nicht an meinem Code?
02/02/2022 at 10:36 AM #187313Das ist jetzt etwas schwieriger zu beantworten.
Ich könnte mir vorstellen, daß es etwas mit Deinem STOP-Code und ggf Slippage zu tun hat.
Ein Beispiel: Dein Profit steigt auf über 10.000,-€ und damit in die 3. Stufe Deiner Tabelle.
Er soll aussteigen sobald der Profit unter 7.000,-€ fällt
Nun kommen die nächsten Trades… Er fällt auf zB 7.050,- €
Noch ein Trade… ZACK! 6.700,- € (Du hast vielleicht hohe TRAILING-STOP-Werte und die Volatilität (Bewegung im Markt) ist hoch !?
Dann löst er halt entsprechend nicht bei exakt 70% aus.
Grundsätzlich lösen Deine Quit-Funktionen halt immer NACH (!!) Unterschreiten aus.1 user thanked author for this post.
02/02/2022 at 10:53 AM #187314Hier ein Beispiel (nur SHORT, auf Dax 5 €, h1):
1234567891011121314151617ONCE PerCentage = 20ONCE MaxProfit = 0CurrentProfit = PositionPrice * PositionPerf / PipSize * PipValueTotalProfit = StrategyProfit + CurrentProfitMaxProfit = max(MaxProfit,TotalProfit)IF close crosses under average[200] thensellshort at marketendifif close crosses over average[200] and (barindex - tradeindex > 5) thenexitshort at marketendifIF (StrategyProfit > 0) AND (TotalProfit <= (MaxProfit - (MaxProfit * Percentage / 100))) THENQUITENDIFgraph CurrentProfitgraph StrategyProfitgraph TotalProfit2 users thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on