刚加载的时候是合适的,在ONBAROPEN事件中,但是运行几根BAR后图形就会发生变化,再重新加载就会产生完全不一样的图形线条输出,能解答一下吗?
Params
Numeric FASTDAY(3);
Numeric SLOWDAY(44); //1h5m
Numeric Ratio(10000);
String Symbo(\"rb2310.SHFE\");
Vars
Integer js(0);
Global Numeric Total(0);
Global Integer id(0);
Global Integer ss(0);
Series<Integer> serValue(0);
Integer Jishu(0);
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
// Series<Numeric> AvgValue3;
//Series<Numeric> AvgValue4;
Numeric TurtleUnits;
Numeric Jiage1;
Numeric Jiage2;
Global Integer BARSHU(0);
BOOL Zcon;
Bool Dcon;
events
OnInit()
{
id = CreateTimer(50000);
SubscribeBar(Symbo,\"1m\",20230301, 0, 0);
SubscribeBar(Symbo,\"45m\",20230301, 0, 0);
SubscribeTick(Symbo);
}
OnBarOpen(ArrayRef<Integer> indexs)
{
print(\"Systemdatetime=\"+text(systemdatetime));
print(\"------------------\");
DATA0.AvgValue1=data0.XAverage(data1.Close,FASTDAY); //12
DATA0.AvgValue2=data0.XAverage(data1.Close,SLOWDAY); //50 //涨
Data0.PlotNumeric(\"FASTDAY\",DATA0.AvgValue1); //data0.close,
Data0.PlotNumeric(\"SLOWDAY\",DATA0.AvgValue2); //data0.close,
PlotString(\"第几BAR\",TEXT(CURRENTBAR()),Data0.high+60,Black);
PlotString(\"距离上次信号BAR\",TEXT(BARSHU),Data0.high+80,Black);
TurtleUnits=1;
Zcon=CrossOver(data0.AvgValue1,data0.AvgValue2);
Dcon=CrossUnder(data0.AvgValue1,data0.AvgValue2);
if (Zcon and (MarketPosition<>1) and ((CurrentBar()-BARSHU)>25))
{
PlotString(\"开仓\",\"开多仓\",Data0.high+20,Green);
PlotString(\"趋势\",\"涨\",Data0.high+10,Blue);
IF (MarketPosition==0)
{
data0.Buy(TurtleUnits,0);
}
IF ((MarketPosition==-1) and (MarketPosition<>1))
{
data0.BuyToCover(1,0);
data0.Buy(TurtleUnits,0);
}
PlotString(\"距离上次信号BAR数\",TEXT(CURRENTBAR()-BARSHU),Data0.high+40,Yellow);
BARSHU=CurrentBar();
}
if (Dcon and (MarketPosition<>-1) and ((CurrentBar()-BARSHU)>25))
{
PlotString(\"开仓\",\"开空仓\",Data0.High+20,Green);
PlotString(\"趋势\",\"跌\",Data0.high+10,Blue);
IF (MarketPosition==0)
{
data0.SellShort(TurtleUnits,0);
}
IF ((MarketPosition==1) and (MarketPosition<>-1))
{
data0.Sell(1,0);
data0.SellShort(TurtleUnits,0);
}
PlotString(\"距离上次信号BAR数\",TEXT(CURRENTBAR()-BARSHU),Data0.high+40,Yellow);
BARSHU=CurrentBar();
}
}
OnTimer(Integer id,Integer intervalMillsecs)
{
}
那你贴一个没有全局变量的代码
另外你里面有data0之类的,还包含跨周期?
Global Integer BARSHU(0); 你这个前后怎么保证一致的?
您意思是这个全局变量导致的吗?在加入这个变量之前就已经出现问题了