求解惑

本人想从MC转到TBQ,模型翻译时遇到不少问题,于是做了一些测试,这个测试的信号,按我的逻辑应该突破前一根K线高低点才会有买卖信号,但是如图2中红色圈出的部分,根本没按逻辑来,百思不得其解!太痛苦了,忘大佬指点

 

由于图片一直上传失败,先上传测试代码如下:

 

 

  Events
    OnBar(ArrayRef<Integer> indexs)
{     
       if ( MarketPosition<>1 and c[1]>o[1]  ) 
           {
               Buy(0,Max(Open,H[1]) );
              // Buy(0,Max(Open,HighD(1)) );
           }
           
       if (MarketPosition<>-1 and c[1]<o[1]  )
           {
               SellShort(0,Min(Open,l[1]) );
           //    SellShort(0,Min(Open,LowD(1)) );
           }
  }

bool函数逻辑与不正确,求解惑
求论坛大佬帮助下我,解惑
求众数
求.求行情的角度 案例代码
求信号EA代码
求最高最低价
急求方案!谢谢!
求大神帮忙
如何求SwingHigh 最远的波峰值,或者求一定周期波峰的数量
求最高值错误

其他的具体消息可以学习一下事件域 onbar的内容

 

谢谢

简单说下机制,听不明白建议看看文档教学和视频以及系统的策略案例

buy sellshort sell buytocover 属于图表信号交易命令,作用是在bar上标记一个信号。历史bar上标记的信号不发单,实盘bar上第一次出信号立即按信号的价格手数参数发单。回测的时候按照bar上标记的信号进行统计得到测试报告。

至于你说的预埋单,图表信号交易机制没有这个内容

 

你这个代码的基本逻辑就是错的,

 if ( MarketPosition<>1 and c[1]>o[1]  ) 
           {
               Buy(0,Max(Open,H[1]) );
              // Buy(0,Max(Open,HighD(1)) );
           }

比如这一段的逻辑,上一根的收盘价大于上一根的开盘价,那不是当前bar开盘的时候就能确认吗?确认的时候实时价格是当前开盘价,怎么会用上一根的最高价来作为信号成交价格?这不是明显的偷价吗?

意思TBQ的机制,是出现buy sellshort 指令,必须是满足开仓条件同时处于买得到的价格 这个状态? MC是发单语句也有类似预埋单作用,可以实时价格还没触及,坐等价格触及发单这样,我理解的对吗

我之前理解是,buy(1,max(open,h[1])),这里 max(open,h[1])   这里等于实时价格还没触及 h[1],所以暂时不发单,触及了再发单

 Events
    OnBar(ArrayRef<Integer> indexs)
{     
       if ( MarketPosition<>1 and c[1]>o[1] and c>h[1]) 
           {
               Buy(0,Max(Open,H[1]) );
              // Buy(0,Max(Open,HighD(1)) );
           }
           
       if (MarketPosition<>-1 and c[1]<o[1]  and c<l[1] )
           {
               SellShort(0,Min(Open,l[1]) );
           //    SellShort(0,Min(Open,LowD(1)) );
           }
  }

 

改成这样是不是就对了

没有这种机制

你这个会信号闪烁

计算机是死的,你怎么写,它怎么运行

所以如果你的结果除了问题,那肯定是你写得出了问题。

要么是你对语法和机制还没掌握,要么是你设计的业务逻辑有bug

不管是哪种,都得看了代码才知道哪里出问题

谢谢大佬,代码如下

 Events
    OnBar(ArrayRef<Integer> indexs)
{     
       if ( MarketPosition<>1 and c[1]>o[1]  ) 
           {
               Buy(0,Max(Open,H[1]) );
              // Buy(0,Max(Open,HighD(1)) );
           }
           
       if (MarketPosition<>-1 and c[1]<o[1]  )
           {
               SellShort(0,Min(Open,l[1]) );
           //    SellShort(0,Min(Open,LowD(1)) );
           }
  }

图挂了 看不到