
    ol.j                        d dl mZ d dlZd dlmc mZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ ddZddZddZddZdS )    )annotationsN)Decimal)Any)PositionCopySignalSignalDecision)evaluate_copy_signal	overridesr   returnr   c                    t          dddt          d          t          d          t          d          t          d          dt          d          t          d	          d
d          }|                    |            t          di |S )Nzleader-aBTClong12z0.2z0.02T20z0.005F)	leader_idcoinsideposition_age_hoursleader_profit_rdistance_to_leader_entry_pct
spread_pctdepth_okleader_liquidation_distance_pctfunding_rate_hourly_pctduplicate_exposureis_position_level )dictr   updater   )r	   datas     W/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_ctb_copy_pretrade_gate.py_signalr!   
   s    "4==%,U^^6??(/ ' 0 0   D 	KK	%%%%%    Nonec                    t          t                                } | j        }t          j        }||k    }|st          j        d|fd||f          dt          j                    v st          j	        |           rt          j
        |           ndt          j
        |          dt          j                    v st          j	        t                    rt          j
        t                    ndt          j
        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| j        }d}||k    }|st          j        d|fd	||f          dt          j                    v st          j	        |           rt          j
        |           ndt          j
        |          t          j
        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}d S )N==)zR%(py2)s
{%(py2)s = %(py0)s.decision
} == %(py6)s
{%(py6)s = %(py4)s.ALLOW_SHADOW
}decisionr   py0py2py4py6assert %(py8)spy8)ok_for_shadow_only)z/%(py2)s
{%(py2)s = %(py0)s.reasons
} == %(py5)s)r)   r*   py5assert %(py7)spy7)r   r!   r'   r   ALLOW_SHADOW
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationreasons)	r'   @py_assert1@py_assert5@py_assert3@py_format7@py_format9@py_assert4@py_format6@py_format8s	            r    7test_allows_clean_position_level_signal_for_shadow_onlyrE      s   #GII..H; ;; ;;;;;;;;;;; ;;;;;;;;;;;;;8;;;;;8;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;66666666666666666666666666686666686666666666666666666666666666666666666666r"   c                 ~   t          t          dt          d                              } | j        }t          j        }||k    }|st          j        d|fd||f          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dt          j	                    v st          j
        t                    rt          j        t                    ndt          j        |          dz  }d	d
|iz  }t          t          j        |                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d S )NF1)r   r   r%   zK%(py2)s
{%(py2)s = %(py0)s.decision
} == %(py6)s
{%(py6)s = %(py4)s.BLOCK
}r'   r   r(   r-   r.   fill_level_copying_disabledinz/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.reasons
}py1py3r0   r1   r2   position_age_below_6hr   r!   r   r'   r   BLOCKr4   r5   r6   r7   r8   r9   r:   r;   r<   r'   r=   r>   r?   r@   rA   @py_assert0rB   @py_assert2rC   rD   s              r    )test_blocks_fill_level_and_young_positionrV   #   s   #GeX_`cXdXd$e$e$effH4 44 44444444444 444444444444484444484444444444444444444444444444 4444444444444444444444444444(<H,<<(,<<<<<<<<<<<(,<<<<<<(<<<<<<<<<<<H<<<<<H<<<<<<,<<<<<<<<<<<<<<<<<<<<<<<<<<<<"6h&66"&66666666666"&666666"66666666666h66666h666666&666666666666666666666666666666r"   c            	        t          t          t          d          t          d          t          d          d                    } | j        }t          j        }||k    }|st          j        d|fd||f          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          d	t          j	                    v st          j
        t                    rt          j        t                    nd	t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |           rt          j        |           ndt          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d S )Nz0.8z1.2z0.05T)r   r   r   r   r%   rH   r'   r   r(   r-   r.    leader_already_above_0_5r_profitrJ   rL   rM   r1   r2   "distance_to_leader_entry_too_largefunding_extreme"duplicate_exposure_already_presentrQ   rS   s              r    6test_blocks_chasing_bad_funding_and_duplicate_exposurer\   *   s   ##ENN)0$+FOO#		
 	
 	
 H 4 44 44444444444 444444444444484444484444444444444444444444444444 4444444444444444444444444444-A1AA-1AAAAAAAAAAA-1AAAAAA-AAAAAAAAAAAAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAA/C83CC/3CCCCCCCCCCC/3CCCCCC/CCCCCCCCCCC8CCCCC8CCCCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCC0 00 00000000000 0000000000000000000000000000 0000000000000000000000000000/C83CC/3CCCCCCCCCCC/3CCCCCC/CCCCCCCCCCC8CCCCC8CCCCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCr"   )r	   r   r
   r   )r
   r#   )
__future__r   builtinsr6   _pytest.assertion.rewrite	assertionrewriter4   decimalr   typingr   src.ctb_copy.modelsr   r   $src.ctb_copy.risk.copy_pretrade_gater   r!   rE   rV   r\   r   r"   r    <module>rf      s    " " " " " "                           B B B B B B B B E E E E E E& & & &&7 7 7 77 7 7 7D D D D D Dr"   