易盛极星多合约回测(问题很多)

68 篇文章 14 订阅
5 篇文章 9 订阅

 注意,使用此函数,在考虑手续费时,无法做到统一。

import talib
import numpy as np
import EsTalib
from EsSeries import NumericSeries

# 策略参数字典
g_params['p1'] = 5
g_params['p2'] = 10
g_params['p3'] = 120
g_params['ZQ'] = 5      #交易周期

# 合约名称列表
HYMCLB = [  "INE|Z|SC|MAIN","INE|Z|NR|MAIN","INE|Z|LU|MAIN",
            "ZCE|Z|PK|MAIN","ZCE|Z|PF|MAIN","ZCE|Z|SA|MAIN","ZCE|Z|CF|MAIN",
            "ZCE|Z|AP|MAIN","ZCE|Z|UR|MAIN","ZCE|Z|CJ|MAIN", "ZCE|Z|OI|MAIN",
            "ZCE|Z|RM|MAIN","ZCE|Z|MA|MAIN","ZCE|Z|TA|MAIN","ZCE|Z|FG|MAIN",
            "ZCE|Z|SF|MAIN","ZCE|Z|SM|MAIN",
            "DCE|Z|M|MAIN","DCE|Z|Y|MAIN","DCE|Z|A|MAIN","DCE|Z|B|MAIN",
            "DCE|Z|P|MAIN","DCE|Z|C|MAIN","DCE|Z|CS|MAIN","DCE|Z|JD|MAIN",
            "DCE|Z|L|MAIN","DCE|Z|V|MAIN","DCE|Z|EB|MAIN","DCE|Z|PP|MAIN",
            "DCE|Z|J|MAIN","DCE|Z|JM|MAIN","DCE|Z|I|MAIN","DCE|Z|EG|MAIN",
            "DCE|Z|PG|MAIN","DCE|Z|LH|MAIN",
            "SHFE|Z|AU|MAIN","SHFE|Z|AG|MAIN","SHFE|Z|CU|MAIN","SHFE|Z|AL|MAIN",
            "SHFE|Z|ZN|MAIN","SHFE|Z|NI|MAIN","SHFE|Z|SN|MAIN","SHFE|Z|PB|MAIN",
            "SHFE|Z|RB|MAIN","SHFE|Z|SS|MAIN","SHFE|Z|HC|MAIN","SHFE|Z|FU|MAIN",
            "SHFE|Z|BU|MAIN","SHFE|Z|RU|MAIN","SHFE|Z|SP|MAIN" ]

KCSL=1 #开仓手数
HDCS=2 #滑点参数

# 策略开始运行时执行该函数一次
def initialize(context): 
    # 订阅K线周期数据
    for x in HYMCLB :
        SetBarInterval(x,'M',g_params['ZQ'],'A')    

# 策略触发事件每次触发时都会执行该函数
def handle_data(context):
    for x in HYMCLB :
        if CurrentBar(x,'M',g_params['ZQ']) < g_params['p3'] :
            return
        ma1 =talib.MA(Close(x,'M',g_params['ZQ']), g_params['p1'])
        ma2 =talib.MA(Close(x,'M',g_params['ZQ']), g_params['p2'])
        ma3 =talib.MA(Close(x,'M',g_params['ZQ']), g_params['p3'])
        # LogInfo(x,"ma1:",ma1[-1],"ma2:",ma2[-1],"ma3:",ma3[-1])

        if len(ma3)>g_params['p3'] and MarketPosition(x) != 1  and OpenInt(x,'M',g_params['ZQ'])[-1]>12000 \
        and ma1[-2]>ma3[-2] and ma1[-3]<ma3[-3]  :
            Buy(KCSL,Open(x,'M',g_params['ZQ'])[-1]+PriceTick(x)*HDCS,x)

        if len(ma3)>g_params['p3'] and MarketPosition(x) ==1 and OpenInt(x,'M',g_params['ZQ'])[-1]>12000 \
        and BarsSinceLastBuyEntry(x)>2 and BuyPosition(x)<3     \
        and Close(x,'M',g_params['ZQ'])[-2]>ma3[-2] and ma1[-2]>ma2[-2] and ma1[-3]<ma2[-3]  :
            Buy(KCSL,Open(x,'M',g_params['ZQ'])[-1]+PriceTick(x)*HDCS,x)


        if len(ma3)>g_params['p3'] and MarketPosition(x) != -1  and OpenInt(x,'M',g_params['ZQ'])[-1]>12000 \
        and ma1[-2]<ma3[-2] and ma1[-3]>ma3[-3]  :
            SellShort(KCSL,Open(x,'M',g_params['ZQ'])[-1]-PriceTick(x)*HDCS,x)

        if len(ma3)>g_params['p3'] and MarketPosition(x) ==-1 and OpenInt(x,'M',g_params['ZQ'])[-1]>12000 \
        and BarsSinceLastSellEntry(x)>2 and SellPosition(x)<3    \
        and Close(x,'M',g_params['ZQ'])[-2]<ma3[-2] and ma1[-2]<ma2[-2] and ma1[-3]>ma2[-3]  :
            SellShort(KCSL,Open(x,'M',g_params['ZQ'])[-1]-PriceTick(x)*HDCS,x) 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神出鬼没,指的就是我!

必须花钱,数据超好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值