等级: 新手上路
- 注册:
- 2021-9-23
- 曾用名:
|
开一个贴,谈谈我开发策略的思路,以及实盘交易外盘的经验,目前稳定盈利,虽然不能日日赢还有很大的提升空间但是也是不错的策略了,在这里跟踪展示模拟测试(实盘就不展示了),希望能够结识志同道合的朋友,一起探讨成长。
1、策略是用PEL开发的,基于金字塔的等价K线,然后框架运行。
在PEL策略的结尾,增加一句:ccc:holding,nodraw,colorwhite; 这句的意思是将PEL的虚拟持仓赋值给变量“CCC”,方便VBA来读取。
2、VBA部分,实时读取框架的PEL持仓。(感谢guotx的大力支持)
iCount= DeniAT1.GridCount '获取框架fraTest有几个窗格
for i=0 to iCount-1 '逐个读取窗格上的合约及公式输出
Set Grid= DeniAT1.GetGridByName("Window" &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上的公式,得到公式对象
CycType = Grid.CycType '获得该窗格周期
if Formula.Name<>"MAIN" then '一般不是MAIN,就是自己的策略,如果有多个策略加载在图表上,最好只保留一个
TRDKCC = Formula.GetBufData("CCC",Formula.DataSize-1) '读取策略的变量输出
CCC = TRDKCC
'Application.MsgOut sCode & "--" & cyctype & "-周期-CC: " & CCC & " 最新价: " & nlastprice
if strComp(sCode ,"HSI00")=0 then
call Document.SetExtData("HSI00CCC",TRDKCC)
elseif strComp(sCode ,"CL00")=0 then
call Document.SetExtData("CL00CCC",TRDKCC)
elseif strComp(sCode ,"ES00")=0 then
call Document.SetExtData("ES00CCC",TRDKCC)
elseif strComp(sCode ,"GC00")=0 then
call Document.SetExtData("GC00CCC",TRDKCC)'
end if
next
next
同时,VBA读取到PEL策略持仓后,写入本地文本文件,留给第三方程序读取。
3、盈透的交易软件TWS,提供各种api,但是不能直接与金字塔VBA对接,所以又做了一个程序IBTrader,这个程序的作用就是不断读取文本文件,然后通过API连接到 IBGete way,下单给盈透。
IB gate way虽然又中文版本,建议切换到英文状态,比较稳定。
可以看出,交易外盘,需要运行金字塔、IBtrader、IB Gateway三个软件。
上面的整体思路是:PEL--VBA-IBTRADER-IB GATEWAY,实现了金字塔下单到盈透的方式。金字塔目前还有外盘的行情信号,我主要交易的品种是恒指、标普指数、美原油、美黄金。
后面比较多贴图,我研究一下怎样贴图先,熟悉的朋友可以指点一下,谢谢。
|
|