atr计算止盈止损是 加上可配置的比例

This commit is contained in:
lychiyu 2024-07-31 07:44:52 +08:00
parent 29bd6ff6eb
commit d973d95121
2 changed files with 8 additions and 4 deletions

View File

@ -55,6 +55,8 @@ exchangeStrategies:
placePriceType: 2
lossType: 1
profitOrderType: 0
atrProfitRange: 0.8
atrLossRange: 1.0
# recalculate: false
# dry_run: false
# # quantity: 3

View File

@ -47,6 +47,8 @@ type Strategy struct {
Leverage fixedpoint.Value `json:"leverage"`
ProfitRange fixedpoint.Value `json:"profitRange"`
LossRange fixedpoint.Value `json:"lossRange"`
AtrProfitRange float64 `json:"atrProfitRange"`
AtrLossRange float64 `json:"atrLossRange"`
qbtrade.QuantityOrAmount
@ -221,16 +223,16 @@ func (s *Strategy) generateOrders(ctx context.Context, kline types.KLine) ([]typ
lossPrice = placePrice.Sub(placePrice.Mul(s.LossRange))
profitPrice = placePrice.Add(placePrice.Mul(s.ProfitRange))
} else if s.LossType == 1 {
lossPrice = placePrice.Sub(fixedpoint.Value(1e8 * lastATR))
profitPrice = placePrice.Add(fixedpoint.Value(1e8 * lastATR * 2))
lossPrice = placePrice.Sub(fixedpoint.Value(1e8 * lastATR * s.AtrLossRange))
profitPrice = placePrice.Add(fixedpoint.Value(1e8 * lastATR * s.AtrProfitRange))
}
} else if s.TradeType[symbol] == "short" {
if s.LossType == 0 || s.atr[symbol].Last(0) == 0.0 {
lossPrice = placePrice.Add(placePrice.Mul(s.LossRange))
profitPrice = placePrice.Sub(placePrice.Mul(s.ProfitRange))
} else if s.LossType == 1 {
lossPrice = placePrice.Add(fixedpoint.Value(1e8 * lastATR))
profitPrice = placePrice.Sub(fixedpoint.Value(1e8 * lastATR * 2))
lossPrice = placePrice.Add(fixedpoint.Value(1e8 * lastATR * s.AtrLossRange))
profitPrice = placePrice.Sub(fixedpoint.Value(1e8 * lastATR * s.AtrProfitRange))
}
}