PRINT输出不全

实盘行情由TICK驱动运行,速度很快,我在ONORDER中用命令作PRINT输出,感觉输出内容不全,是否有的输出内容会被跳过?

PRINT本来就是用来测试策略的,如果输出不全,我就无法验证策略逻辑,请老师们指导!!!

print 怎样画线输出
简语言的Print函数在哪里查看输出
print控制台
print_signal
print_order
TBquant股市可转债板块下可转债种类不全
print问题
onexit为何无法使用Print2Quote
铁矿石,Print(\\\"1跳:\\\"+Text(minMove));输出的值为什么是5呢?
数组用“Print”命令显示不出来

什么内容不全说明一下,截图,代码都可以

不可能输出不全

没输出,就是没执行

写文件

//------------------------------------------------------------------------
// 简称: ZS33
// 名称: 报单&撤单
// 类别: 公式应用
// 类型: 用户应用
// 输出: VSid
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 简称: Boll_B_A
// 名称: 布林强盗/多/A函数
// 类别: 公式应用
// 类型: 用户应用
// 输出: VSid
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 简称: Boll_S
// 名称: 布林强盗/空
// 类别: 公式应用
// 类型: 用户应用
// 输出: VSid
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 简称: ZS27_1
// 名称: 布林强盗/空
// 类别: 公式应用
// 类型: 用户应用
// 输出: VSid
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 简称: ZS27
// 名称: 布林强盗/多
// 类别: 公式应用
// 类型: 用户应用
// 输出: VSid
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 简称: BollingerBandit_L
// 名称: 布林强盗_多
// 类别: 公式应用
// 类型: 内建应用
// 输出:
//------------------------------------------------------------------------
/* 
策略说明:
		基于布林通道的突破系统
系统要素:
		1、基于收盘价计算而来的布林通道
		2、基于收盘价计算而来的进场过滤器
		3、自适应出场均线
入场条件:
		1、满足过滤条件,并且价格上破布林通道上轨,开多单
		2、满足过滤条件,并且价格下破布林通道下轨,开空单
出场条件:
		1、持有多单时,自适应出场均线低于布林通道上轨,并且价格下破自适应出场均线,平多单
		2、持有空单时,自适应出场均线高于布林通道下轨,并且价格上破自适应出场均线,平空单
注	意:
		此公式仅做多
*/
/*返回TRUE,表示是成功执行了这个撤单命令,并不是指撤单成功。

           成功执行撤单命令和撤单成功是两回事

            因为你如果填错了订单号,导致找不到这个订单,那就是执行失败了,这叫没有成功执行撤单命令。

            撤单成功是指成功执行撤单命令后,交易所收到撤单命令,然后把委托单撤销,并且回报给客户端。*/
Params
    	Numeric Lots(1);// 交易手数	
Vars
	Series<Numeric> BAR0(0); // BAR索引
	Series<Numeric> BarS(0); // 开仓BAR
	Series<Numeric> BarP(0); // 平仓BAR
	Series<Numeric> TickSell(0); // 开仓Tick
	Series<Numeric> TickP(0); // 平仓Tick
	//Series<Numeric> SellJs(0); // 发出开空单计数
	//Series<Numeric> PingJs(0); // 发出平空单计数
	Series<Numeric> StopPrice;
	//订单变量
	Global Array<Integer> Sid;//开仓单号
	Global Array<Integer> Pid;//平仓单号
	Global Numeric SellJs(0); // 发出开空单计数
	Global Numeric PingJs(0); // 发出平空单计数
	Global Numeric HaveS(0);//空单持仓(Position是系统关键字)
	Global Numeric CancelS(0);//撤回开空单计数
	Global Numeric CancelP(0);//撤回平仓单计数
	Global Numeric MinDiff;////最小变动价/一跳价	
    Global Numeric PPP;//基准价
    Global Numeric TickSn;//Tick索引
    Global Numeric OrderStatuS;//开空单状态
    Global Numeric OrderStatuP;//平空单状态
Events
	 OnInit()//策略执行前的初始化事件,只运行一次。/可以订阅数据,数据准备等操作。
	{
		//SubscribeBar(Data0.Symbol,"Tick",Data0.BeginDateTime);//图层1
		//CreateTimer(10000);
		//data[0].hide;//隐藏图层
		HaveS=0;
		//PPP=0;
		SubscribeTick(Symbol);
		//SubscribeTick(RelativeSymbol);//返回主力合约,用于888或000
		OrderStatuS=5;
		OrderStatuP=5;
	} 	
	OnReady()
	{
	
		MinDiff=PriceScale*MinMove;//最小变动价/一跳价	
	}
	OnOrder(OrderRef Ord)//委托更新事件
	{
		
		//PRINT("Ord" +TEXT(Ord.status));
		//OrderStatuS
		IF (Ord.status==Enum_Filled AND Ord.ORDERID==Sid[0])//开空单已成交
		{
			SellJs=0; // 发出开空单计数
			HaveS=1;
			OrderStatuS=5;
			Print("开空单已成交,TickSn("+TEXT(TickSn)+")");
		}
		    
		IF (Ord.status==Enum_Declared AND Ord.ORDERID==Sid[0])//开空单已申报(未成交)
		{
			OrderStatuS=2;
			Print("开空单未成交,TickSn("+TEXT(TickSn)+")");
		}
		IF (Ord.status==Enum_Canceled AND Ord.ORDERID==Sid[0])//开空单(已撤单)
	    {
	    	OrderStatuS=6;
	    	Print("开空单已撤回,TickSn("+TEXT(TickSn)+")");
	    	
	    }
		//OrderStatuP
		IF (Ord.status==Enum_Filled AND Ord.ORDERID==Pid[0])//平空单已成交
		{
			PingJs=0;
			HaveS=0;
			OrderStatuP=5;
			Print("平空单已成交,TickSn("+TEXT(TickSn)+")");
		}
		    
		IF (Ord.status==Enum_Declared AND Ord.ORDERID==Pid[0])//平仓单已申报(未成交)
		{
			OrderStatuP=2;
			Print("平空单未成交,TickSn("+TEXT(TickSn)+")");
		}
	    
	    IF (Ord.status==Enum_Canceled AND Ord.ORDERID==Pid[0])//平仓单(已撤单)
	    {
	    	OrderStatuP=6;
	    	Print("平空单已撤回,TickSn("+TEXT(TickSn)+")");
	    }
	}//OnOrder
	OnBarOpen(ArrayRef<Integer> indexs)
	{
		TickSn=0;
	}
	
	OnBar(ArrayRef<Integer> indexs)
	{
	  IF (BarStatus==2)
	  {
		If(HaveS==0 AND OrderStatuS==5 And OPEN<=C[1]) //开空   
		{
			IF (A_SendOrderEx(Enum_Sell,Enum_Entry,Lots,Open+MinDiff*2,Sid ));
			{
				//HaveS=1;
				BarS=Bar0;
				TickSell=TickSn;
				StopPrice=H[1];
				SellJs=SellJs+1;
				Print("首开空单编号="+TEXT(Sid[0])+"/BarS="+TEXT(BarS)+"/TickS="+TEXT(TickSell));
				Print("/开空次数="+TEXT(SellJs)+"/持空仓量="+TEXT(HaveS));
			}
				
		}  
		/*IF (OrderStatuS==5)//开空单已成交
		    SellJs=0; // 发出开空单计数*/
		IF (OrderStatuS==2 AND (BAR0-BARS)*120+TickSn-TickSell>10)//撤回开空单
		{
			A_DeleteOrder(Sid[0]);	
	        Print("撤回开空单,TickSn("+TEXT(TickSn)+")");	
		}
	        
	    IF (OrderStatuS==6 AND (BAR0-BARS)*120+TickSn-TickSell>11)//重发开空单
	    {  
			IF (A_SendOrderEx(Enum_Sell,Enum_Entry,Lots,Q_Last,Sid));//重发开空单(买1价)
			{
				Print("重开空单价="+TEXT(Q_Last)+"/开空次数="+TEXT(SellJs));
				BarS=Bar0;
			    TickSell=TickSn;
			    SellJs=SellJs+1;
			    Print("重开空单编号="+TEXT(Sid[0])+"/BarS="+TEXT(BarS)+"/TickS="+TEXT(TickSell));
			}
			
		}
		// 出场
		If(HaveS==1 AND OrderStatuP==5 And BAR0>BarS And H>=StopPrice)    
		{
			IF (A_SendOrderEx(Enum_BUY,Enum_Exit,Lots,StopPrice-MinDiff*1,Pid))
		   	{
				//HaveS=0;
				BarP=Bar0;
				TickP=TickSn;
				PingJs=PingJs+1;
				Print("首平空单编号="+TEXT(Pid[0])+"/BarP="+TEXT(BarP)+"/TickP="+TEXT(TickP)+"HaveS="+TEXT(HaveS)+"/平空次数="+TEXT(PingJs));
			}	
			
		}
		/*IF (OrderStatuP==5)//开空单已成交
		    PingJs=0;*/
		IF  (OrderStatuP==2 And (BAR0-BARP)*120+TickSn-TickP>10)//撤回平空单
		{
			A_DeleteOrder(Pid[0]);
	        Print("撤回平空单,TickSn("+TEXT(TickSn)+")");	
		}
	       
	    IF (OrderStatuP==6 AND  (BAR0-BARP)*120+TickSn-TickP>11);//重发平空单
		{
			IF (A_SendOrderEx(Enum_BUY,Enum_EXIT,Lots,Q_Last,Pid));//重发平空单(卖1价)
			{
				Print("重平空单的价="+TEXT(Q_Last)+"/平空次数="+TEXT(PingJs));
            	BarP=Bar0;
			    TickP=TickSn;
			    PingJs=PingJs+1;
			    Print("重平空单编号="+TEXT(Pid[0])+"/BarP="+TEXT(BarP)+"/TickP="+TEXT(TickP));
			}
		}
		TickSn=TickSn+1;
		Print("Tick索引="+TEXT(TickSn));
	}// IF (BarStatus==2)
}	
//------------------------------------------------------------------------
// 编译版本	GS2014.10.25
// 版权所有	TradeBlazer Software 2003-2025
// 更改声明	TradeBlazer Software保留对TradeBlazer平
//			台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------


请帮我验证上传交易策略的逻辑,策略用途是测试订单流,策略要求是持仓不超过1手,但测试过程中频繁发出订单(开仓或平仓),请帮我找出逻辑BUG并修正,谢谢!!!

哥 把你当AI用了 哈哈哈哈哈哈哈哈哈

写一下估计十几分钟

改一下估计要半天


等老师给他看看吧😂

你给他看看

刚好训练一下😁

有纸笔

记一下规则

估计十几分钟能改好

麻烦两位老师了,我请DEPPSIK看过了,说了一堆不在重点,所以才斗胆请教老师,不用感激!!!

我改进了策略,已重新发贴,麻烦老师看新贴!!!