config: optimize and update pivotshort config

Signed-off-by: c9s <yoanlin93@gmail.com>
This commit is contained in:
c9s 2022-06-29 01:22:03 +08:00
parent 37413e4355
commit 44d0bbc3fa
No known key found for this signature in database
GPG Key ID: 7385E7E464CB0A54
3 changed files with 108 additions and 154 deletions

View File

@ -1,100 +0,0 @@
---
sessions:
binance:
exchange: binance
envVarPrefix: binance
margin: true
# isolatedMargin: true
# isolatedMarginSymbol: ETHUSDT
exchangeStrategies:
- on: binance
pivotshort:
symbol: ETHUSDT
# interval is the main pivot interval
interval: 5m
# window is the main pivot window
window: 200
# breakLow settings are used for shorting when the current price break the previous low
breakLow:
# ratio is how much the price breaks the previous low to trigger the short.
ratio: -0.1%
# quantity is used for submitting the sell order
# if quantity is not set, all base balance will be used for selling the short.
quantity: 10.0
# marketOrder submits the market sell order when the closed price is lower than the previous pivot low.
marketOrder: true
# bounceRatio is used for calculating the price of the limit sell order.
# it's ratio of pivot low bounce when a new pivot low is detected.
# Sometimes when the price breaks the previous low, the price might be pulled back to a higher price.
# The bounceRatio is useful for such case, however, you might also miss the chance to short at the price if there is no pull back.
# Notice: When marketOrder is set, bounceRatio will not be used.
# bounceRatio: 0.1%
# stopEMARange is the price range we allow short.
# Short-allowed price range = [current price] > [EMA] * (1 - [stopEMARange])
stopEMARange: 0%
stopEMA:
interval: 1h
window: 99
bounceShort:
enabled: false
interval: 1h
window: 10
quantity: 10.0
minDistance: 3%
# stopLossPercentage: 1%
# ratio is the ratio of the resistance price,
# higher the ratio, lower the price
# first_layer_price = resistance_price * (1 - ratio)
# second_layer_price = (resistance_price * (1 - ratio)) * (2 * layerSpread)
ratio: 0%
numOfLayers: 1
layerSpread: 0.1%
exits:
# roiStopLoss is the stop loss percentage of the position ROI (currently the price change)
- roiStopLoss:
percentage: 2%
# roiTakeProfit is used to force taking profit by percentage of the position ROI (currently the price change)
# force to take the profit ROI exceeded the percentage.
- roiTakeProfit:
percentage: 30%
- protectionStopLoss:
activationRatio: 1%
stopLossRatio: 0.2%
placeStopOrder: true
# lowerShadowTakeProfit is used to taking profit when the (lower shadow height / low price) > lowerShadowRatio
# 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;
- lowerShadowTakeProfit:
ratio: 3%
# cumulatedVolumeTakeProfit is used to take profit when the cumulated quote volume from the klines exceeded a threshold
- cumulatedVolumeTakeProfit:
minQuoteVolume: 90_000_000
window: 5
backtest:
sessions:
- binance
startTime: "2022-04-01"
endTime: "2022-06-08"
symbols:
- ETHUSDT
accounts:
binance:
balances:
ETH: 10.0
USDT: 3000.0

View File

