o
    Xi`                     @   s~   d Z ddlmZ ddlmZ dededefddZ			
	ddedededede	dede
dedefddZdedefddZdS )u   
仓位计算模块

核心公式：
仓位(保证金) = 风险金额 ÷ (止损距离 × 杠杆)
名义持仓 = 保证金 × 杠杆
   )settings)get_coinbalancemonth_start_balancereturnc                 C   s   t | |tj S )uZ   
    有效权益 = min(实际余额, 月初余额 × 3)
    防暴涨后重仓回吐
    )minSEFFECTIVE_EQUITY_MULTIPLIER)r   r    r
   !/opt/langlang_ai/core/position.pycalc_effective_equity   s   r         ?F        equitysl_distancecoinsignal_typeleverageposition_multcross_resonanceused_marginc              	   C   s  t |}t| }	| |	 }
|dkrtdS |
||  }tj|d}| | }t||}||9 }|r>tj\}}}t|| | }t|| tj }| tj	 | }|dkrUtdS t||}|| }t||j
}|| }|dkrptdS |||
|	|| dkr}||  nddddS )	u  
    完整仓位计算

    Args:
        equity: 有效权益
        sl_distance: 止损距离（百分比，如0.015=1.5%）
        coin: 币种
        signal_type: '共振', '日线', '4H', '做空'
        leverage: 杠杆倍数
        position_mult: 过滤层的仓位调整因子
        cross_resonance: 是否有跨币共振
        used_margin: 已使用保证金

    Returns:
        dict with margin, notional, risk_amount, etc.
        u   止损距离<=0g333333?u   总仓位已满u   保证金<=0F marginnotionalrisk_amountrisk_pctr   position_pctskipskip_reason)r   r   get_risk_per_trade_zero_positionPOSITION_LIMITgetr   ADJ_CROSS_RESONANCESINGLE_COIN_LIMITTOTAL_POSITION_LIMITliquidity_cap)r   r   r   r   r   r   r   r   cfgr   r   r   
type_limitmax_margin_by_type_multcap	availabler   r
   r
   r   calc_position   s@   


r0   reasonc              	   C   s   ddddddd| dS )Nr   Tr   r
   )r1   r
   r
   r   r"   h   s   r"   N)r   Fr   )__doc__configr   r   config.coinsr   floatr   strintbooldictr0   r"   r
   r
   r
   r   <module>   s6    	
S