以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 编写求助 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=171971) |
-- 作者:Damoclus -- 发布时间:2019/9/8 19:24:05 -- 编写求助 比如:收盘前10分钟,如果行情方向与持仓方向相反则平仓。如果收盘前10分钟,行情方向与持仓方向相同,则持仓到收盘前2分钟平仓。 |
-- 作者:FireScript -- 发布时间:2019/9/9 9:11:51 -- 1.“行情方向与持仓方向相反” 这个需要具体的定义才能写成代码形式。 2.图表还是后台呢?
|
-- 作者:Damoclus -- 发布时间:2019/9/9 19:06:47 -- 有事没及时回复。 1.“行情方向与持仓方向相反”: 比如持有多单,离收市还有10min,此时k线为阴线,则平仓。如果此时k线为阳线,则持仓到离收市2min平仓。10min图表交易 2.图表交易
|
-- 作者:FireScript -- 发布时间:2019/9/10 9:06:09 -- 这个K线的阴阳线 可能是实时变化的,你这里的判断只是取某一刻的吗?哪怕下一秒反转的也无所谓? 比如10min是阳线到了2分钟时候反倒变成阴线了。 另外交易周期是10分钟K周期? |
-- 作者:Damoclus -- 发布时间:2019/9/10 10:00:30 -- 目前判断先取某一刻。先以那个时间点取值判断。 交易周期10分钟k线周期。
|
-- 作者:FireScript -- 发布时间:2019/9/10 10:18:13 -- 我尝试了下。这个图表上做不到,后台或许可以,但是图表不行。图表上无法在一个K内记住某个变化的状态,也就是无法记住是否某个时刻满足阳线条件,只能判断最新状态是否是阳线。而你这个思路是需要做这个判断的,因此这个不行。 |
-- 作者:Damoclus -- 发布时间:2019/9/10 21:03:11 -- 麻烦举个例子,后台怎么编写。如果是只判断最新状态 |
-- 作者: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 需要设置一个全局变量: 工具-选项-数据管理-全局变量 仅供参考 上面后台代码平仓会对所有来源的持仓都平仓的,我没有做精细的控制了。可以自行修改平仓手数之类的。
|
-- 作者:Damoclus -- 发布时间:2019/9/12 18:09:59 -- 以下是引用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 需要设置一个全局变量: 工具-选项-数据管理-全局变量 仅供参考 上面后台代码平仓会对所有来源的持仓都平仓的,我没有做精细的控制了。可以自行修改平仓手数之类的。 基础比较薄弱, t的意义是???或者说t的作用是什么??
|
-- 作者:FireScript -- 发布时间:2019/9/16 8:53:56 -- 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\')这个条件的。 |