金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1800|回复: 2

不能开单!请老师帮忙指出错误。

[复制链接]

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
发表于 2021-11-29 22:13 | 显示全部楼层 |阅读模式
如题:1、VBA

sub PKTrade
   'call Application.ActiveFrame("fraTest")
   sAccount=order.Account(1)
   iCount=fraTest.GridCount     '获取框架fraTest有几个窗格
   for i=0 to iCount-1    '逐个读取窗格上的合约及公式输出
       Set Grid=fraTest.GetGridByName("w" &i+1)'"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
               iBP1Flag=Formula.GetBufData("BP1",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               iBK1Flag=Formula.GetBufData("BK1",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               immHoldingFlag=Formula.GetBufData("mmHolding",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               imOFlag=Formula.GetBufData("mO",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               it0Flag=Formula.GetBufData("t0",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               '你自己的交易代码段,我就不写了,也无法写,每个人的想法都不一样
               if iBP1Flag=1 and it0Flag=1 then
                  nPrice=0
                  iOrdVol=immHoldingFlag
                  call PingDuoDan(nPrice,sCode,sMarket,iOrdVol,sAccount)
               end if
               if iBK1Flag=1 and it0Flag=0 then
                  nPrice=imOFlag
                  iOrdVol=immHoldingFlag
                  call KaiDuoDan(nPrice,sCode,sMarket,iOrdVol,sAccount)
               end if                              
           end if

       next
   next
End sub

Sub KaiDuoDan(nPrice,sCode,sMarket,iOrdVol,sAccount)  '开多单,nPrice=0时为市价,否则就是传递过来的价
'application.MsgOut "iOrdVol:" & iOrdVol & "," & sCode & "," & sMarket & "," & sAccount & "," & nPrice
If iOrdVol>0 then
  If nPrice=0 then
   'application.MsgOut "sCode,sMarket,AccountID:" & sCode & "," & sMarket & "," & AccountID
   Call Order.Buy(1,iOrdVol,0,0,sCode,sMarket,sAccount,0)     '市价开多单
  Else
   Call Order.Buy(0,iOrdVol,nPrice,0,sCode,sMarket,sAccount,0)   '限价开多单
  End If
End If
End Sub



2、pel公式加载在等价K框架之上
VARIABLE:t1=0;
qj:=open*bill/10;  //----------bill/10表示幅度//-------------------------线下代码减少运行,释放资源-------------------
abb:=time0-timetot0(dynainfo(207)),nodraw;//K线结束倒计时间(秒)
t:=timetot0(time0)-timetot0(dynainfo(207)),nodraw;//当前时间结束倒计时
akk:=(timetot0(dynainfo(207))-ref(time0,1)),LINETHICK0;//k线的最开始的时间(秒)
//akk:=(timetot0(dynainfo(217))-timetot0(dynainfo(207)));//k线的最开始的时间(秒)
cd0:=not(ISLASTBAR);
cd1:=islastbar and  abb>=0 and abb<=2;
cd2:=islastbar and  akk>=0 and akk<=2;
cd3:=islastbar and  abb>=0 and abb<=59;
cd4:=islastbar and  akk>=0 and akk<=59;
if abs(close-open)>qj&&cd1 then T1:=1;
if t1=1&&cd2 then T1:=0;
T0:t1,NODRAW;
buy0:if(C>O&&T1=1,1,0);//等价K成立且时间恰为周期的最后1秒:卖
BP0:if(C<O&&cd2&&T1=0,1,0);//等价K开始且时间恰为周期的第1秒内:买
回复

使用道具 举报

30

主题

7075

帖子

7085

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2021-11-30 09:01 | 显示全部楼层
具体啥问题呢,建议自己加下msgout调试下条件
这类复杂的策略工作人员没有办法帮您一对一什么都看的
建议先自行定位下问题在哪,基本的调试输出的能力要有
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

11

主题

66

帖子

66

积分

等级: 免费版

注册:
2021-6-3
曾用名:
发表于 2021-12-1 10:02 | 显示全部楼层
iBar=round(Formula.GetBufData("iBar",Formula.DataSize-1),0)     '读取策略的变量输出iBar
               iBP1Flag=Formula.GetBufData("BP1",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               iBK1Flag=Formula.GetBufData("BK1",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               immHoldingFlag=Formula.GetBufData("mmHolding",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               imOFlag=Formula.GetBufData("mO",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag
               it0Flag=Formula.GetBufData("t0",Formula.DataSize-1)                 '读取策略的变量输出BP1Flag

这里的变量输出,在PEL中都没有,所以接受不到PEL策略的值

----------------------------------------wx:guotx-
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 07:38 , Processed in 0.233294 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表