以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请问老师这个写了一大半的策略如何实现  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=137884)

--  作者:kotb
--  发布时间:2016/8/11 16:25:58
--  请问老师这个写了一大半的策略如何实现
这个程序不知错在哪里,编译通过了,图上显示出来重复开仓,请老师改正,谢谢
源码
————————————————————

input:m(26,1,100,1),n(2,0.1,99,0.1);

MID:ma(close,m);
UPPER:MID + N * std(close,m);
LOWER:MID - N * std(close,m);


//交易条件
开多:=c>=upper and holding=0;
开空:=lower>=c and holding=0;
平多:=mid>=c and holding>0;
平空:=c>=mid and holding<0;

variable:MAXC=500000;//maxc是权益最大值
MAXC:=hhv(asset,180);//180个周期内权益最大值

if asset > MAXC then

MAXC:=asset;
 
if asset<maxc*0.9 and CASH(0)>maxc*0.8 THEN PosNum:=asset*0.03/600 ;//当平仓资金权益从最高点回撤大于10%小于20%,开仓比例为本金的3%/600元;
else if
asset<maxc*0.8 and asset>maxc*0.7 THEN PosNum:=asset*0.015/600 ;//当平仓资金权益从最高点回撤大于20%小于30%,仓位使用为本金的1.5%/600元;
else if
asset<maxc*0.7 and asset>maxc*0.6 THEN PosNum:=asset*0.0075/600 ;//当平仓资金权益从最高点回撤大于30%小于40%,仓位使用为本金的0.75%/600元;
else if
else PosNum:=asset*0.03/600;//正常情况(平仓资金权益从最高点回撤小于10%),开仓比例为本金的3%/600元;
 
仓位:=PosNum;

//交易系统
buy(开多,仓位,MARKET);
buyshort(开空,仓位,MARKET);

sell(平多,0,MARKET);
sellshort(平空,0,MARKET);


盈亏:asset-500000,noaxis,colorred,linethick2;

——————————————————————————

 

 

 


--  作者:jinzhe
--  发布时间:2016/8/11 16:28:47
--  
什么是“重复开仓”?
--  作者:kotb
--  发布时间:2016/8/11 16:42:07
--  
图片点击可在新窗口打开查看
[此贴子已经被作者于2016-8-11 16:43:47编辑过]

--  作者:jinzhe
--  发布时间:2016/8/11 16:48:40
--  

http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=31614&page=3

看不到图,用户按照这个办法发图


--  作者:kotb
--  发布时间:2016/8/12 8:44:14
--  
并且轨道上轨UPPER也无法显示

图片点击可在新窗口打开查看此主题相关图片如下:145d5497-aa07-4a71-8664-82efd6307190.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2016-8-12 8:45:05编辑过]

--  作者:jinzhe
--  发布时间:2016/8/12 8:51:59
--  

input:m(26,1,100,1),n(2,0.1,99,0.1);


MID :  MA(CLOSE,M);
UPPER: MID + N*STD(CLOSE,M);
LOWER: MID - N*STD(CLOSE,M);

 


//交易条件
开多:=c>=upper and holding=0;
开空:=lower>=c and holding=0;
平多:=mid>=c and holding>0;
平空:=c>=mid and holding<0;


variable:MAXC=500000;//maxc是权益最大值
MAXC:=hhv(asset,180);//180个周期内权益最大值


if asset > MAXC then


MAXC:=asset;
 
if asset<maxc*0.9 and CASH(0)>maxc*0.8 THEN PosNum:=asset*0.03/600 ;//当平仓资金权益从最高点回撤大于10%小于20%,开仓比例为本金的3%/600元;
 if asset<maxc*0.8 and asset>maxc*0.7 THEN PosNum:=asset*0.015/600 ;//当平仓资金权益从最高点回撤大于20%小于30%,仓位使用为本金的1.5%/600元;
 if asset<maxc*0.7 and asset>maxc*0.6 THEN PosNum:=asset*0.0075/600 ;//当平仓资金权益从最高点回撤大于30%小于40%,仓位使用为本金的0.75%/600元;
 if asset>maxc*0.9 then  PosNum:=asset*0.03/600;//正常情况(平仓资金权益从最高点回撤小于10%),开仓比例为本金的3%/600元;
 
仓位:=PosNum;


//交易系统
buy(开多,仓位,MARKET);
buyshort(开空,仓位,MARKET);


sell(平多,0,MARKET);
sellshort(平空,0,MARKET);

 


盈亏:asset-500000,noaxis,colorred,linethick2;

 

 

 

后面的esle不当使用影响到了前面,所以我做了对应的修改