shorting test_calc_close_trade_price
This commit is contained in:
parent
c5add66fda
commit
820944e5cd
@ -299,6 +299,8 @@ def test_update_open_order(limit_short_order):
|
|||||||
amount=5,
|
amount=5,
|
||||||
fee_open=0.1,
|
fee_open=0.1,
|
||||||
fee_close=0.1,
|
fee_close=0.1,
|
||||||
|
interest_rate=0.0005,
|
||||||
|
is_short=True,
|
||||||
exchange='binance',
|
exchange='binance',
|
||||||
)
|
)
|
||||||
assert trade.open_order_id is None
|
assert trade.open_order_id is None
|
||||||
@ -312,14 +314,18 @@ def test_update_open_order(limit_short_order):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("init_persistence")
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
def test_calc_open_trade_value(market_short_order, fee):
|
def test_calc_open_trade_value(market_short_order, ten_minutes_ago, fee):
|
||||||
trade = Trade(
|
trade = Trade(
|
||||||
pair='ETH/BTC',
|
pair='ETH/BTC',
|
||||||
stake_amount=0.001,
|
stake_amount=0.001,
|
||||||
amount=5,
|
amount=5,
|
||||||
open_rate=0.00004173,
|
open_rate=0.00004173,
|
||||||
|
open_date=ten_minutes_ago,
|
||||||
fee_open=fee.return_value,
|
fee_open=fee.return_value,
|
||||||
fee_close=fee.return_value,
|
fee_close=fee.return_value,
|
||||||
|
interest_rate=0.0005,
|
||||||
|
is_short=True,
|
||||||
|
leverage=3.0,
|
||||||
exchange='kraken',
|
exchange='kraken',
|
||||||
)
|
)
|
||||||
trade.open_order_id = 'open_trade'
|
trade.open_order_id = 'open_trade'
|
||||||
@ -331,30 +337,80 @@ def test_calc_open_trade_value(market_short_order, fee):
|
|||||||
assert trade._calc_open_trade_value() == 0.011481905420932834
|
assert trade._calc_open_trade_value() == 0.011481905420932834
|
||||||
|
|
||||||
|
|
||||||
# @pytest.mark.usefixtures("init_persistence")
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
# def test_calc_close_trade_price(limit_buy_order, limit_sell_order, fee):
|
def test_calc_close_trade_price(market_short_order, market_exit_short_order, ten_minutes_ago, fee):
|
||||||
# trade = Trade(
|
"""
|
||||||
# pair='ETH/BTC',
|
10 minute short market trade on Kraken at 3x leverage
|
||||||
# stake_amount=0.001,
|
Short trade
|
||||||
# amount=5,
|
fee: 0.25% base
|
||||||
# open_rate=0.00001099,
|
interest_rate: 0.05% per 4 hrs
|
||||||
# fee_open=fee.return_value,
|
open_rate: 0.00004173 base
|
||||||
# fee_close=fee.return_value,
|
close_rate: 0.00001234 base
|
||||||
# exchange='binance',
|
amount: 91.99181073 * leverage(3) = 275.97543219 crypto
|
||||||
# )
|
borrowed: 275.97543219 crypto
|
||||||
# trade.open_order_id = 'close_trade'
|
time-periods: 10 minutes(rounds up to 1 time-period of 4hrs)
|
||||||
# trade.update(limit_buy_order) # Buy @ 0.00001099
|
interest: borrowed * interest_rate * time-periods
|
||||||
# # Get the close rate price with a custom close rate and a regular fee rate
|
= 275.97543219 * 0.0005 * 1 = 0.137987716095 crypto
|
||||||
# assert trade.calc_close_trade_value(rate=0.00001234) == 0.0011200318470471794
|
amount_closed: amount + interest = 275.97543219 + 0.137987716095 = 276.113419906095
|
||||||
# # Get the close rate price with a custom close rate and a custom fee rate
|
close_value: (amount_closed * close_rate) + (amount_closed * close_rate * fee)
|
||||||
# assert trade.calc_close_trade_value(rate=0.00001234, fee=0.003) == 0.0011194704275749754
|
= (276.113419906095 * 0.00001234) + (276.113419906095 * 0.00001234 * 0.0025)
|
||||||
# # Test when we apply a Sell order, and ask price with a custom fee rate
|
= 0.01134618380465571
|
||||||
# trade.update(limit_sell_order)
|
"""
|
||||||
# assert trade.calc_close_trade_value(fee=0.005) == 0.0010619972701635854
|
trade = Trade(
|
||||||
|
pair='ETH/BTC',
|
||||||
|
stake_amount=0.001,
|
||||||
|
amount=5,
|
||||||
|
open_rate=0.00001099,
|
||||||
|
fee_open=fee.return_value,
|
||||||
|
fee_close=fee.return_value,
|
||||||
|
open_date=ten_minutes_ago,
|
||||||
|
interest_rate=0.0005,
|
||||||
|
is_short=True,
|
||||||
|
leverage=3.0,
|
||||||
|
exchange='kraken',
|
||||||
|
)
|
||||||
|
trade.open_order_id = 'close_trade'
|
||||||
|
trade.update(market_short_order) # Buy @ 0.00001099
|
||||||
|
# Get the close rate price with a custom close rate and a regular fee rate
|
||||||
|
assert isclose(trade.calc_close_trade_value(rate=0.00001234), 0.003415757700645315)
|
||||||
|
# Get the close rate price with a custom close rate and a custom fee rate
|
||||||
|
assert isclose(trade.calc_close_trade_value(rate=0.00001234, fee=0.003), 0.0034174613204461354)
|
||||||
|
# Test when we apply a Sell order, and ask price with a custom fee rate
|
||||||
|
trade.update(market_exit_short_order)
|
||||||
|
assert isclose(trade.calc_close_trade_value(fee=0.005), 0.011374478527360586)
|
||||||
|
|
||||||
|
|
||||||
# @pytest.mark.usefixtures("init_persistence")
|
# @pytest.mark.usefixtures("init_persistence")
|
||||||
# def test_calc_profit(limit_buy_order, limit_sell_order, fee):
|
# def test_calc_profit(market_short_order, market_exit_short_order, fee):
|
||||||
|
# """
|
||||||
|
# Five hour short trade on Kraken at 3x leverage
|
||||||
|
# Short trade
|
||||||
|
# Exchange: Kraken
|
||||||
|
# fee: 0.25% base
|
||||||
|
# interest_rate: 0.05% per 4 hours
|
||||||
|
# open_rate: 0.02 base
|
||||||
|
# close_rate: 0.01 base
|
||||||
|
# leverage: 3.0
|
||||||
|
# amount: 5 * 3 = 15 crypto
|
||||||
|
# borrowed: 15 crypto
|
||||||
|
# time-periods: 5 hours = 5/4
|
||||||
|
|
||||||
|
# interest: borrowed * interest_rate * time-periods
|
||||||
|
# = 15 * 0.0005 * 5/4 = 0.009375 crypto
|
||||||
|
# open_value: (amount * open_rate) - (amount * open_rate * fee)
|
||||||
|
# = (15 * 0.02) - (15 * 0.02 * 0.0025)
|
||||||
|
# = 0.29925
|
||||||
|
# amount_closed: amount + interest = 15 + 0.009375 = 15.009375
|
||||||
|
# close_value: (amount_closed * close_rate) + (amount_closed * close_rate * fee)
|
||||||
|
# = (15.009375 * 0.01) + (15.009375 * 0.01 * 0.0025)
|
||||||
|
# = 0.150468984375
|
||||||
|
# total_profit = open_value - close_value
|
||||||
|
# = 0.29925 - 0.150468984375
|
||||||
|
# = 0.148781015625
|
||||||
|
# total_profit_percentage = (open_value/close_value) - 1
|
||||||
|
# = (0.29925/0.150468984375)-1
|
||||||
|
# = 0.9887819489377738
|
||||||
|
# """
|
||||||
# trade = Trade(
|
# trade = Trade(
|
||||||
# pair='ETH/BTC',
|
# pair='ETH/BTC',
|
||||||
# stake_amount=0.001,
|
# stake_amount=0.001,
|
||||||
@ -365,19 +421,19 @@ def test_calc_open_trade_value(market_short_order, fee):
|
|||||||
# exchange='binance',
|
# exchange='binance',
|
||||||
# )
|
# )
|
||||||
# trade.open_order_id = 'something'
|
# trade.open_order_id = 'something'
|
||||||
# trade.update(limit_buy_order) # Buy @ 0.00001099
|
# trade.update(market_short_order) # Buy @ 0.00001099
|
||||||
# # Custom closing rate and regular fee rate
|
# # Custom closing rate and regular fee rate
|
||||||
# # Higher than open rate
|
# # Higher than open rate
|
||||||
# assert trade.calc_profit(rate=0.00001234) == 0.00011753
|
# assert trade.calc_profit(rate=0.00004374) == 0.00011753
|
||||||
# # Lower than open rate
|
# # Lower than open rate
|
||||||
# assert trade.calc_profit(rate=0.00000123) == -0.00089086
|
# assert trade.calc_profit(rate=0.00000437) == -0.00089086
|
||||||
# # Custom closing rate and custom fee rate
|
# # Custom closing rate and custom fee rate
|
||||||
# # Higher than open rate
|
# # Higher than open rate
|
||||||
# assert trade.calc_profit(rate=0.00001234, fee=0.003) == 0.00011697
|
# assert trade.calc_profit(rate=0.00001234, fee=0.003) == 0.00011697
|
||||||
# # Lower than open rate
|
# # Lower than open rate
|
||||||
# assert trade.calc_profit(rate=0.00000123, fee=0.003) == -0.00089092
|
# assert trade.calc_profit(rate=0.00000123, fee=0.003) == -0.00089092
|
||||||
# # Test when we apply a Sell order. Sell higher than open rate @ 0.00001173
|
# # Test when we apply a Sell order. Sell higher than open rate @ 0.00001173
|
||||||
# trade.update(limit_sell_order)
|
# trade.update(market_exit_short_order)
|
||||||
# assert trade.calc_profit() == 0.00006217
|
# assert trade.calc_profit() == 0.00006217
|
||||||
# # Test with a custom fee rate on the close trade
|
# # Test with a custom fee rate on the close trade
|
||||||
# assert trade.calc_profit(fee=0.003) == 0.00006163
|
# assert trade.calc_profit(fee=0.003) == 0.00006163
|
||||||
|
Loading…
Reference in New Issue
Block a user