以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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线上其虚拟仓位可能已经被平。