以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  请教关于平仓策略的写法  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=58090)

--  作者:punkcat401
--  发布时间:2013/10/28 10:00:43
--  请教关于平仓策略的写法


图片点击可在新窗口打开查看此主题相关图片如下:2013-10-27_175544.png
图片点击可在新窗口打开查看

研究了几天新图表交易后,自己写了个简单的系统,测试发现有问题,就像图中这样,开仓点是对的,但是所有平仓点都出现在开仓点同一根K上

可能是对全局变量没写好

 

平仓策略如下:

做多后,跌破开仓均价10点止损。
做多后,如果开仓均价盈利大于50点但小于100点时,跌破盈利段的一半止盈。
做多后,如果开仓均价盈利大于100点时,以盈利100点的位置为低点,100+N点为高点,这段距离回落一半止盈。

 

这种平仓策略应该怎样写呢


--  作者:punkcat401
--  发布时间:2013/10/28 10:05:23
--  

平仓策略第一条写错了,是做多后


--  作者:fly
--  发布时间:2013/10/28 10:16:14
--  

请您耐心等待


--  作者:fly
--  发布时间:2013/11/4 16:31:29
--  

//用固定时间间隔

 

variable:maxprofit=0;//有仓位时最大获利

 

buycond:=ref(count(c>o,2)=2,1);

 

if buycond  and holding=0  then
 begin
 buy(1,1,limitr,o+2*mindiff);
 maxprofit:=0;
 end
 
//止损平仓 
if holding>0 and low<enterprice-10 then sell(1,1,market);

win:=0;
win2:=0;

if holding > 0 and enterbars > 0 then
begin
 win:=(high-enterprice); //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
 
 win2:=maxprofit-win; //最大盈利后的回调幅度
end

 

//如果开仓均价盈利大于50点但小于100点时,跌破盈利段的一半止盈
if maxprofit>50 and maxprofit<100 and holding>0 then
  止赢1:SELL(win2<0.5*maxprofit,1,market);

 

//如果开仓均价盈利大于100点时,以盈利100点的位置为低点,100+N点为高点,这段距离回落一半止盈
if maxprofit>=100 and holding>0 then
  止赢2:SELL(win2<100+0.5*(maxprofit-100),1,market);

[此贴子已经被作者于2013/11/8 15:44:53编辑过]

--  作者:punkcat401
--  发布时间:2013/11/8 13:23:34
--  
以下是引用fly在2013/11/4 16:31:29的发言:

 

明白了,谢谢指导。


--  作者:punkcat401
--  发布时间:2013/11/15 10:59:21
--  
以下是引用fly在2013/11/4 16:31:29的发言:

“多头开仓均价盈利大于100点时,以盈利100点的位置为低点,100+N点为高点,这段距离回落一半止盈”的代码。

如果将多头开仓价换为日线的开盘价,变成“由日线开盘价上行大于100点时,以上行100点的位置为低点,100+N点为高点,这段距离回落一半止盈”,应该怎么写呢,改了几次好像都有问题

 

variable:maxprofit=0;//有仓位时最大获利

 

if 条件 and holding=0 then
begin
buy();
maxprofit:=0;
end

 

win:=0;
win2:=0;

 

if holding > 0 and enterbars > 0 then
begin
win:=(high-enterprice); //记录最大盈利
if win > maxprofit then
maxprofit:=win;
win2:=maxprofit-win; //最大盈利后的回调幅度
end

 

//多头止盈

if maxprofit>=100 and holding>0 then
SELL(win2<100+0.5*(maxprofit-100),1,market);


--  作者:fly
--  发布时间:2013/11/20 10:58:25
--  

你的需求可以实现

你是在什么周期上运行的,日线周期吗?

 


--  作者:punkcat401
--  发布时间:2013/11/22 10:04:40
--  
以下是引用fly在2013/11/20 10:58:25的发言:

你的需求可以实现

你是在什么周期上运行的,日线周期吗?

 

5分钟周期上,这个还有区别吗


--  作者:fly
--  发布时间:2013/11/25 9:43:34
--  

 

o1:=VALUEWHEN(todaybar=1 ,open);//当日开盘价

 

win:=0;
win2:=0;

if holding > 0 and enterbars > 0 then
begin
 win:=(high-o1); //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
 
 win2:=maxprofit-win; //最大盈利后的回调幅度
end

 


--  作者:punkcat401
--  发布时间:2013/11/28 12:10:43
--  
以下是引用fly在2013/11/25 9:43:34的发言:

 

 

如果变成“价格大于均线MA(C,20)+100点时,以MA(C,20)+100点的位置为低点,100+N点为高点,这段距离回落一半止盈”,应该怎么写呢