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

55 lines
11 KiB
Plaintext
Raw Normal View History

2025-11-14 23:16:51 +00:00
Ë
Úji•%ãólddlmZddlmZddlmZddlmZddlmZed«Gdd e««Z y
) é)Ú annotations)Údatetimeé)Úregister)ÚStrategy)ÚSmaAtrÚ
regime_smacó¨eZdZdZ d d ˆfd
Zd
dZddZddZddZddZ ddZ
dd „Z d
Z ˆxZ
S)ÚRegimeSMAStrategyuî
Wraps the SMA+ATR strategy with a simple regime filter.
- 在趋势 regime(由 StrategyEngine æä¾›ï¼‰ä¸‹ï¼Œæ²¿ç”¨ SmaAtr ä¿¡å·ã€‚
- åœ¨éœ‡è¡ regime 下,å¯é€‰æ‹©ä¿æŒç©ºä»“或使用简å•çš„ RSI å‡å€¼å›žå½’。
c óHt|«|xsdj«|_t |«|_t |«|_|j
|j zdz |_t|xsd«|_ ||n
t |«|_
t |xsd«|_ |j|«|_
t| «|_|
r&|
\} }
t | «|_t |
«|_nd|_d|_| xsg|_|xsi}t'di|¤Ž|_y)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.pyrzRegimeSMAStrategy.__init__sø€ô ÑÔØ×ŒÜ# 3ˆÔÜ" 1ˆÔØ#×2°T×5GÑ5GÑGÈ3ÑNˆÔÜ! .Ò"5°AÓ6ˆÔØ8JÐ8RÑ"4ÔX]Ð^pÓXqˆÔÜ# NÒ$9°cÓÔØ×
ÓŒÜ! -ÓÔÙ Ø"‰FˆBÜ$ Ryˆ Ü$ R›yˆDÕ à#ˆDÔ Ø#ˆDÔ ØˆŒà) rˆ Ü4 |ÑÕócóØ|j|«}|rd|dœS|jdd«}t|jdd«xsd«}|jd«}|jj |«xsi}|jdd«}|d k(r|j
r||j
krd
}n|j |||j krd
}|d k(rH|jd «r7|j||«sd
}n)t|«}|j||«|d <|S|d k(r|S|d k(r|S|jd
«r|S|j|«} | rd| iS|jd«rddiSddiS)HOLD)ÚactionÚ
cooldown_barsÚ regime_labelÚunknownÚregime_trend_barsrÚatr_percentiler.ÚtrendÚrangeÚENTERÚsizeÚEXITÚposition) Ú_check_risk_rulesÚgetrr#Úon_barrrÚ
startswithÚ_passes_htf_filterÚdictÚ_position_sizeÚ
_range_signal)
r$ÚstateÚcooldownr0Ú trend_streakr3Ú base_signalr.ÚsizedÚ range_actions
r*r<zRegimeSMAStrategy.on_bar9s“Ø×)¨%ÓÙ Ø$°xÑ —y‘y °Ó ܘ5Ÿ9™9Ð%8¸!ÓÓ ØŸÐ#3ÓØ×Ó=¸2ˆ Ø ¨6Óà ˜ ×" |°d×6IÑ6IÒ'IØ& Ø×)¨^¸d×>UÑ>UÒ-UØ#*˜&¨6×+<Ñ+<¸WÔ+EØ×.¨v°uÔ=Ø#*  Ó-EØ$(×$7Ñ$7¸ÀÓ$FE˜&  Ò ˜ Ð ð × Ñ ˜VÔ Ð ð×)¨%Ó Ù Ø˜lÐ  9‰9 à˜ ˜!r+có|jdk7ry|jd«}|y|jdd«}|dk(r!||jk\ry||jkryy|dkDr||jk\ry|dkr||jkryy) NÚ mean_revertÚrsir9rÚ ENTER_SHORTÚ
ENTER_LONGÚ EXIT_LONGÚ
EXIT_SHORT)rr;rrr)r$rBrJr9s r*rAzRegimeSMAStrategy._range_signalgs˜Ø ?‰?˜mÒ Øi‰i˜ÓˆØ ˆ;Øà—9‘9˜Z¨ÓØ qŠ=Ød×
𠘊\˜c T×%8Ñ%8ÒØ
˜Š\˜c T×%8Ñ%8ÒØr+cóþ|jsy|jd«}|y|jd«}|y|dk(r||kry|dk(r||kDry|jd«}|||jks||jkDryy)NTÚhtf_emaFÚcloserLrKÚhtf_rsi)rr;r r!)r$r.rBrPrQrRs r*r>z$RegimeSMAStrategy._passes_htf_filterzsØ×Ø—)‘)˜IÓØ ˆØ ˜"ˆØ ˆØ  ! e¨g¢oØØ  " u¨w¢ØØ—))˜Ø Рؘ×)¨W°t×7GÑ7GÒ-GØØr+có@|sd|jigSg}|D]R}t|t«sŒ|j«}t |j dd««|d<|j
|«ŒT|s|j
d|ji«|jdd¬«|S)NÚ size_multrcó&|jdd«S)NrTr)r;)Úts r*Ú<lambda>z4RegimeSMAStrategy._normalize_tiers.<locals>.<lambda>™s a§e¡e¨K¸Ô&;r+T)ÚkeyÚreverse)rÚ
isinstancer?Úcopyrr;ÚappendÚsort)r$ÚtiersÚ
normalizedÚtierÚentrys r*rz"RegimeSMAStrategy._normalize_tierssÙØ  $×"5Ñ"5Ð ˆ
ÛˆDܘd¤DÔØ—II“KˆEÜ!& u§y¡y°¸cÓ'BÓ!CˆE Ø × Ñ ˜eÕ ñ Ø × Ñ ˜{¨D×,?Ñ,?Ð Ñ;ÀTˆÔÐr+códt|jd«xsd«}|dkry|jd«}|jd«}t|jdd«xsd«}|jD].}|j |||||«sŒ||jdd«zcS||j
zS) NÚ default_qtygrr3Útrend_strengthr2rTr)rr;rrÚ
_tier_matchesr)r$r.rBÚbase_qtyÚatr_pctrdÚstreakr`s r*r@z RegimeSMAStrategy._position_sizeœÜ˜Ÿ =Ó8°SÓØ qŠ=ØØ—)‘)ÐØŸÐ#3ÓÜU—Y‘YÐ2°AÓ;¸!Ó<ˆØ—O”OˆDØ×! $¨°ÀÈÕ $§(¡(¨;¸Ó"<ј$×-r+cóŒ|jd«}|jd«}|jd«}|jd«} |jd«}
|jd«} |||t|«kry|||t|«kDry|||t|«kry| |t| «kry|dk(r| dury|d k(r|
duryy
) min_atr_pctÚ max_atr_pctÚmin_trend_strengthÚmin_trend_barsÚ allow_shortÚ
allow_longFrLrKT)r;rr) r$r`rgrdrhr.Úmin_atrÚmax_atrÚ min_strengthÚ