if(Q_UpperLimit > 0 && Q_LowerLimit > 0 && BarStatus == 0)
{
// 初始化全局变量(共18个)
SetGlobalVar(0, 0); // [0] 系统就绪标记
SetGlobalVar(3, 9999); // [3] 多单时间戳
SetGlobalVar(13, 0); // [13] 多仓标记(0/1)
SetGlobalVar(17, 9999); // [17] 空单时间戳
SetGlobalVar(14, 0); // [14] 空仓标记(0/1)}因BarStatus == 0,是否每根K线切换都重新初始化?
BarStatus == 0 是第一根K线 所以是加载时候执行
因我的代码是在BarStatus == 2时发单,if(BarStatus == 2 &&CanLong && GetGlobalVar(13)==0)
{
SetGlobalVar(13, 1);
SetGlobalVar(3, NextBarDateTime);
if(totalBuyLots >= 5*LotMultiple)
{
{
for i = 0 to 4 {
if (i < dremainder) {
A_SendOrder(Enum_Buy, Enum_Entry, dbaseLots + 1,
GetGlobalVar(5) + (i+1)*MinMove*PriceScale);
} else {
A_SendOrder(Enum_Buy, Enum_Entry, dbaseLots,
GetGlobalVar(5) + (i+1)*MinMove*PriceScale);
}
}
}
}}发单后全局变量13,3作了标计,只有第1根k线初化,就对的,若每k线初化,标计就初化了。起不到标计作用了。
我看错了
你的没问题
是只初始化一次
要看你代码放在哪个域
如果init域就是初始化一次
如果是onbaropen就是K线开始的时候初始化一次,有多少k就初始化多少次
btw:
涨跌停有的交易所是0
有的是具体数值
有的是无效值
所以编码逻辑有问题
看到BarStatus == 0了
那就是初始化一次
意思是 实盘有可能无法提取到正确的涨跌停价格 ,是吗?
能娶到
我看错了
ASK和BID价不一定
发单后全局变量13,3作了标计,只有第1根k线初化,就对的,若每k线初化,标计就初化了。起不到标计作用了。
你就说一下你的诉求
我的诉求就是 BarStatus == 0时初始化(第一根k线)以后的K线不要再( BarStatus == 0时初始化)因全局变量开仓标记了,只有平仓再标记0,
那就直接设置个全局变量
在oninit域初始化一次更简单吧
有道理