美文网首页
Python版追涨杀跌策略

Python版追涨杀跌策略

作者: 发明者量化 | 来源:发表于2020-01-17 11:45 被阅读0次

    趋势策略一般使用各种指标来判断行情方向,使用各个指标数值对比结果来作为交易信号。这样就避免不了使用参数,计算指标。既然使用了参数,就会有拟合的情况。在某些行情下策略表现非常好,但是如果运气不好,行情走势是对当前参数非常不友好的时候,可能策略表现就会非常差。所以,个人理解,对于策略设计应当是越简单越好,这样的策略健壮性会好一些。今天我们就来分享一个不使用指标的趋势策略。策略代码非常简单,只有40行。

    策略代码:

    import time
    
    basePrice = -1
    ratio = 0.05
    acc = _C(exchange.GetAccount)
    lastCancelAll = 0
    minStocks = 0.01
    
    def CancelAll():
        while True : 
            orders = _C(exchange.GetOrders)
            for i in range(len(orders)) :
                exchange.CancelOrder(orders[i]["Id"], orders[i])
            if len(orders) == 0 :
                break
            Sleep(1000)
    
    def main():
        global basePrice, acc, lastCancelAll
        exchange.SetPrecision(2, 3)
        while True:
            ticker = _C(exchange.GetTicker)
            if basePrice == -1 :
                basePrice = ticker.Last
            if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
                acc = _C(exchange.GetAccount)
                if acc.Balance * ratio / ticker.Last > minStocks :
                    exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
                    basePrice = ticker.Last
            if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : 
                acc = _C(exchange.GetAccount)
                if acc.Stocks * ratio > minStocks :
                    exchange.Sell(ticker.Last, acc.Stocks * ratio)
                    basePrice = ticker.Last
            ts = time.time()
            if ts - lastCancelAll > 60 * 5 :
                CancelAll()
                lastCancelAll = ts 
            LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc)
            Sleep(500)
    

    策略简单分析

    策略原理非常简单,不使用任何指标,只是使用当前价格作为交易触发依据,并且主要参数只有一个ratio控制开仓触发。

    做多触发:

    if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio
    

    使用当前的价格,对比基础价格,当前价格大于基础价格时,并且价格超出ratio * 100 %时,触发挂单,挂出多单。
    下单后,更新基础价格为当前价格。

    空单触发:

    if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio
    

    做空方向原理相同,使用当前价格,对比基础价格,当前价格小于基础价格时,并且价格超出ratio * 100 %时,触发挂单,挂出空单。
    下单后,更新基础价格为当前价格。

    每次下单的订单量为可用资金数值的ratio * 100 %
    除非计算出的下单量小于参数设置的最小交易量minStocks,否则就下单。

    这样让策略,跟随价格变动追涨杀跌。

    回测测试

    回测时间范围大概一年。


    运行结果:


    最近有用户说Python策略比较少,后续就多分享一些Python语言编写的策略。策略代码也非常简单,非常适合发明者量化初学者学习。
    策略地址:https://www.fmz.com/strategy/181185

    策略仅供参考学习,回测测试,有兴趣可以优化升级。

    相关文章

      网友评论

          本文标题:Python版追涨杀跌策略

          本文链接:https://www.haomeiwen.com/subject/llrczctx.html