mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-26 00:35:15 +00:00
add ema condition to the lower shadow take profit
This commit is contained in:
parent
903d773025
commit
6aa6e57d96
|
@ -39,12 +39,13 @@ exchangeStrategies:
|
||||||
|
|
||||||
# stopEMARange is the price range we allow short.
|
# stopEMARange is the price range we allow short.
|
||||||
# Short-allowed price range = [current price] > [EMA] * (1 - [stopEMARange])
|
# Short-allowed price range = [current price] > [EMA] * (1 - [stopEMARange])
|
||||||
stopEMARange: 0%
|
# Higher the stopEMARange than higher the chance to open a short
|
||||||
|
stopEMARange: 1%
|
||||||
stopEMA:
|
stopEMA:
|
||||||
interval: 1h
|
interval: 1h
|
||||||
window: 99
|
window: 99
|
||||||
|
|
||||||
bounceShort:
|
resistanceShort:
|
||||||
enabled: false
|
enabled: false
|
||||||
interval: 1h
|
interval: 1h
|
||||||
window: 10
|
window: 10
|
||||||
|
@ -86,11 +87,13 @@ exchangeStrategies:
|
||||||
# you can grab a simple stats by the following SQL:
|
# you can grab a simple stats by the following SQL:
|
||||||
# SELECT ((close - low) / close) AS shadow_ratio FROM binance_klines WHERE symbol = 'ETHUSDT' AND `interval` = '5m' AND start_time > '2022-01-01' ORDER BY shadow_ratio DESC LIMIT 20;
|
# SELECT ((close - low) / close) AS shadow_ratio FROM binance_klines WHERE symbol = 'ETHUSDT' AND `interval` = '5m' AND start_time > '2022-01-01' ORDER BY shadow_ratio DESC LIMIT 20;
|
||||||
- lowerShadowTakeProfit:
|
- lowerShadowTakeProfit:
|
||||||
|
interval: 30m
|
||||||
|
window: 99
|
||||||
ratio: 3%
|
ratio: 3%
|
||||||
|
|
||||||
# (5) cumulatedVolumeTakeProfit is used to take profit when the cumulated quote volume from the klines exceeded a threshold
|
# (5) cumulatedVolumeTakeProfit is used to take profit when the cumulated quote volume from the klines exceeded a threshold
|
||||||
- cumulatedVolumeTakeProfit:
|
- cumulatedVolumeTakeProfit:
|
||||||
minQuoteVolume: 100_000_000
|
minQuoteVolume: 200_000_000
|
||||||
interval: 5m
|
interval: 5m
|
||||||
window: 2
|
window: 2
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,10 @@ func (s *LowerShadowTakeProfit) Bind(session *ExchangeSession, orderExecutor *Ge
|
||||||
s.session = session
|
s.session = session
|
||||||
s.orderExecutor = orderExecutor
|
s.orderExecutor = orderExecutor
|
||||||
|
|
||||||
|
stdIndicatorSet, _ := session.StandardIndicatorSet(s.Symbol)
|
||||||
|
ewma := stdIndicatorSet.EWMA(s.IntervalWindow)
|
||||||
|
|
||||||
|
|
||||||
position := orderExecutor.Position()
|
position := orderExecutor.Position()
|
||||||
session.MarketDataStream.OnKLineClosed(func(kline types.KLine) {
|
session.MarketDataStream.OnKLineClosed(func(kline types.KLine) {
|
||||||
if kline.Symbol != position.Symbol || kline.Interval != types.Interval1m {
|
if kline.Symbol != position.Symbol || kline.Interval != types.Interval1m {
|
||||||
|
@ -47,6 +51,11 @@ func (s *LowerShadowTakeProfit) Bind(session *ExchangeSession, orderExecutor *Ge
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// skip close price higher than the ewma
|
||||||
|
if closePrice.Float64() > ewma.Last() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if kline.GetLowerShadowHeight().Div(kline.Close).Compare(s.Ratio) > 0 {
|
if kline.GetLowerShadowHeight().Div(kline.Close).Compare(s.Ratio) > 0 {
|
||||||
Notify("%s TakeProfit triggered by shadow ratio %f, price = %f",
|
Notify("%s TakeProfit triggered by shadow ratio %f, price = %f",
|
||||||
position.Symbol,
|
position.Symbol,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user