Files
big-qmt/py-client/strategy/trend/__pycache__/positions.cpython-311.pyc

50 lines
7.6 KiB
Plaintext
Raw Normal View History

2026-08-28 18:52:27 +08:00
<EFBFBD>
<00>e<EFBFBD>j<EFBFBD><00><01><><00>dZddlmZddlZddlmZddlmZmZddl m
Z
m Z ddl m Z mZddlZdd lmZdd
lmZmZmZdd lmZd Zd ZdaddgZdZd%d<19>Zd&d!<21>Zd'd#<23>Zd(d$<24>Z dS))uN趋势策略持仓管理逻辑,对应 Go 版本的 ``logic/positions.go``。<>)<01> annotationsN)<01>floor)<02>calc_buy_volume<6D>calculate_min_profit_rate)<02> GridState<74>GridTrailingTracker)<02>OP_BUY<55>OP_SELL<4C>)<01>PlaceOrderRequest)<03>
STATUS_ING<EFBFBD> STATUS_NONE<4E> STATUS_OK)<01>Runtime<6D>base<73>addi<64><69><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD>g<00>?<3F>runr<00> market_ok<6F>bool<6F> available<6C>float<61>return<72>Nonec
<01>&<00>tjdt|<02><00><00>d<02><03><00>t|jj<00><03><00>a|D<00>]<5D>\}}|d}|<06>dd<06><00>}|<06>dd<06><00>} |<06>dd<06><00>}
|<01>|i<00><00><00>d d<06><00>} |<06>d
d <0B><00>} |<06>d d<06><00>} |<06>d d<06><00>}|tj j
vr<01><>|dks|
dks | dks| dkr<01><>|dkr | |z
|z dznd}t|d<0F><00>}t|d<10><00>}t||||||
| <0C><00>\}}|rtjd|d|<12><00><02><00>|d krtjd||<12><00>tj jrQ|rOt||| || ||<04><00>\}}|rtjd|d|<12><00><02><00>|d krtjd||<12><00><00><01><>dS)u执行持仓计算。u 持仓u 支股票,开始处理)<01>step<65>
stock_code<EFBFBD> avg_pricer<00>volume<6D>can_use_volume<6D> lastPrice<63> strategy_name<6D><00> market_value<75> profit_rate<74>d<00>r <00>profitu止盈执行 | <20>lossu补仓执行 | N)<10>logging<6E>info<66>lenr<00> account_cfg<66> grid_step_pct<63>profit_tracker<65>get<65>config<69>account_config<69>excluded_codes<65>roundr<00> handle_profit<69>enable_loss_add_position<6F> handle_loss)r<00>ticks<6B> positionsrr<00>idx<64>pos<6F>coderrr<00> current_pricer!r#r'<00> pnl_ratio<69>min_profit_rate_val<61> is_closed<65>message<67>is_replenisheds <20>;D:\work\quant\big-qmt\py-client\strategy\trend\positions.py<70>manage_positionsrCsb<00><00> <0B>L<EFBFBD>F<>S<EFBFBD><19>^<5E>^<5E>F<>F<>F<>G<>G<>G<>)<29>s<EFBFBD><EFBFBD>/L<>M<>M<>M<>N<EFBFBD><1C>&4<>&4<><07><03>C<EFBFBD><12><<3C> <20><04><17>G<EFBFBD>G<EFBFBD>K<EFBFBD><11>+<2B>+<2B> <09><14><17><17><18>1<EFBFBD>%<25>%<25><06><1C><17><17>!1<>1<EFBFBD>5<>5<><0E><1D> <09> <09>$<24><02>+<2B>+<2B>/<2F>/<2F> <0B>Q<EFBFBD>?<3F>?<3F> <0A><1B><07><07><0F><12>4<>4<> <0A><1A>w<EFBFBD>w<EFBFBD>~<7E>a<EFBFBD>0<>0<> <0C><14><17><17><1D><01>*<2A>*<2A><06> <10>6<EFBFBD>(<28>7<> 7<> 7<> <14> <15><01>><3E>><3E>^<5E>q<EFBFBD>0<>0<>M<EFBFBD>Q<EFBFBD>4F<34>4F<34>&<26>TU<54>+<2B>+<2B> <14>FO<01>RS<52>^<5E>^<5E>]<5D>Y<EFBFBD>.<2E>)<29>;<3B>c<EFBFBD>A<>A<>YZ<59> <09><19>)<29>Q<EFBFBD>'<27>'<27> <09>8<> <09>1<EFBFBD>E<>E<><1B>+<2B>3<EFBFBD>t<EFBFBD>I<EFBFBD>y<EFBFBD>J]<5D>_m<5F>o|<7C>}<7D>}<7D><1A> <09>7<EFBFBD> <14> F<01> <13>L<EFBFBD><18>4<EFBFBD>)D<>7<EFBFBD>)D<>)D<> E<> E<> E<> <12>b<EFBFBD>=<3D>=<3D> <13>L<EFBFBD><18>4<EFBFBD><17> 1<> 1<> 1<> <12> <20> 9<> 4<>i<EFBFBD> 4<>&1<>#<23>d<EFBFBD>=<3D><19>S_<53>`i<>js<6A>&t<>&t<> #<23>N<EFBFBD>G<EFBFBD><1D> H<01><17> <0C>V<EFBFBD>T<EFBFBD>+F<>W<EFBFBD>+F<>+F<>G<>G<>G<><16>"<22>}<7D>}<7D><17> <0C>V<EFBFBD>T<EFBFBD>7<EFBFBD>3<>3<>3<><33>M&4<>&4<>r;<00>str<74>pnl_rate<74>min_profit_rate<74>vol<6F>int<6E>tuple[bool, str]c<01>`<00>||krdS|jj<00>d|<01><00>}t<00>||<02><00>}|jt
jkrd|<02>d|j<00><00>}d|fS|jt
jkrdd|<02>d|j<00><00>fS|jt
j kr<>|j
<00> t<00><00>}t|jt|||<08><00>} |j
<00>| <09><00>}
|
r#d|<04>d |
<EFBFBD>d
<EFBFBD>} t#jd || <0B><00>d | fSd |<01><00>} t#jd |d<0E><00>d| fSdS)ug
盈利处理 - 基于网格的止盈策略
Args:
code: 股票代码
open_price: 开仓价格
pnl_rate: 当前盈亏率(百分比)
min_profit_rate: 最小利润率阈值
vol: 可用股数
strategy_name: str
Returns:
tuple[bool, str]: (是否执行平仓, 操作说明)
<20>Fr"<00>:u 首次达到u%设置峰值网格Fu 上涨至u%更新峰值网格u✓ 委托成功 | u股 订单号:u 等待成交r'Tu止盈委托失败: u✗ 止盈委托失败N)r,<00>
account_idr.<00>observe<76>stater<00>ARMED<45> current_grid<69>RAISED<45>RETREAT<41>orders<72> new_order_id<69>LEG_BASEr <00>clientr
<00>placer)r*<00>error) rr;rFrGrH<00> position_key<65> observation<6F>msg<73>order_id<69>request<73>result<6C> success_msg<73>fail_msgs rBr4r4Isj<00><00>"<10>/<2F>!<21>!<21><18>y<EFBFBD><19>o<EFBFBD>0<>9<>9<>4<EFBFBD>9<>9<>L<EFBFBD> <20>(<28>(<28><1C>x<EFBFBD>@<40>@<40>K<EFBFBD><12><18>I<EFBFBD>O<EFBFBD>+<2B>+<2B>W<>X<EFBFBD>W<>W<>[<5B>=U<>W<>W<><03><14>c<EFBFBD>z<EFBFBD><19><12><18>I<EFBFBD>,<2C>,<2C>,<2C><14>\<5C>(<28>\<5C>\<5C>+<2B>BZ<42>\<5C>\<5C>\<5C>\<5C><13><18>I<EFBFBD>-<2D>-<2D>-<2D><16>:<3A>*<2A>*<2A>8<EFBFBD>4<>4<><08>#<23>C<EFBFBD>J<EFBFBD><07><14>s<EFBFBD>H<EFBFBD>M<>M<><07><14><1A>!<21>!<21>'<27>*<2A>*<2A><06> <11> #<23>X<><03>X<>X<>6<EFBFBD>X<>X<>X<>K<EFBFBD> <13>L<EFBFBD><18>4<EFBFBD><1B> 5<> 5<> 5<><17><1B>$<24> $<24>4<>d<EFBFBD>4<>4<>H<EFBFBD> <13>M<EFBFBD>(<28>D<EFBFBD>*B<> C<> C<> C<><18>(<28>?<3F> "<22>.<2E>-rDr#c<01><><00>|j<00>|<01><00>}|<07>d<01><00>}|tdkrdS|dks|dkr dd|<02>d|<04>d <09>fS|r|j<00>d
||<02><00>sdSt ||jj<00><00>} || z}
|
|kr dd |<01>d |
<EFBFBD>d <0A>fS|j<00> ||d<0E><00>rd|<01>d<0F>fS|j<00>
t<00><00>} t|j t|| | <0B><00>} |j<00>| <0C><00>} | r%|j<00>|<01><00>dd|<01>d| <09>d<13>fSdd|<01><00>fS)uH满足条件时提交补仓委托并返回扣减后的剩余预算。r"rrL<00><>i`<60>Fu 成本价u>200,仓位价值u>=60000, 不补仓u补仓<E8A1A5>fz fu 仓位资金不够补仓<E8A1A5>BUYu订单锁定中Tu补仓委托成功: <20> u手, 等待成交确认u补仓失败: )rPr/<00>
LOSS_TIERS<EFBFBD> add_watch<63> triggeredrr,<00> buy_valuerU<00>busyrV<00> LEG_ADDEDr rXr rY<00>forget)rr;r<rFr#rrrP<00> added_numr<00>amountr^r_r`s rBr6r6vs<><00><00> <0F>I<EFBFBD>M<EFBFBD>M<EFBFBD>$<24> <1F> <1F>E<EFBFBD><15> <09> <09>"<22> <0A> <0A>I<EFBFBD><0F>*<2A>Q<EFBFBD>-<2D><1F><1F><18>y<EFBFBD><15>S<EFBFBD><18><18>L<EFBFBD>%<25>/<2F>/<2F><14>b<>-<2D>b<>b<>,<2C>b<>b<>b<>b<>b<> <15><15>C<EFBFBD>M<EFBFBD>3<>3<>H<EFBFBD>d<EFBFBD>M<EFBFBD>R<>R<><15><14>u<EFBFBD><1D>]<5D>C<EFBFBD>O<EFBFBD>,E<> F<> F<>F<EFBFBD> <1A>V<EFBFBD> #<23>F<EFBFBD><0E> <09><19><19><14>C<>$<24>C<>C<>&<26>C<>C<>C<>C<>C<> <0B>z<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>D<EFBFBD>%<25>(<28>(<28>/<2F><14><14>.<2E>.<2E>.<2E>.<2E>.<2E><13>z<EFBFBD>&<26>&<26>y<EFBFBD>1<>1<>H<EFBFBD><1F><03>
<EFBFBD>F<EFBFBD>D<EFBFBD>&<26>(<28>K<>K<>G<EFBFBD> <10>Z<EFBFBD> <1D> <1D>g<EFBFBD> &<26> &<26>F<EFBFBD> <0A>-<2D> <0B> <0A><1C><1C>T<EFBFBD>"<22>"<22>"<22><13>Q<>4<EFBFBD>Q<>Q<>&<26>Q<>Q<>Q<>Q<>Q<><14>,<2C>d<EFBFBD>,<2C>,<2C>,<2C>,rDc<01>P<00>|j<00>|<01>dt<00><00>d<02><00>dS)uB持仓退出后清理开仓、补仓观察记录和止盈峰值。<E580BC>|N)<03>
peak_grids<EFBFBD>poprm)rr;s rBrnrn<00>s0<00><00>
<08>N<EFBFBD><16><16>$<24>,<2C>,<2C><19>,<2C>,<2C>d<EFBFBD>3<>3<>3<>3<>3rD)rrrrrrrr) rrr;rErFrrGrrHrIrrJ) rrr;rEr#rrrrrrrJ)r;rErr)!<21>__doc__<5F>
__future__rr)<00>mathr<00> libs.calcrr<00>libs.grid_take_profitrr<00>sdkr r
r0<00>orderr rPr rr<00>runtimerrWrmr.rh<00>LOSS_REBOUND_THRESHOLDrCr4r6rn<00>rDrB<00><module>rsJ<00><01>T<>T<>"<22>"<22>"<22>"<22>"<22>"<22><0E><0E><0E><0E><16><16><16><16><16><16>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40><1F><1F><1F><1F><1F><1F><1F><1F> <0A> <0A> <0A> <0A>$<24>$<24>$<24>$<24>$<24>$<24>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<><1C><1C><1C><1C><1C><1C> <11><08> <11> <09><16><0E><12>3<EFBFBD>Z<EFBFBD>
<EFBFBD><1C><16>+4<>+4<>+4<>+4<>\*#<23>*#<23>*#<23>*#<23>Z$-<2D>$-<2D>$-<2D>$-<2D>N4<>4<>4<>4<>4<>4rD