以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=157989) |
-- 作者:haizxj -- 发布时间:2017/9/17 20:57:22 -- 写了一个平仓程序,看看对不对 //这个程序用于指定价格平仓,图表化情况下,已经手工开仓,程序平仓 //只平一次 c1:=0; KD:=c>0; //开多条件,即时价大于零,开仓 PD:=c>=588; //平多条件 //KK:=; //开空条件 //PK:=; //平空条件 //平空:SELLSHORT(PK,1,THISCLOSE); //平空信号 开多:BUY(KD AND HOLDING=0 and c1=0,2,THISCLOSE); //开多信号 平多:SELL(PD,0,THISCLOSE); //平多信号 //开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号 ho:HOLDING; if pd then c1:=1; |
-- 作者:wenarm -- 发布时间:2017/9/18 8:16:20 -- 你是想实现半自动的方式?
[此贴子已经被作者于2017/9/18 8:16:42编辑过]
|
-- 作者:haizxj -- 发布时间:2017/9/18 10:52:26 -- 是的 想实现半自动 平仓一次 但如果平仓了 又由于C大于零 又会开仓 所以加了限定次数条件 你帮我看一下 对不对 |
-- 作者:FireScript -- 发布时间:2017/9/18 11:24:14 -- c1要定义成全局变量,否则限制不了次数。
|
-- 作者:haizxj -- 发布时间:2017/12/12 17:19:16 -- variable: c1:=0; //aa:EXTGBDATA(c1 ); KD:=c>0; //开多条件 PD:=c>=550; //平多条件 KK:=; //开空条件 PK:=; //平空条件 //平空:SELLSHORT(PK,1,THISCLOSE); //平空信号 开多:BUY(KD AND HOLDING=0 and c1=0 ,1,THISCLOSE); //开多信号 平多:SELL(PD,0,THISCLOSE); //平多信号 //开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号 ho:HOLDING; if pd then c1=1; 怎么还是不行 |
-- 作者:wenarm -- 发布时间:2017/12/12 21:28:50 -- 麻烦说清楚你的需求,以及上述代码中不满足现象。
[此贴子已经被作者于2017/12/12 21:29:13编辑过]
|
-- 作者:haizxj -- 发布时间:2017/12/14 19:26:17 -- 由于手工开了一单 现在平仓一手 限价550, 就是只要即时价达到550就平掉 现在发现前面还是有开平信号 |
-- 作者:wenarm -- 发布时间:2017/12/15 8:26:14 -- 你如果是手工开仓的,希望实现自动平仓的话。应该吧你开仓位置开在历史信号上,并且让其不会在当前k线上满足开仓条件。
buy(barpos=1,30,THISCLOSE);//在历史上第一根位置开出足够的仓位,便于后执行平仓条件时有足够的虚拟仓位。条件可以修改为其它的,只要满足上面说的就行。 只有这样你才能不会出现上面说的,存在出现开仓信号。 平多:SELL(PD,1,THISCLOSE);
另外你上面的条件是直接全平,这种情况下,当前仓位可能根本平不掉,因为在历史k线上其虚拟仓位可能已经被平。 |