Files
FX-ML-Trading-Engine/Q Research/scripts/__pycache__/paper_trade.cpython-312.pyc
T

75 lines
14 KiB
Plaintext
Raw Normal View History

2025-11-14 23:16:51 +00:00
Ë
Ê i2%ã óÌdZddlmZddlZddlZddlZddlmZmZddl Z
ddl m Z ddl
Z
ddlZddlZej j#ej j%ej j%ej j'e««««ddlmZddlmZddlmZmZdd lmZmZmZm Z m!Z!dd
l"m#Z#m$Z$Gd d «Z%dd
Z&ddZ'dZ(e)dk(re(«yy)zN
Paper trading driver that wires live OANDA pricing into the strategy engine.
é)Ú annotationsN)ÚEmptyÚQueue)Úlogger)ÚOandaPricingStream)ÚOandaExecution)Ú TickEventÚ
OrderEvent)ÚStrategyEngineÚ StrategySpecÚparse_strategy_specsÚ_coerce_fx_ratesÚ_merge_fx_rates)ÚOANDA_ACCOUNT_IDÚ OANDA_TOKENcó@eZdZdZd dZd
dZd dZd dZd
dZddZ y)Ú
BarAggregatorz=
Aggregate tick data into fixed timeframe OHLC bars.
cóz|jdd«j«|_t|t«r|j «n|}t
j|«|_|jt
jd«krtd|«d|_ dx|_ x|_
x|_|_d|_y)rzInvalid timeframe: )ÚreplaceÚupperÚsymbolÚ
isinstanceÚstrÚlowerÚpdÚ to_timedeltaÚ timeframeÚ TimedeltaÚ
ValueErrorÚcurrent_bucketÚopenÚhighÚlowÚcloseÚlast_ts)ÚselfrrÚtfs úB/Users/chuan/Documents/Projects/FX_Backtest/scripts/paper_trade.pyÚ__init__zBarAggregator.__init__&sØ—nn S¨"Ó-×5ˆŒ Ü",¨Y¼Ô"<ˆY_‰_Ô
À)ˆÜŸ¨ÓŒØ >‰>œRŸ\™\¨! Ð2°9°+Ð ?Ø37ˆÔØ8<Ð<ˆŒ Ð<D”IÐ< ¤¨4¬:Ø,0ˆ ócó|tj|j«}|j|j«}|j
|j zdz }|j|j|||«y||jk7r%|j«}|j|||«|S|j||«y)@) rÚ TimestampÚtsÚfloorrÚbidÚaskr"Ú
_start_barÚ
_build_barÚ _update_bar)r(Útickr0ÚbucketÚmidÚfinisheds r*ÚupdatezBarAggregator.update0Ü
\‰\˜$Ÿ'™'Ó
ؘ$Ÿ.™.ÓØx‰x˜$Ÿ(™(Ñ" )ˆØ × Ñ Ð O‰O˜F Ô Ø  Ó(ˆHØ O‰O˜F C¨Ô ˆOØ ×ј˜bÔr,có<|jy|j«S©N)r"r5)r(s r*ÚflushzBarAggregator.flush>sØ × Ñ Ð ØÓ Ð r,cóX||_|x|_x|_x|_|_||_yr=)r"r#r$r%r&r')r(r8Úpricer0s r*r4zBarAggregator._start_barCs-Ø$ˆÔØ8=ÐŒ Ð=D”IФ¨4¬:؈ r,cóŒt|j|«|_t|j|«|_||_||_yr=)Úmaxr$Úminr%r&r')r(r@r0s r*r6zBarAggregator._update_barHs4ܘŸ ™  5ÓŒ Üt—x‘x ÓŒØˆŒ
؈ r,cóÚ|j|jt|j«t|j«t|j
«t|j «ddœ}|S)Nr)rr0r#r$r%r&Úvolume)rr'Úfloatr#r$r%r&)r(Úbars r*r5zBarAggregator._build_barNsPà—k—,‘,ܘ$Ÿ)™)Ó˜$Ÿ)™)Ó˜Ÿ“?ܘ4Ÿ:™:Óñ
ˆðˆ
r,N)rrrr)r7r Úreturnú dict | None)rHrI)r8ú pd.Timestampr@rFr0rJrHÚNone)r@rFr0rJrHrK)rHÚdict)
Ú__name__Ú
__module__Ú __qualname__Ú__doc__r+r;r>r4r6r5©r,r*rr!s%ñó ó
ó
ô
r,rcó|t|dd¬«5}tj|«xsicddd«S#1swYyxYw)rzutf-8)Úencoding)r#ÚyamlÚ safe_load)ÚpathÚfs r*Ú load_configrY[s-Ü
ˆdC 'Õ *¨aÜ~‰~˜ Ò& 
+× *Ò *ús2²;có|jxs|jdd«}|jdd«}t|jdd««}t|jdd««}t|jd d
««}t|jd d ««}t|jd
d««} t|jdd««}
t|jdd««} |jdd«} |jd«}
|jd«}|jd«}t|jdd««}t|jdd««}|jd«}| t|«}|jd«}| t|«}t |jdd««}t|jdd
««}t|jdd ««}t |jd!d««}t|jd"d#««}t|jd$d#««}t |jd%d&««}t |jd'd««}|jd(«}|jd)«}|jd*«}t |jd+««}t |j «} t|| «}!t|jd,««}"td6id|d-|d.|d/|d0| “d1|d2| d3|
d|d|d|d|d|d|d|d|d|d!|d"|d$|d|
d|d+|!“d4|"“d%|d'|d(|d)|d*|d5|Ž}#|#j| «|#|| fS)7NrÚEURUSDÚ account_ccyÚUSDÚfasté2ÚslowéÈÚspreadçð?Úslipgš™™™™™É?Úcommr.Úqtyi'Úcashi †ÚslÚtpÚatr_slÚatr_tpÚ
atr_windowéÚ
rsi_periodÚrsi_long_threshÚrsi_short_threshÚenable_trailingFÚtrailing_enable_atr_multÚtrailing_atr_multgà?Úlong_only_above_slowÚslope_lookbackrÚcooldownÚ allow_shortTÚshort_only_below_slowÚrisk_per_trade_pctÚmax_drawdown_pctÚmax_position_unitsÚfx_ratesÚ
strategiesÚfast_winÚslow_winÚ spread_pipsÚcommission_per_millionÚ
slippage_pipsÚstop_loss_pipsÚtake_profit_pipsÚstrategy_specsÚexecution_handlerrQ) rÚgetÚintrFÚboolrÚfx_raterr
r Úset_initial_cash)$ÚcfgÚargsr†rr\r~rrbrdrerfÚ initial_cashrƒr„rjrkrlrnrorprqrrrsrtrurvrwrxryrzr{Ú cfg_fx_ratesÚ cli_fx_ratesr|r…Úengines$ r*Ú build_enginer`Ø
[‰[Ò
7˜CŸG™G H¨hÓ7€FØ—''˜Ó/€KÜ3—77˜6 '€HÜ3—77˜6 (€HÜ
3—77˜8 
*€FÜ ˜ Ó &€DÜ ˜ Ó &€DÜ
˜˜
'€CܘŸ ¨Ó2€LØ—WW˜T &€NØ—ww˜t“}ÐØ
W‰W
€FØ
W‰W
€FÜS—W‘W˜\¨2Ó/€JÜS—W‘W˜\¨2Ó/€JØ—g0€OØÐ ÓØ—w‘wÐØÐ Ð!1Óܘ3Ÿ7™7Ð#4°eÓ=€OÜ$ S§W¡WÐ-GÈÓ%MÓܘcŸg™gÐ&9¸3ÓÜ §¡Ð(>ÀÓ FÓܘŸÐ!1°1Ó6€NÜ3—77˜: *€HÜs—w‘w˜}¨dÓ4€KÜ  §¡Ð)@À%Ó!HÓØŸÐ!5ÓØ—w‘wÐØŸÐ!5Óä# C§G¡G¨JÓ$7Ó8€LÜ# D§L¡LÓ1€Lܘ|¨\Ó:€Hä)¨#¯'©'°,Ó*?Ó@€Nä
òÙðáðñðñð ñ
ñ ð
ñññðñðñðñðññññ ":ð!ñ",ð#ñ$2ð%ñ&&ð'ñ(ð)ñ*
ð+ñ, ð-ñ.ð/ñ0&ð1ñ2 ð3ñ44ð5ñ6.ð7ñ8*ð9ñ:.ð;ñ<,ð=€Fð@ ×ј 6˜ 'r,c óŒtjd¬«}|jddd¬«|jddd¬ «|jd
d d ¬ «|jd
dddgd¬«|jdddd¬«|jdtdd¬«|jddd¬«|j «}t |j «}t}t}|r|s td«t«}t||||j¬«}t|||j«\}}} t||j «}
t«} t#| ||g||j|j$¬«} d Šˆfd!„}
t'j&t&j(|
«t'j&t&j*|
«t-j.d"|d#|j d$«| j1«d%} s | j3d&¬'«}t7|t8«sŒ&|
j;|«}|rG|j=|«|d(z
}|j>r%||j>k\rt-j.d)«nsŒ| jA«|
jC«}|r|j=|«|jE«|jG«}|jIt|j3d*d+««t|j3d,d-««|¬.«|jKt|j3d*d+««t|j3d,d-««|¬.«}|d/|d/n |jL}|| z d&z
d0z}t-j.d1|jNd2|jP«t-j.d3|d4d#|d4d5«g} |jS«}|jU|«Œ##t4$rYŒwxYw#| jA«wxYw#t4$rYnwxYw|r |D]}t-j.d6|«Œyy)7NzOANDA paper trading driver)Ú descriptionz--configTuç­–ç•¥é…ç½® YAML)ÚrequiredÚhelpz--symbolu覆盖é…置中的交易å“ç§)Údefaultrz --timeframeÚ60suK线时间粒度,默认 60sz
--environmentÚpracticeÚliveu OANDA 环境)r—Úchoicesrz --fx-rateÚappendu!é¢å¤–汇率,示例 GBPUSD=1.27)Úactionr—rz
--max-barsu)最多生æˆå¤šå°‘æ ¹ bar åŽè‡ªåŠ¨åœæ­¢)Útyper—rz--log-heartbeatÚ