@ -3,64 +3,105 @@ sessions:
binance:
exchange: binance
envVarPrefix: binance
# margin: true
# isolatedMargin: true
# isolatedMarginSymbol: GMTUSDT
# futures: true
margin: true
# isolatedMargin: true
# isolatedMarginSymbol: ETHUSDT
exchangeStrategies:
- on: binance
pivotshort:
symbol: GMTUSDT
symbol: ETHUSDT
# interval is the main pivot interval
interval: 5m
window: 120
# window is the main pivot window
window: 200
# breakLow settings are used for shorting when the current price break the previous low
breakLow:
ratio: 0.1%
# ratio is how much the price breaks the previous low to trigger the short.
ratio: 0%
# quantity is used for submitting the sell order
# if quantity is not set, all base balance will be used for selling the short.
quantity: 10.0
stopEMARange: 5%
# marketOrder submits the market sell order when the closed price is lower than the previous pivot low.
marketOrder: true
# bounceRatio is used for calculating the price of the limit sell order.
# it's ratio of pivot low bounce when a new pivot low is detected.
# Sometimes when the price breaks the previous low, the price might be pulled back to a higher price.
# The bounceRatio is useful for such case, however, you might also miss the chance to short at the price if there is no pull back.
# Notice: When marketOrder is set, bounceRatio will not be used.
# bounceRatio: 0.1%
# stopEMARange is the price range we allow short.
# Short-allowed price range = [current price] > [EMA] * (1 - [stopEMARange])
stopEMARange: 0%
stopEMA:
interval: 1h
window: 99
exits:
# roiStopLoss is the stop loss percentage of the position ROI (currently the price change)
- roiStopLoss:
percentage: 2%
bounceShort:
enabled: false
interval: 1h
window: 10
quantity: 10.0
minDistance: 3%
# stopLossPercentage: 1%
# roiTakeProfit is used to force taking profit by percentage of the position ROI (currently the price change)
# ratio is the ratio of the resistance price,
# higher the ratio, lower the price
# first_layer_price = resistance_price * (1 - ratio)
# second_layer_price = (resistance_price * (1 - ratio)) * (2 * layerSpread)
ratio: 0%
numOfLayers: 1
layerSpread: 0.1%
exits:
# (0) roiStopLoss is the stop loss percentage of the position ROI (currently the price change)
- roiStopLoss:
percentage: 0.8%
# (1) roiTakeProfit is used to force taking profit by percentage of the position ROI (currently the price change)
# force to take the profit ROI exceeded the percentage.
- roiTakeProfit:
percentage: 30%
percentage: 35%
# (2) protective stop loss -- short term
- protectionStopLoss:
activationRatio: 1%
stopLossRatio: 0.2%
placeStopOrder: true
activationRatio: 0.6%
stopLossRatio: 0.1%
placeStopOrder: false
# lowerShadowTakeProfit is used to taking profit when the (lower shadow height / low price) > lowerShadowRatio
# (3) protective stop loss -- long term
- protectionStopLoss:
activationRatio: 5%
stopLossRatio: 1%
placeStopOrder: false
# (4) lowerShadowTakeProfit is used to taking profit when the (lower shadow height / low price) > lowerShadowRatio
# 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;
- lowerShadowTakeProfit:
ratio: 3%
# 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:
minQuoteVolume: 90_000_000
minQuoteVolume: 50_000_000
window: 5
backtest:
sessions:
- binance
startTime: "2022-05-01"
endTime: "2022-06-03"
startTime: "2022-04-01"
endTime: "2022-06-18"
symbols:
- GMTUSDT
- ETHUSDT
accounts:
binance:
balances:
GMT: 3010.0
USDT: 1000.0
ETH: 10.0
USDT: 5000.0

View File

@ -1,6 +1,6 @@
# usage:
#
# go run ./cmd/bbgo optimize --config config/pivotshort-ETHUSDT.yaml --optimizer-config config/pivotshort_optimizer.yaml --debug
# go run ./cmd/bbgo optimize --config config/pivotshort.yaml --optimizer-config config/pivotshort_optimizer.yaml --debug
#
---
executor:
@ -22,31 +22,44 @@ matrix:
max: 200.0
step: 20.0
# - type: range
# path: '/exchangeStrategies/0/pivotshort/breakLow/stopEMARange'
# label: stopEMARange
# min: 0%
# max: 10%
# step: 1%
- type: range
path: '/exchangeStrategies/0/pivotshort/breakLow/stopEMARange'
label: stopEMARange
min: 0%
max: 10%
step: 1%
# - type: range
# path: '/exchangeStrategies/0/pivotshort/exit/roiStopLossPercentage'
# label: roiStopLossPercentage
# min: 0.5%
# max: 2%
# step: 0.5%
#
# - type: range
# path: '/exchangeStrategies/0/pivotshort/exit/roiTakeProfitPercentage'
# label: roiTakeProfitPercentage
# min: 10%
# max: 50%
# step: 5%
#
# - type: range
# path: '/exchangeStrategies/0/pivotshort/exit/roiMinTakeProfitPercentage'
# label: roiMinTakeProfitPercentage
# min: 3%
# max: 10%
# step: 1%
#
- type: range
path: '/exchangeStrategies/0/pivotshort/exits/0/roiStopLoss/percentage'
label: roiStopLossPercentage
min: 0.5%
max: 2%
step: 0.1%
- type: range
path: '/exchangeStrategies/0/pivotshort/exits/1/roiTakeProfit/percentage'
label: roiTakeProfit
min: 10%
max: 40%
step: 5%
- type: range
path: '/exchangeStrategies/0/pivotshort/exits/2/protectionStopLoss/activationRatio'
label: protectionStopLoss_activationRatio
min: 0.5%
max: 3%
step: 0.1%
- type: range
path: '/exchangeStrategies/0/pivotshort/exits/4/lowerShadowTakeProfit/ratio'
label: lowerShadowTakeProfit_ratio
min: 1%
max: 10%
step: 1%
- type: range
path: '/exchangeStrategies/0/pivotshort/exits/5/cumulatedVolumeTakeProfit/minQuoteVolume'
label: cumulatedVolumeTakeProfit_minQuoteVolume
min: 30_000_000
max: 200_000_000
step: 10_000_000