以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]请高手帮忙看看是有逻辑错误还是函数或语句使用有问题?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=3192)

--  作者:leowyn
--  发布时间:2010/10/11 16:40:44
--  [求助]请高手帮忙看看是有逻辑错误还是函数或语句使用有问题?

仅图表显示用不涉及头寸管理:

 

省略N行

 

///////////////////////////////////////////////////////////////////////////////////////////////////////

 IF HOLDING=0 THEN
 BEGIN
     //多头开仓,"开多"囊括了所有开多条件.只要在可开多区且,满足任意一个就开仓.

     IF 交易时间 AND 开多 AND 大胆做多区 THEN
     BEGIN
      //为便于相互调用,条件语句多数未设定区间限制,故此处还是有限制的必要.
         BUY(1,P,LIMITR,CLOSE);
            PLAYSOUND(交易时间 AND 开多 AND 大胆做多区,\'D:\\Weisoft Stock\\sound\\BK.wav\');
        END
   
     //空头开仓,"开空"囊括所有开空条件...............

      IF 交易时间 AND 开空 AND NOT(大多相强区) and not(红区) and not(红补) and not(趋势纯红) and 开空必要条件 THEN
      BEGIN
         BUYSHORT(1,P,LIMITR,CLOSE); 
         PLAYSOUND(交易时间 AND 开空 AND NOT(超级强势区) AND NOT(大多相强区),\'D:\\Weisoft Stock\\sound\\SK.wav\');
        END
 END

 ///////////////////////////////////////////////////////////////////////////////////////////////
 
IF HOLDING>0 THEN BEGIN
     //多头平仓. "A平多"代表满足平多的任一条件.当有平多单条件满足时,需要先判断当前点位所处区间,并判断出"开多单时"的点位所处区间(大区)及开多性质(大中小波),开仓点位不同,平仓条件不同.
   IF ENTERBARS>1 AND A平多 THEN
   BEGIN

 

       if 大波开多 or 纯超强区 then
       begin  

               IF 平多1 THEN
                    SELL(1,HOLDING,MARKET,CLOSE);
                    PLAYSOUND(平多1,\'D:\\Weisoft Stock\\sound\\SP.wav\');
                    GOTO QUITLINE;
       end  
   
   
        if 大波开多 and 混超强区 then
        begin  //细化平多仓.混超区开的大波多单,平仓条件相对纯超区宽松
                IF 平多2  THEN    //只要是大波开仓就不能用普平多条件.否则太快平错失太多机会.
                    SELL(1,HOLDING,MARKET,CLOSE);
                    PLAYSOUND(平多2,\'D:\\Weisoft Stock\\sound\\SP.wav\');
                    GOTO QUITLINE;
        end  
   
        if not(大波开多) AND NOT(纯超强区) then
        begin 
                 IF 平多 OR 平多1 OR 平多2  or 平多3 THEN
                      SELL(1,HOLDING,MARKET,CLOSE);
                      PLAYSOUND(平多 OR 平多1 OR 平多2 or 平多3,\'D:\\Weisoft Stock\\sound\\SP.wav\');
         GOTO QUITLINE;
         end
  END
 
     //多头收盘平仓
 QUITLINE@ IF NOT(交易时间) THEN
     BEGIN
            SELL(1,HOLDING,LIMITR,CLOSE);
            PLAYSOUND(NOT(交易时间),\'D:\\Weisoft Stock\\sound\\SP.wav\');            
      END
 END

 {
 通过GOTO无条件跳转保证不会重复开平仓.问题似乎解决了. 

 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////

 

平空代码省略.

 

现在的问题是.无法准确定位开平仓点.总是乱的.不知道那里的错误

还请高手指导一下.是不是条件控制和判断语句逻辑错误还是那里的问题.

我刚学金字塔编程,请多帮忙.

[此贴子已经被作者于2010-10-11 16:41:37编辑过]

--  作者:圆周工作室
--  发布时间:2010/10/11 18:12:08
--  

你这个代码只是片段

 

另外,你现在的逻辑是有问题的

 

请把所有if下的逻辑内容 用 begin  end 包括起来

 

现在漏洞十分明显,报警肯定跟信号不一致


--  作者:leowyn
--  发布时间:2010/10/11 21:08:36
--  
多谢!!