1.为何代码逻辑跑到了,但策略交易不会执行sell操作:
代码逻辑是:
((CC_HoldDuoKong<>0) And (YD_EntryPrice T_Run_diao))//单根K线内回撤平空
{
If(flag_debugL1==6)Commentary("LD1-CC_HoldDuoKong=" + Text(CC_HoldDuoKong) + ",YD_EntryPrice=" + Text(YD_EntryPrice) + ",T_Run_diao=" + Text(T_Run_diao));
If(flag_debugL1==6)Commentary("LD-YD_EntryPrice=" + Text(YD_EntryPrice) + ",T_Run_diao=" + Text(T_Run_diao));
flag_buybook=0;flag_sellbook=0;record_price=0;TickCounter=0;//初始化趋势判断参数集
//Buy(0, Min(Open, YD_EntryPrice-Run_diao));//平仓:参数0表示全部平掉
If(flag_Huice==1){If(flag_BaoshouK==1){BuyToCover(V_shou, Open);Commentary("【平空A】【平空】"+Text(Open));}Else {BuyToCover(V_shou, Min(Open, Close));Commentary("【平空B】【平空】"+Text(Min(Open, Close)));}YD_EntryPrice=0;If(flag_Fanshou==1){flag_buybook=1;flag_sellbook=0;}}//Tick级优化
Else {If(flag_BaoshouK==1){BuyToCover(V_shou, Open);Commentary("【平空C】【平空】"+Text(Open));}Else {BuyToCover(V_shou, Min(Open, YD_EntryPrice-T_Run_diao));Commentary("【平空D】【平空】"+Text(Min(Open, YD_EntryPrice-T_Run_diao)));}YD_EntryPrice=0;If(flag_Fanshou==1){flag_buybook=1;flag_sellbook=0;}}
CC_HoldDuoKong=0;CC_FirstPrice=0;//平仓后初始化持仓状态
flag_Kjump=0;YD_EntryPrice=0;
CC_TotalDuoKong=CC_TotalDuoKong+1;
If(flag_debugL1==6)Commentary("LINE357-空单回撤平仓D:平均价格:" + Text(AvgPrice()));
}
----------------------------------------------------------------------
是要如下图K线里有交易的数量?——是不是一个bug?请代码老师解答
你对tb的认知似乎有很多误会。
不是说你账户里有持仓,就能执行sell 和 buytocover的
执行平仓命令的前提是之前执行过buy 和sellshort的开仓命令
图表上之前必须开过仓,才能出平仓信号,然后发平仓命令。
你如果想做微操,直接报单,得用a_sendorder,或者a_sell,a_buytocover
建议先看一下零基础把功能和机制特点搞明白
一知半解就说是bug就...
professional
颜色我看瞎了,我复制一下
((CC_HoldDuoKong<>0) And (YD_EntryPrice T_Run_diao))//单根K线内回撤平空
{
If(flag_debugL1==6)Commentary("LD1-CC_HoldDuoKong=" + Text(CC_HoldDuoKong) + ",YD_EntryPrice=" + Text(YD_EntryPrice) + ",T_Run_diao=" + Text(T_Run_diao));
If(flag_debugL1==6)Commentary("LD-YD_EntryPrice=" + Text(YD_EntryPrice) + ",T_Run_diao=" + Text(T_Run_diao));
flag_buybook=0;flag_sellbook=0;record_price=0;TickCounter=0;//初始化趋势判断参数集
//Buy(0, Min(Open, YD_EntryPrice-Run_diao));//平仓:参数0表示全部平掉
If(flag_Huice==1){If(flag_BaoshouK==1){BuyToCover(V_shou, Open);Commentary("【平空A】【平空】"+Text(Open));}Else {BuyToCover(V_shou, Min(Open, Close));Commentary("【平空B】【平空】"+Text(Min(Open, Close)));}YD_EntryPrice=0;If(flag_Fanshou==1){flag_buybook=1;flag_sellbook=0;}}//Tick级优化
Else {If(flag_BaoshouK==1){BuyToCover(V_shou, Open);Commentary("【平空C】【平空】"+Text(Open));}Else {BuyToCover(V_shou, Min(Open, YD_EntryPrice-T_Run_diao));Commentary("【平空D】【平空】"+Text(Min(Open, YD_EntryPrice-T_Run_diao)));}YD_EntryPrice=0;If(flag_Fanshou==1){flag_buybook=1;flag_sellbook=0;}}
CC_HoldDuoKong=0;CC_FirstPrice=0;//平仓后初始化持仓状态
flag_Kjump=0;YD_EntryPrice=0;
CC_TotalDuoKong=CC_TotalDuoKong+1;
If(flag_debugL1==6)Commentary("LINE357-空单回撤平仓D:平均价格:" + Text(AvgPrice()));
}
另外:比如做单条件是If(CLOSE>X){}——那么这里Close可能在实盘是在X上下来回串,那么这个“信号闪烁问题”怎么解决?
我评论一下,首先你这个局部代码,我运行不了
2.格式比较乱,我建议你点这个代码模式,然后复制过来,然后最好是能运行的
3.我通过搜索功能,在你贴的里面并没有找到sell语句
BuyToCover没有执行。
就是图标里已经打印出Commentary信息——“平空D”字样。但实际的图标里没有标注sell的那个数字,然后buyToCover没有执行!
通过使用不变的条件,比如回溯 close[1]>x 表示确认
然后你这个buytocover,请提供可以运行的代码
你随便写个就可以了。把“策略交易”里的策略,启停启停,手工做个单进去。然后用A_GetPosition()函数,实时更新持仓,看这个实时更新的持仓,策略交易里会不会去止损。
Position mypos;
Bool ret=A_GetPosition(Symbol(), mypos);
调试根据具体情况的,我随便写一个内容和你策略有什么关系
然后你提到了A_GetPosition
我建议你先研究下公式机制问题,A函数不要和图表混用
OK。了解了!