这就需要看你的开平仓条件是如何写的了,通过代码逻辑判断来实现。满足开仓条件时,并且其他开仓或平仓条件条件不满足时才触发此信号,这样就不会同时多个信号。
[此贴子已经被作者于2018/4/10 9:43:51编辑过]
平空:SELLSHORT(bp4 and HOLDING<0,1,THISCLOSE); //平空信号
开多:BUY(bk1 and HOLDING=0,1,THISCLOSE); //开多信号
平多:SELL( sp4 and holding>0,1,THISCLOSE); //平多信号
开空:BUYSHORT(sk1 and HOLDING=0 ,1,THISCLOSE); //开空信号
为什么这样限制依然会出现同时开平仓。平仓已经限制了有持仓才会触发。
您是用得固定轮询的模式吗,现在的情况是在同一根K线上开仓了,然后又平掉仓了是吗 ?
逐K,只刷最后一根K。同一根K线上开仓了,然后又平掉仓。请问是怎么设置
您要用全局变量控制一下,在工具 》 数据管理 》 全局变量中设置一个bar,下面是个例子
if EXTGBDATA( 'bar')<barpos and 开多条件 then beginbuy() EXTGBDATASET('bar' , barpos); endif EXTGBDATA( 'bar')<barpos and 平多条件 thenbegin
sell()
end
此主题相关图片如下:temp.png

全局变量设置好了。能不能帮我改写一个信号的例子。我复制你的示例修改不通过。
开多:BUY(bk1 and HOLDING=0,1,THISCLOSE); //开多信号
平多:SELL( sp4 and holding>0,1,THISCLOSE); //平多信号
您这样需要建立2个全局变量,分开记录多开和空开,列子如下:if extgbdata( 'bar')<barpos and bk1 then
begin
开多:buy(holding=0,1,thisclose);
extgbdataset('bar' , barpos);
end
if extgbdata( 'bar')<barpos and sp4 then
begin
平多:sell(holding>0,1,thisclose);
end
if extgbdata( 'bar2')<barpos and sk1 then
begin
开空:buyshort(holding=0 ,1,thisclose);
extgbdataset('bar2' , barpos);
end
if extgbdata( 'bar2')<barpos and bp4 then
begin
平空:sellshort( holding<0,1,thisclose);
end
[此贴子已经被作者于2018/4/10 16:08:03编辑过]