VARIABLE:A=0;
//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX(ZH1,'' ,0 )>0 AND EXTGBDATA('a' )=0 THEN BEGIN
EXTGBDATASET( 'a',1 );
END
//使A始终表示监控开始后的最高价
IF DYNAINFO(7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 THEN BEGIN
EXTGBDATASET( 'a',DYNAINFO( 7));
END
//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA('a' )- DYNAINFO(5)/DYNAINFO(7)>1.035 and EXTGBDATA('a' )>0 THEN BEGIN
TSELL(pd,TBUYHOLDINGEX(ZH1,'',1),MKT,1,ZH1,'');
EXTGBDATASET( 'a',0);
END
这没毛病吧?
那么空单的止损也是用A申明全局,还是要另建一个B申明全局?
如果多个移动止损方案呢,是否也只是用同一个A申明全局即可,或多单用A,空单用B?
如果 同时模型本身会有多空同时持仓的话,是要分开用2个全局变量的。
多个移动止损方案,也最好分开。 这个超全局变量是整个金字塔内都可以读取到的,所以如果不分开,在其他地方还有读写,就整个混乱了。另外你是否还是交易多品种的呢?如果是恐怕也要额外处理下,不过这个多品种的处理不是很麻烦。

此主题相关图片如下:temp.png

//其实就是为每个品种定义一个a. 做法就是用品种名称和字符串 a 做个拼接。
str:='a'+'_'+STKLABEL;
//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX(ZH1,'' ,0 )>0 AND EXTGBDATA(str )=0 THEN BEGIN
EXTGBDATASET( str,1 );
END
后面的‘a’全部换成str
略有不同,我的RB数值是显示现价哦

此主题相关图片如下:wechat 圖片_20210517111848.png

此主题相关图片如下:temp.png

应该不会吧。你看我这个。
我的代码:
str:='a'+'_'+STKLABEL;
IF TBUYHOLDINGEX('','' ,0 )>0 AND EXTGBDATA(str)=0 THEN BEGIN
EXTGBDATASET(str,1 );
END
//使A始终表示监控开始后的最高价
IF DYNAINFO(7)>EXTGBDATA(str ) and EXTGBDATA(str )>0 THEN BEGIN
EXTGBDATASET( str,DYNAINFO( 7));
END
后面那个回落的部分没有加上去, 你看下你是不是触发了那个回落 导致这个纪录重置了。
那行代码有的,现在没显示AG最新价了,为0,也不知道对不对

此主题相关图片如下:wechat 圖片_20210517145419.png
[此贴子已经被作者于2021/5/17 15:05:07编辑过]
满足了那个回落条件 就会重置。你回头有行情时候再测试下吧。每次加载公式运行之前,你可以手动清楚下全局变量。否则它会纪录之前的值,造成误判的。
好的。
EXTGBDATASET( strab,1 );多单用1
EXTGBDATASET(stras,1);空单是不是得用-1,还是仍是1呢?
你多空如果分开了,1,还是-1 区别不大了。因为你字符串已经做了区别了。