Small doc improvements
This commit is contained in:
parent
6c0eef94bb
commit
66a479c26a
@ -38,8 +38,7 @@ By default, loop runs every few seconds (`internals.process_throttle_secs`) and
|
|||||||
* Considers stoploss, ROI and sell-signal, `custom_sell()` and `custom_stoploss()`.
|
* Considers stoploss, ROI and sell-signal, `custom_sell()` and `custom_stoploss()`.
|
||||||
* Determine sell-price based on `ask_strategy` configuration setting or by using the `custom_exit_price()` callback.
|
* Determine sell-price based on `ask_strategy` configuration setting or by using the `custom_exit_price()` callback.
|
||||||
* Before a sell order is placed, `confirm_trade_exit()` strategy callback is called.
|
* Before a sell order is placed, `confirm_trade_exit()` strategy callback is called.
|
||||||
* Check position adjustments for open trades if enabled.
|
* Check position adjustments for open trades if enabled by calling `adjust_trade_position()` and place additional order if required.
|
||||||
* Call `adjust_trade_position()` strategy callback and place additional order if required.
|
|
||||||
* Check if trade-slots are still available (if `max_open_trades` is reached).
|
* Check if trade-slots are still available (if `max_open_trades` is reached).
|
||||||
* Verifies buy signal trying to enter new positions.
|
* Verifies buy signal trying to enter new positions.
|
||||||
* Determine buy-price based on `bid_strategy` configuration setting, or by using the `custom_entry_price()` callback.
|
* Determine buy-price based on `bid_strategy` configuration setting, or by using the `custom_entry_price()` callback.
|
||||||
@ -60,10 +59,9 @@ This loop will be repeated again and again until the bot is stopped.
|
|||||||
* Confirm trade buy / sell (calls `confirm_trade_entry()` and `confirm_trade_exit()` if implemented in the strategy).
|
* Confirm trade buy / sell (calls `confirm_trade_entry()` and `confirm_trade_exit()` if implemented in the strategy).
|
||||||
* Call `custom_entry_price()` (if implemented in the strategy) to determine entry price (Prices are moved to be within the opening candle).
|
* Call `custom_entry_price()` (if implemented in the strategy) to determine entry price (Prices are moved to be within the opening candle).
|
||||||
* Determine stake size by calling the `custom_stake_amount()` callback.
|
* Determine stake size by calling the `custom_stake_amount()` callback.
|
||||||
|
* Check position adjustments for open trades if enabled and call `adjust_trade_position()` to determine if an additional order is requested.
|
||||||
* Call `custom_stoploss()` and `custom_sell()` to find custom exit points.
|
* Call `custom_stoploss()` and `custom_sell()` to find custom exit points.
|
||||||
* For sells based on sell-signal and custom-sell: Call `custom_exit_price()` to determine exit price (Prices are moved to be within the closing candle).
|
* For sells based on sell-signal and custom-sell: Call `custom_exit_price()` to determine exit price (Prices are moved to be within the closing candle).
|
||||||
* Check position adjustments for open trades if enabled and call `adjust_trade_position()` determine additional order is required.
|
|
||||||
|
|
||||||
* Generate backtest report output
|
* Generate backtest report output
|
||||||
|
|
||||||
!!! Note
|
!!! Note
|
||||||
|
@ -572,19 +572,21 @@ class AwesomeStrategy(IStrategy):
|
|||||||
|
|
||||||
## Adjust trade position
|
## Adjust trade position
|
||||||
|
|
||||||
The `position_adjustment_enable` strategy property enables the usage of `adjust_trade_position()` callback in strategy.
|
The `position_adjustment_enable` strategy property enables the usage of `adjust_trade_position()` callback in the strategy.
|
||||||
For performance reasons, it's disabled by default and freqtrade will show a warning message on startup if enabled.
|
For performance reasons, it's disabled by default and freqtrade will show a warning message on startup if enabled.
|
||||||
`adjust_trade_position()` can be used to perform additional orders, for example to manage risk with DCA (Dollar Cost Averaging).
|
`adjust_trade_position()` can be used to perform additional orders, for example to manage risk with DCA (Dollar Cost Averaging).
|
||||||
The strategy is expected to return a stake_amount if and when an additional buy order should be made (position is increased).
|
|
||||||
If there is not enough funds in the wallet then nothing will happen.
|
The strategy is expected to return a stake_amount (in stake currency) between `min_stake` and `max_stake` if and when an additional buy order should be made (position is increased).
|
||||||
Additional orders also mean additional fees and those orders don't count towards `max_open_trades`.
|
If there are not enough funds in the wallet (the return value is above `max_stake`) then the signal will be ignored.
|
||||||
This callback is called very frequently, so you must keep your implementation as fast as possible.
|
Additional orders also result in additional fees and those orders don't count towards `max_open_trades`.
|
||||||
This callback is NOT called when there is an open order (either buy or sell) waiting for execution.
|
|
||||||
|
This callback is **not** called when there is an open order (either buy or sell) waiting for execution.
|
||||||
|
`adjust_trade_position()` is called very frequently for the duration of a trade, so you must keep your implementation as performant as possible.
|
||||||
|
|
||||||
!!! Note "About stake size"
|
!!! Note "About stake size"
|
||||||
Using fixed stake size means it will be the amount used for the first order, just like without position adjustment.
|
Using fixed stake size means it will be the amount used for the first order, just like without position adjustment.
|
||||||
If you wish to buy additional orders with DCA, then make sure to leave enough funds in the wallet for that.
|
If you wish to buy additional orders with DCA, then make sure to leave enough funds in the wallet for that.
|
||||||
Using 'unlimited' stake amount with DCA orders requires you to also implement custom_stake_amount callback to avoid allocating all funds to the initial order.
|
Using 'unlimited' stake amount with DCA orders requires you to also implement the `custom_stake_amount()` callback to avoid allocating all funds to the initial order.
|
||||||
|
|
||||||
!!! Warning
|
!!! Warning
|
||||||
Stoploss is still calculated from the initial opening price, not averaged price.
|
Stoploss is still calculated from the initial opening price, not averaged price.
|
||||||
|
@ -1498,8 +1498,6 @@ def test_recalc_trade_from_orders(fee):
|
|||||||
trade.orders.append(sell1)
|
trade.orders.append(sell1)
|
||||||
trade.recalc_trade_from_orders()
|
trade.recalc_trade_from_orders()
|
||||||
|
|
||||||
avg_price = (o1_cost + o2_cost + o3_cost) / (o1_amount + o2_amount + o3_amount)
|
|
||||||
|
|
||||||
assert trade.amount == o1_amount + o2_amount + o3_amount
|
assert trade.amount == o1_amount + o2_amount + o3_amount
|
||||||
assert trade.stake_amount == o1_cost + o2_cost + o3_cost
|
assert trade.stake_amount == o1_cost + o2_cost + o3_cost
|
||||||
assert trade.open_rate == avg_price
|
assert trade.open_rate == avg_price
|
||||||
@ -1582,7 +1580,7 @@ def test_recalc_trade_from_orders_ignores_bad_orders(fee):
|
|||||||
assert trade.open_trade_value == o1_trade_val
|
assert trade.open_trade_value == o1_trade_val
|
||||||
assert trade.nr_of_successful_buys == 1
|
assert trade.nr_of_successful_buys == 1
|
||||||
|
|
||||||
# Let's try with some other orders
|
# Let's try with some other orders
|
||||||
order3 = Order(
|
order3 = Order(
|
||||||
ft_order_side='buy',
|
ft_order_side='buy',
|
||||||
ft_pair=trade.pair,
|
ft_pair=trade.pair,
|
||||||
|
Loading…
Reference in New Issue
Block a user