Sharing a system
Forums › ProRealTime English forum › ProOrder support › Sharing a system
- This topic has 3 replies, 3 voices, and was last updated 2 days ago by
justisan.
-
-
04/23/2025 at 8:52 PM #246308
Hi guys,
I just finished reviewing this system, and everything looks good to me, so I wanted to share with you and know your opinion.
It is being difficult to me to find systems due Im dedication to each system 2000 USD, with risk per trade around 1.5-2%.
Apparently this one comply with my requirements, but I suspect that due to the high number of paramethers it may be overfitted. More than WF test, is there any other robustness test we can do with PRT?
DXSXXXX-1H-IchiMomADX123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119// Estrategia 3.22.100// DXSXXXX// 1HDEFPARAM CUMULATEORDERS = false// ParámetrosATRFallingPeriod1 = atrf //100IchimokuTenkanp = tenk //7IchimokuKijunp = kiju //20MomCrossPeriod1 = mcp //40MomLongLimit = mll //30MomShortLimit = msl //150ADXPeriod = adxp //20BarsBeforeExit = bbe //100ProfitTargetMultiplier = ptm //4StopLossPips = slpip //300TrailingStopPips = tspip //40TrailingActivationMultiplier = tam //2// IndicadoresatrFalling = average[ATRFallingPeriod1](tr)atrNow = average[15](tr)atrActivation = average[200](tr)ichimokuTenkan = (highest[IchimokuTenkanp](high) + lowest[IchimokuTenkanp](low)) / 2ichimokuKijun = (highest[IchimokuKijunp](high) + lowest[IchimokuKijunp](low)) / 2xmomentum = Momentum[MomCrossPeriod1](close)adxNow = ADX[ADXPeriod]// SeñaleslongEntrySignal = (atrFalling[1] < atrFalling[2]) and (ichimokuTenkan[1] CROSSES OVER ichimokuKijun[1])shortEntrySignal = (atrFalling[1] < atrFalling[2]) and (ichimokuTenkan[1] CROSSES UNDER ichimokuKijun[1])//GRAPH longEntrySignal//GRAPH shortEntrySignallongExitSignal = (atrFalling[1] < atrFalling[2]) and (xmomentum[3] CROSSES UNDER MomLongLimit) and adxNow[3] > adxNow[4]shortExitSignal = (atrFalling[1] < atrFalling[2]) and(xmomentum[3] CROSSES OVER MomShortLimit) and adxNow[3] > adxNow[4]//GRAPH longExitSignal//GRAPH shortExitSignal// ======= EJECUCIÓN DE ÓRDENES =======// Entradas Largasif longEntrySignal thenslPoints = StopLossPips * pointvaluetpPoints = ProfitTargetMultiplier * atrNowbuy 1 contract at marketset stop ploss slPointsset target pprofit tpPointsentryBarIndex = barindex//GRAPHONPRICE TRADEPRICE - slPointsendif// Entradas Cortasif shortEntrySignal and not longEntrySignal thenslPoints = StopLossPips * pointvaluetpPoints = ProfitTargetMultiplier * atrNowsellshort 1 contract at marketset stop ploss slPointsset target pprofit tpPointsentryBarIndex = barindex//GRAPHONPRICE TRADEPRICE - slPointsendif//GRAPH barindex - TRADEINDEX//GRAPHONPRICE TRADEPRICE + slPoints// ======= SALIDAS MANUALES POR CONDICIONES =======if longonmarket then// Salida por condición técnicaif longExitSignal and not longEntrySignal thensell at marketendif// Salida por tiempoif barindex - tradeindex = BarsBeforeExit thensell at marketendif// Trailing dinámicorunningProfit = close - tradeprice[1]activationLevel = TrailingActivationMultiplier * atrActivation//GRAPH runningProfit//GRAPH activationLeveltrailingDistance = TrailingStopPips * pointvalue//GRAPH trailingDistanceif runningProfit > activationLevel thennewStopLong = close - trailingDistanceif newStopLong > tradeprice[1] thensell at newStopLong stopendifendifendifif shortonmarket then// Salida por condición técnicaif shortExitSignal and not shortEntrySignal thenexitshort at marketendif// Salida por tiempoif barindex - tradeindex = BarsBeforeExit thenexitshort at marketendif// Trailing dinámicorunningProfit = tradeprice(1) - closeactivationLevel = TrailingActivationMultiplier * atrActivationtrailingDistance = TrailingStopPips * pointvalueif runningProfit > activationLevel thennewStopShort = close + trailingDistanceif newStopShort < tradeprice(1) thenexitshort at newStopShort stopendifendifendifTrying to collaborate at the same time that learning.
Thank you guys!
1 user thanked author for this post.
04/24/2025 at 9:04 AM #246324is there any other robustness test we can do with PRT?
You could try Monte-Carlo Testing.
https://www.prorealcode.com/topic/monte-carlo-analysis/If you not want to read all the posts, after you get a flavour, read from the most recent post backwards.
Let us know how you get on.1 user thanked author for this post.
04/24/2025 at 11:51 AM #246335You could try Monte-Carlo Testing.
https://www.prorealcode.com/topic/monte-carlo-analysis/I tested it with the excelsheet of khtradingsystems.com. It is fast and easy. However, dont know how to read some results.
MC is telling there is a chance of ruin about 1%. Is this reasonable ratio? Also, Return/DD ratio 3.83 doesnt look very good…
Additionally, I was thinking about it is better idea to avoid systems with long and shorts at the same time and analyse them independently, right?
Thank you @GraHal,
04/24/2025 at 12:58 PM #246343hi,
I have no clue what is generally best for testing robustness, and never in my life used montecarlo simulations, yet may I blabber a bit about robustnes still? in order to tell how I think and how I test it…
the more “degrees of freedom” = variables system has, the less robust it probably is. so one of my main targets when designing a system is to reduce variables to some very painful minimum. it lead in the deep past to the conclusion that I have to skip all commonly known “indicators” (and don’t develop some on my own instead 🙂 ). but since you are using them, you can still do something like this: remove just one of them from algo and watch how drastically algo’s performance changes. if it does not change drastically, you might skip it fully. and same way you check all others, one by one, all indicators – which are always a variable, but also other variables which are not based on indicators (can be stoploss/target(if not based on indicator) or time or whatever). second step: for variables I decide still to keep, I use PRT’s “optimization” tool – not so much for squeezing out “best ever” equity curve but more for testing out robustness: put one of the variables into “optimizer” and check how drastically results change. if small changes of parameter change results drastically, or if those small changes cause eratic changes in performance, then this variable (at least at tested interval of its values) I consider as one “killing” the robustnes. that might be good reason either to use completely different levels of particular variable – or to remove that variable from algo.
have fun!
justisan
2 users thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on