比如:收盘前10分钟,如果行情方向与持仓方向相反则平仓。如果收盘前10分钟,行情方向与持仓方向相同,则持仓到收盘前2分钟平仓。
1.“行情方向与持仓方向相反” 这个需要具体的定义才能写成代码形式。
2.图表还是后台呢?
有事没及时回复。
1.“行情方向与持仓方向相反”:
比如持有多单,离收市还有10min,此时k线为阴线,则平仓。如果此时k线为阳线,则持仓到离收市2min平仓。10min图表交易
2.图表交易
这个K线的阴阳线 可能是实时变化的,你这里的判断只是取某一刻的吗?哪怕下一秒反转的也无所谓? 比如10min是阳线到了2分钟时候反倒变成阴线了。 另外交易周期是10分钟K周期?
我尝试了下。这个图表上做不到,后台或许可以,但是图表不行。图表上无法在一个K内记住某个变化的状态,也就是无法记住是否某个时刻满足阳线条件,只能判断最新状态是否是阳线。而你这个思路是需要做这个判断的,因此这个不行。
abb3:time0-timetot0(CLOSETIME(0));//收盘K线结束倒计时间
// barpos>extgbdata('t') 这个是关键用来限制下面这个if里面的语句在每个K内 只在满足条件时候执行一次
if barpos>extgbdata('t') and abb3>=10*60 then //收盘前10分钟判断一次 由于行情活跃程度不同,abb3可能无法刚好计时到10分钟位置,所以必须是用>=判断
begin
if c>o and TSELLHOLDINGEX('','',1)>0 then TSELLSHORT(1,TSELLHOLDINGEX('','',1),MKT);
if c<o and TBUYHOLDINGEX('','',1)>0 THEN tsell(1,TBUYHOLDINGEX('','',1),MKT);
extgbdataset('t',barpos);//
end
if abb3>=2*60 then //收盘前2分钟直接全平仓
begin
TSELLSHORT(1,TSELLHOLDINGEX('','',1),MKT);
tsell(1,TBUYHOLDINGEX('','',1),MKT);
end
需要设置一个全局变量:
工具-选项-数据管理-全局变量

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

仅供参考
上面后台代码平仓会对所有来源的持仓都平仓的,我没有做精细的控制了。可以自行修改平仓手数之类的。
以下是引用FireScript在2019/9/11 9:20:55的发言:
abb3:time0-timetot0(CLOSETIME(0));//收盘K线结束倒计时间
// barpos>extgbdata('t') 这个是关键用来限制下面这个if里面的语句在每个K内 只在满足条件时候执行一次
if barpos>extgbdata('t') and abb3>=10*60 then //收盘前10分钟判断一次 由于行情活跃程度不同,abb3可能无法刚好计时到10分钟位置,所以必须是用>=判断
begin
if c>o and TSELLHOLDINGEX('','',1)>0 then TSELLSHORT(1,TSELLHOLDINGEX('','',1),MKT);
if c<o and TBUYHOLDINGEX('','',1)>0 THEN tsell(1,TBUYHOLDINGEX('','',1),MKT);
extgbdataset('t',barpos);//end
if abb3>=2*60 then //收盘前2分钟直接全平仓
begin
TSELLSHORT(1,TSELLHOLDINGEX('','',1),MKT);
tsell(1,TBUYHOLDINGEX('','',1),MKT);
end
需要设置一个全局变量:
工具-选项-数据管理-全局变量

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

仅供参考
上面后台代码平仓会对所有来源的持仓都平仓的,我没有做精细的控制了。可以自行修改平仓手数之类的。
基础比较薄弱,
t的意义是???或者说t的作用是什么??
t的作用就是限制部分代码在每个K里只在满足某个条件时候只触发一次的作用。
if barpos>extgbdata('t') then
begin
extgbdataset('t',barpos);//记住K线位置。
//需要在满足条件时候只操作一次的代码
end
t在符合条件的时候会记住barpos 也就是K线位置, 这样下次再次执行代码时候 barpos>extgbdata('t') 就无法满足了,这样就可以达到限制后面的重复执行。因为这时候 赋值之后barpos是等于extgbdata('t')的值的。无法满足barpos>extgbdata('t')这个条件的。