等级: 免费版
- 注册:
- 2021-6-3
- 曾用名:
|
我的群里经常有人问我,怎么使用等价K线进行程序化交易,如果使用图表策略交易,直接使用框架,窗格中使用等价k线,加载图表策略就可以实现。
问题是,你如果要进行精细化控制交易细节,比如,你要使用挂单交易,不成交,希望在N秒之内,价格超过你的挂单价M跳,就撤单,自动进行追单,那就无法使用图表策略直接下单了......
想要解决这个问题,使用VBA或Python进行后台程序化交易是必然选择,具体怎么做呢?
第一步,建立你自己的框架,要交易多少个品种就增加几个窗格,加载你交易的合约和策略到窗格,窗格的名字你最好修改为自己能记住的,后面的VBA代码中会用到,窗格上的k线,选择等价k线(这个很关键)
第二步,使用VBA打开框架,获取框架上共有多少个窗格,逐个获取窗格的合约代码、市场代码,下单是需要用到
第三步,判断窗格上有几个公式,使用Grid对象的GetFormulaByIndex()函数,逐个获取公式,得到Formula对象,判断是不是你用于交易的策略,如果是,就使用Formula对象的GetbufData方法获取公式的输出,比如获取策略的持仓信号、信号价格等。
第四步,有了合约、信号,剩下的就是写交易代码了,这个可以参考我以前发布的帖子。
代码示范:(假设框架名称为fraTest,有4个窗格,窗格名称分别为w1,w2,w3,w4,就是要交易4个合约)
打开框架使用:Application.ActiveFrame("fraTest")
iCount=fraTest.GridCount '获取框架fraTest有几个窗格
for i=0 to iCount-1 '逐个读取窗格上的合约及公式输出
Set Grid=fraTest.GetGridByName("w" &i+1)
Set Rep=Grid.GetReportData() '获取窗格上的合约
sCode=Rep.Label '合约编码
sMarket=Rep.MarketName '市场编码
nLastPrice=rep.NewPrice '获取最新价
iFormulaCount=Grid.FormulaCount ’获取窗格上的公式个数
for j=0 to iFormulaCount-1 '逐个公式读取,判断是不是你用于交易的策略,是的话,就读取该公式的输出
Set Formula=Grid.GetFormulaByIndex(j) '这个关键的地方,获取Grid上的公式,得到公式对象
if Formula.Name<>"MAIN" then '一般不是MAIN,就是自己的策略,如果有多个策略加载在图表上,最好只保留一个
iBar=round(Formula.GetBufData("iBar",Formula.DataSize-1),0) '读取策略的变量输出iBar
iFlag=Formula.GetBufData("Flag",Formula.DataSize-1) '读取策略的变量输出Flag
'你自己的交易代码段,我就不写了,也无法写,每个人的想法都不一样
end if
next
next
-------------------------------------------------------------------------------
希望能帮到你!想跟我学习VBA策略开发,可以加我wx:guotx-
|
|