feature(docs/strategy-customization): add example "Custom stoploss using an indicator from dataframe"
This commit is contained in:
parent
cc4e84bb70
commit
c5900bbd38
@ -179,6 +179,35 @@ class AwesomeStrategy(IStrategy):
|
|||||||
return (-0.07 + current_profit)
|
return (-0.07 + current_profit)
|
||||||
return 1
|
return 1
|
||||||
```
|
```
|
||||||
|
#### Custom stoploss using an indicator from dataframe example
|
||||||
|
|
||||||
|
Imagine you want to use `custom_stoploss()` to use a trailing indicator like e.g. "ATR"
|
||||||
|
|
||||||
|
See: (Storing custom information using DatetimeIndex from `dataframe`
|
||||||
|
)[WIP] on how to store the indicator into `custom_info`
|
||||||
|
|
||||||
|
``` python
|
||||||
|
from freqtrade.persistence import Trade
|
||||||
|
|
||||||
|
class AwesomeStrategy(IStrategy):
|
||||||
|
|
||||||
|
# ... populate_* methods
|
||||||
|
|
||||||
|
use_custom_stoploss = True
|
||||||
|
|
||||||
|
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
|
||||||
|
current_rate: float, current_profit: float, **kwargs) -> float:
|
||||||
|
|
||||||
|
result = 1
|
||||||
|
if self.custom_info[pair] is not None and trade is not None:
|
||||||
|
atr = self.custom_info[pair].loc[current_time]['atr']
|
||||||
|
if (atr is not None):
|
||||||
|
# new stoploss relative to current_rate
|
||||||
|
new_stoploss = (current_rate-atr)/current_rate
|
||||||
|
# turn into relative negative offset required by `custom_stoploss` return implementation
|
||||||
|
result = new_stoploss - 1
|
||||||
|
return result
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user