23423423
This commit is contained in:
@@ -4,10 +4,12 @@
|
||||
========== 策略规则 ==========
|
||||
|
||||
1. 触发价格计算(基于有效的前一根K线,实体>=0.1):
|
||||
- 做多触发价格 = 前一根收盘价 + 实体/3(向上突破1/3)
|
||||
- 做空触发价格 = 前一根收盘价 - 实体/3(向下突破1/3)
|
||||
- 实体上边界 = max(开盘价, 收盘价)
|
||||
- 实体下边界 = min(开盘价, 收盘价)
|
||||
- 做多触发价格 = 实体上边界 - 实体/3(进入实体上部1/3区域做多)
|
||||
- 做空触发价格 = 实体下边界 + 实体/3(进入实体下部1/3区域做空)
|
||||
|
||||
2. 信号触发条件(无论前一根是阴线还是阳线):
|
||||
2. 信号触发条件:
|
||||
- 当前K线最高价 >= 做多触发价格 → 做多信号
|
||||
- 当前K线最低价 <= 做空触发价格 → 做空信号
|
||||
|
||||
@@ -20,10 +22,17 @@
|
||||
- 如果前一根K线的实体部分(|open - close|)< 0.1,继续往前查找
|
||||
- 直到找到实体>=0.1的K线,再用那根K线来计算触发价格
|
||||
|
||||
示例:
|
||||
前一根K线:开盘3200,收盘3100(阴线,实体=100)
|
||||
- 做多触发价格 = 3100 + 100/3 = 3133.33(价格反弹到这里做多)
|
||||
- 做空触发价格 = 3100 - 100/3 = 3066.67(价格继续下跌到这里做空)
|
||||
示例1(阳线):
|
||||
前一根K线:开盘3000,收盘3100(阳线,实体=100)
|
||||
- 实体上边界 = 3100,实体下边界 = 3000
|
||||
- 做多触发价格 = 3100 - 33.33 = 3066.67(价格涨到这里做多)
|
||||
- 做空触发价格 = 3000 + 33.33 = 3033.33(价格跌到这里做空)
|
||||
|
||||
示例2(阴线):
|
||||
前一根K线:开盘3100,收盘3000(阴线,实体=100)
|
||||
- 实体上边界 = 3100,实体下边界 = 3000
|
||||
- 做多触发价格 = 3100 - 33.33 = 3066.67(价格涨到这里做多)
|
||||
- 做空触发价格 = 3000 + 33.33 = 3033.33(价格跌到这里做空)
|
||||
"""
|
||||
|
||||
import datetime
|
||||
@@ -118,21 +127,23 @@ def get_one_third_levels(prev):
|
||||
计算前一根K线实体的 1/3 双向触发价格
|
||||
返回:(做多触发价格, 做空触发价格)
|
||||
|
||||
无论阴线还是阳线:
|
||||
- 做多触发价格 = 收盘价 + 实体/3(向上突破1/3)
|
||||
- 做空触发价格 = 收盘价 - 实体/3(向下突破1/3)
|
||||
基于实体的上下边界计算:
|
||||
- 做多触发价格 = 实体上边界 - 实体/3(进入实体上部1/3区域做多)
|
||||
- 做空触发价格 = 实体下边界 + 实体/3(进入实体下部1/3区域做空)
|
||||
"""
|
||||
p_open = float(prev['open'])
|
||||
p_close = float(prev['close'])
|
||||
|
||||
body = abs(p_open - p_close)
|
||||
body_high = max(p_open, p_close) # 实体上边界
|
||||
body_low = min(p_open, p_close) # 实体下边界
|
||||
body = body_high - body_low
|
||||
|
||||
if body < 0.001: # 十字星,忽略
|
||||
return None, None
|
||||
|
||||
# 双向触发价格
|
||||
long_trigger = p_close + body / 3 # 向上1/3触发做多
|
||||
short_trigger = p_close - body / 3 # 向下1/3触发做空
|
||||
# 基于实体边界的双向触发价格
|
||||
long_trigger = body_high - body / 3 # 进入实体上部1/3区域触发做多
|
||||
short_trigger = body_low + body / 3 # 进入实体下部1/3区域触发做空
|
||||
|
||||
return long_trigger, short_trigger
|
||||
|
||||
|
||||
BIN
bitmart/回测图表.png
BIN
bitmart/回测图表.png
Binary file not shown.
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 141 KiB |
File diff suppressed because one or more lines are too long
@@ -4,10 +4,12 @@ BitMart 三分之一回归策略交易(双向触发版)
|
||||
|
||||
策略规则:
|
||||
1. 触发价格计算(基于有效的前一根K线,实体>=0.1):
|
||||
- 做多触发价格 = 前一根收盘价 + 实体/3(向上突破1/3)
|
||||
- 做空触发价格 = 前一根收盘价 - 实体/3(向下突破1/3)
|
||||
- 实体上边界 = max(开盘价, 收盘价)
|
||||
- 实体下边界 = min(开盘价, 收盘价)
|
||||
- 做多触发价格 = 实体上边界 - 实体/3(进入实体上部1/3区域做多)
|
||||
- 做空触发价格 = 实体下边界 + 实体/3(进入实体下部1/3区域做空)
|
||||
|
||||
2. 信号触发条件(无论前一根是阴线还是阳线):
|
||||
2. 信号触发条件:
|
||||
- 当前K线最高价 >= 做多触发价格 → 做多信号
|
||||
- 当前K线最低价 <= 做空触发价格 → 做空信号
|
||||
|
||||
@@ -16,10 +18,10 @@ BitMart 三分之一回归策略交易(双向触发版)
|
||||
- 做空时遇到做多信号 -> 平空并反手开多
|
||||
- 如果同时触发两个方向,以距离开盘价更近的方向优先
|
||||
|
||||
示例:
|
||||
前一根K线:开盘3200,收盘3100(阴线,实体=100)
|
||||
- 做多触发价格 = 3100 + 100/3 = 3133.33(价格反弹到这里做多)
|
||||
- 做空触发价格 = 3100 - 100/3 = 3066.67(价格继续下跌到这里做空)
|
||||
示例(阳线):
|
||||
前一根K线:开盘3000,收盘3100(阳线,实体=100)
|
||||
- 做多触发价格 = 3100 - 33.33 = 3066.67(价格涨到这里做多)
|
||||
- 做空触发价格 = 3000 + 33.33 = 3033.33(价格跌到这里做空)
|
||||
"""
|
||||
|
||||
import time
|
||||
@@ -109,21 +111,23 @@ class BitmartOneThirdStrategy:
|
||||
计算前一根K线实体的 1/3 双向触发价格
|
||||
返回:(做多触发价格, 做空触发价格)
|
||||
|
||||
无论阴线还是阳线:
|
||||
- 做多触发价格 = 收盘价 + 实体/3(向上突破1/3)
|
||||
- 做空触发价格 = 收盘价 - 实体/3(向下突破1/3)
|
||||
基于实体的上下边界计算:
|
||||
- 做多触发价格 = 实体上边界 - 实体/3(进入实体上部1/3区域做多)
|
||||
- 做空触发价格 = 实体下边界 + 实体/3(进入实体下部1/3区域做空)
|
||||
"""
|
||||
p_open = float(prev['open'])
|
||||
p_close = float(prev['close'])
|
||||
|
||||
body = abs(p_open - p_close)
|
||||
body_high = max(p_open, p_close) # 实体上边界
|
||||
body_low = min(p_open, p_close) # 实体下边界
|
||||
body = body_high - body_low
|
||||
|
||||
if body < 0.001: # 十字星,忽略
|
||||
return None, None
|
||||
|
||||
# 双向触发价格
|
||||
long_trigger = p_close + body / 3 # 向上1/3触发做多
|
||||
short_trigger = p_close - body / 3 # 向下1/3触发做空
|
||||
# 基于实体边界的双向触发价格
|
||||
long_trigger = body_high - body / 3 # 进入实体上部1/3区域触发做多
|
||||
short_trigger = body_low + body / 3 # 进入实体下部1/3区域触发做空
|
||||
|
||||
return long_trigger, short_trigger
|
||||
|
||||
|
||||
Reference in New Issue
Block a user