def __init__(self, portfolio, vtSymbol):
        self.portfolio = portfolio      # 投资组合
        self.vtSymbol = vtSymbol        # 合约代码
        self.am = ArrayManager()        # K线容器
        self.bar = None                 # 最新K线

        # 策略参数
        self.initBars = 60              # 初始化数据所用的天数
        self.entryWindow = 20           # 入场通道周期数
        self.exitWindow = 50            # 出场通道周期数
        self.atrWindow = 5              # 计算ATR周期数
        self.profitCheck = True         # 是否检查上一笔盈利
        self.minx = 'day'

        # 策略临时变量
        self.atrVolatility = 0          # ATR波动率
        self.entryUp = 0                # 入场通道
        self.entryDown = 0
        self.exitUp = 0                 # 出场通道
        self.exitDown = 0

        self.longEntry1 = 0             # 多头入场位
        self.longEntry2 = 0
        self.longEntry3 = 0
        self.longEntry4 = 0
        self.longStop = 0               # 多头止损位

        self.shortEntry1 = 0            # 空头入场位
        self.shortEntry2 = 0
        self.shortEntry3 = 0
        self.shortEntry4 = 0
        self.shortStop = 0              # 空头止损位

        # 需要持久化保存的变量
        self.unit = 0

        self.result = None              # 当前的交易
        self.resultList = []            # 交易列表

        # 载入历史数据,并采用回放计算的方式初始化策略数值
        initData = self.portfolio.engine._bc_loadInitBar(self.vtSymbol, self.initBars, self.minx)
        for bar in initData:
            self.bar = bar
            self.am.updateBar(bar)
    def __init__(self, portfolio, vtSymbol):
        self.portfolio = portfolio  # 投资组合
        self.vtSymbol = vtSymbol  # 合约代码
        self.am = ArrayManager()  # K线容器
        self.bar = None  # 最新K线

        # 策略参数
        self.atrLength = 1  # 计算ATR指标的窗口数
        self.atrMaLength = 14  # 计算ATR均线的窗口数
        self.rsiLength = 5  # 计算RSI的窗口数
        self.rsiEntry = 16  # RSI的开仓信号
        self.trailingPercent = 0.7  # 百分比移动止损
        self.victoryPercent = 0.3
        self.initBars = 60  # 初始化数据所用的天数
        self.fixedSize = 1  # 每次交易的数量
        self.ratio_atrMa = 0.8
        self.minx = 'min5'
        # 初始化RSI入场阈值
        self.rsiBuy = 50 + self.rsiEntry
        self.rsiSell = 50 - self.rsiEntry

        # 策略临时变量
        self.atrValue = 0  # 最新的ATR指标数值
        self.atrMa = 0  # ATR移动平均的数值
        self.rsiValue = 0  # RSI指标的数值
        self.iswave = True

        # 需要持久化保存的变量
        self.unit = 0
        self.cost = 0
        self.intraTradeHigh = 0  # 移动止损用的持仓期内最高价
        self.intraTradeLow = 0  # 持仓期内的最低点
        self.stop = 0  # 多头止损

        self.result = None  # 当前的交易
        self.resultList = []  # 交易列表

        # 载入历史数据,并采用回放计算的方式初始化策略数值
        initData = self.portfolio.engine._bc_loadInitBar(
            self.vtSymbol, self.initBars, self.minx)
        for bar in initData:
            self.bar = bar
            self.am.updateBar(bar)
Ejemplo n.º 3
0
    def __init__(self, portfolio, vtSymbol):
        self.type = 'kong'

        # 策略参数
        self.fixedSize = 1  # 每次交易的数量
        self.initBars = 100  # 初始化数据所用的天数
        self.minx = 'min30'

        # 策略临时变量
        self.can_buy = False
        self.can_sell = False
        self.can_short = False
        self.can_cover = False

        # 需要持久化保存的变量
        self.cost = 0

        size_am = 100
        assert self.initBars <= size_am
        Signal.__init__(self, portfolio, vtSymbol)

        self.bm_bar = None
        self.bm = ArrayManager(60)
        self.init_bm()
Ejemplo n.º 4
0
df['datetime'] = df['date'] + ' ' + df['time']
df = df[df.datetime < startDt]
assert len(df) >= initBars

df = df.sort_values(by=['date', 'time'])
df = df.iloc[-initBars:]
print(df)

for i, row in df.iterrows():
    d = dict(row)
    #print(d)
    # print(type(d))
    bar = VtBarData()
    bar.__dict__ = d
    #print(bar.__dict__)
    r.append(bar)

am = ArrayManager(initBars)  # K线容器
for bar in r:
    am.updateBar(bar)

#rsiValue = am.rsi(5, array=True)
#rsiArray50 = am.rsi(10, array=True)
#rsiMa  = rsiValue[-30:].mean()

#atrValue = am.atr(30)
atrValue = am.atr(1, array=True)
atrMa = atrValue[-30:].mean()
print(atrValue)
print(atrMa)