Files
FX-ML-Trading-Engine/Q Research/strategies/__pycache__/regime_sma.cpython-313.pyc
T

54 lines
12 KiB
Plaintext
Raw Normal View History

2025-11-14 23:16:51 +00:00
ó
Úji•%ãólSSKJr SSKJr SSKJr SSKJr SSKJr \"S5"SS \55r g
) é)Ú annotations)Údatetimeé)Úregister)ÚStrategy)ÚSmaAtrÚ
regime_smacóÄ^\rSrSrSrS
SU4SjjjrSSjrSSjrSSjrSSjr SSjr
SS jr SS
jr S r
S rU=r$)ÚRegimeSMAStrategyé
Wraps the SMA+ATR strategy with a simple regime filter.
- 在趋势 regime(由 StrategyEngine æä¾›ï¼‰ä¸‹ï¼Œæ²¿ç”¨ SmaAtr ä¿¡å·ã€‚
- åœ¨éœ‡è¡ regime 下,å¯é€‰æ‹©ä¿æŒç©ºä»“或使用简å•çš„ RSI å‡å€¼å›žå½’。
c ó„>[TU]5 U=(d SR5Ul[ U5Ul[ U5UlUR
UR -S- Ul[U=(d S5Ul UcUO
[ U5Ul
[ U=(d S5Ul URU5Ul
[U 5UlU
(a%U
upÍ[ U 5Ul[ U
5UlOSUlSUlU =(d /UlU=(d 0n['S0UD6Ulg)flatg@rçð?g>@g€Q@©)ÚsuperÚ__init__ÚlowerÚ
range_modeÚfloatÚrange_rsi_highÚ
range_rsi_lowÚrange_exit_midÚintÚtrend_min_barsÚatr_percentile_minÚbase_size_multÚ_normalize_tiersÚ
size_tiersÚboolÚ
htf_alignmentÚ htf_rsi_minÚ htf_rsi_maxÚ
risk_rulesrÚtrend_strategy)ÚselfÚ trend_paramsrrrrrrrr Ú
htf_rsi_ranger#ÚloÚhiÚ __class__s €ÚR/Users/chuan/Documents/Projects/FX_Backtest/QuantResearch/strategies/regime_sma.pyrÚRegimeSMAStrategy.__init__sø€ô ÑÔØ×ŒÜ# 3ˆÔÜ" 1ˆÔØ#×2°T×5GÑ5GÑGÈ3ÑNˆÔÜ! .×"5°AÓ6ˆÔØ8JÑ8RÑ"4ÔX]Ð^pÓXqˆÔÜ# N×$9°cÓÔØ×
ÓŒÜ! -ÓÔÞ Ø"‰Fˆ$ Ryˆ Ü$ R›yˆDÕ à#ˆDÔ Ø#ˆDÔ ØˆŒà) rˆ Ü4 |ÑÕócó:URU5nU(aSUS.$URSS5n[URSS5=(d S5nURS5nURR U5=(d 0nURSS5nUS :XUR
(aX@R
:aS
nO!UR bUbXPR :aS
nUS :XaPURS 5(a:URXq5(dS
nO)[U5nURXq5US 'U$US :XaU$US :XaU$URS
5(aU$URU5n U (aSU 0$URS5(aSS0$SS0$)HOLD)ÚactionÚ
cooldown_barsÚ regime_labelÚunknownÚregime_trend_barsrÚatr_percentiler0ÚtrendÚrangeÚENTERÚsizeÚEXITÚposition) Ú_check_risk_rulesÚgetrr$Úon_barrrÚ
startswithÚ_passes_htf_filterÚdictÚ_position_sizeÚ
_range_signal)
r%ÚstateÚcooldownr2Ú trend_streakr5Ú base_signalr0ÚsizedÚ range_actions
r+r>ÚRegimeSMAStrategy.on_bar9s—Ø×)¨%ÓÞ Ø$°xÑ —y‘y °Ó ܘ5Ÿ9™9Ð%8¸!ÓÓ ØŸÐ#3ÓØ×Ó=¸2ˆ Ø ¨6Óà ˜ ×"×" |×6IÑ6IÓ'IØ& Ø×)¨^×>UÑ>UÓ-UØ#*˜&¨6×+<Ñ+<¸W×+EÑ+EØ×.¨v×=Ø#*  Ó-EØ$(×$7Ñ$7¸Ó$FE˜&  Ó ˜ Ð ð × Ñ ˜V× Ð ð×)¨%Ó Þ Ø˜lÐ  9‰9 Ñ à˜ ˜!r-cóURS:wagURS5nUcgURSS5nUS:Xa"X RagX R::aggUS:”aX RagUS:aX R::agg) NÚ mean_revertÚrsir;rÚ ENTER_SHORTÚ
ENTER_LONGÚ EXIT_LONGÚ
EXIT_SHORT)rr=rrr)r%rDrMr;s r+rCÚRegimeSMAStrategy._range_signalgs•Ø ?‰?˜mÓ Øi‰i˜ÓˆØ ‰;Øà—9‘9˜Z¨ÓØ q‹=Ø×× ð ˜‹\˜c×%8Ñ%8ÓØ
˜‹\˜c×%8Ñ%8ÓØr-cóUR(dgURS5nUcgURS5nUcgUS:XaXC:agUS:XaXC:”agURS5nUbXPR:dXPR:”agg)NTÚhtf_emaFÚcloserOrNÚhtf_rsi)r r=r!r")r%r0rDrTrUrVs r+r@Ú$RegimeSMAStrategy._passes_htf_filterzs‰Ø×!ר—)‘)˜IÓØ ‰?ØØ ˜"ˆØ ‰=ØØ  ! e£oØØ  " ØØ—))˜Ø Ñ Ø×)¨W×7GÑ7GÓ-GØØr-có^U(dSUR0/$/nUHYn[U[5(dMUR5n[ UR SS55US'UR
U5 M[ U(dUR
SUR05 URSSS9 U$)NÚ size_multrcó&URSS5$)NrYr)r=)Úts r+Ú<lambda>Ú4RegimeSMAStrategy._normalize_tiers.<locals>.<lambda>™s a§e¡e¨K¸Ô&;r-T)ÚkeyÚreverse)rÚ
isinstancerAÚcopyrr=ÚappendÚsort)r%ÚtiersÚ
normalizedÚtierÚentrys r+rÚ"RegimeSMAStrategy._normalize_tierss ÞØ  $×"5Ñ"5Ð ˆ
ÛˆDܘd¤Dר—II“KˆEÜ!& u§y¡y°¸cÓ'BÓ!CˆE Ø × Ñ ˜eÖ ö Ø × Ñ ˜{¨D×,?Ñ,?Ð Ñ;ÀTˆÑÐr-có€[URS5=(d S5nUS::agURS5nURS5n[URSS5=(d S5nURH1nUR XtXVU5(dMX7RSS5-s $ X0R
-$) NÚ default_qtygrr5Útrend_strengthr4rYr)rr=rrÚ
_tier_matchesr)r%r0rDÚbase_qtyÚatr_pctrkÚstreakrfs r+rBÚ RegimeSMAStrategy._position_sizeœÜ˜Ÿ =Ó8°SÓØ q‹=ØØ—)‘)ÐØŸÐ#3ÓÜU—Y‘YÐ2°AÓ6×;¸!Ó<ˆØ—O”OˆDØ×! $°È×§(¡(¨;¸Ó"<Ñ×-r-cóªURS5nURS5nURS5nURS5n URS5n
URS5n UbUbU[U5:agUbUbU[U5:”agUbUbU[U5:agU bU[U 5:agUS:XaU SLagUS :XaU
SLagg
) min_atr_pctÚ max_atr_pctÚmin_trend_strengthÚmin_trend_barsÚ allow_shortÚ
allow_longFrOrNT)r=rr) r%rfrnrkror0Úmin_atrÚmax_atrÚ min_strengthÚ
min_streakrvrws r+rlÚRegimeSMAStrategy._tier_matches¨Ø—(‘(˜=ÓØ—(‘(˜=ÓØ—x‘xÐ 4Ó Ø—X‘XÐ
Ø—h‘h˜}Ó Ø—X‘X˜lÓ