欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请求帮助改写

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有19424人关注过本帖树形打印复制链接

主题:请求帮助改写

帅哥哟,离线,有人找我吗?
心静
  41楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/7 16:38:48    Post IP:121.234.51.32[只看该作者]

老师,这样取值是对的, 在30那样的源码取值也是对的,关健我的思路是
                              收盘价上穿60均线立即平掉所有的空单持仓,并取得平空三个取值;  本次平仓盈亏值前一周期累计亏损本次平仓亏损累计值,将这三个值,进行组合后有三种条件AABB,CC,满足不同的条件,不同的手数再开多仓
                      当 收盘价下穿60均线立即平掉所有的多单持仓,并再次取得平多单的三个取值本次平仓盈亏值前一周期累计亏损本次平仓亏损累计值,将这三个值,进行组合后有三种条件AABB,CC,满足不同的条件,不同的手数再开空仓
   按照39楼这样取值,如何实施三个值进行组合,将三种条件AABB,CC,满足不同的条件,不同的手数再开多仓, 
    请老师写源码,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
心静
  42楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/7 16:55:11    Post IP:121.234.51.32[只看该作者]

老师
INPUT:m(60,5,100,1);
INPUT:ss(1,1,10,1);
MA1:MA(CLOSE,m);
variable:a1=0,a2=0,a3=0;
手数:=ss;
//交易条件
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件
if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr); 
在这里己经平掉空单,我要求能取到三个值;  本次平仓盈亏值前一周期累计亏损本次平仓亏损累计值,将这三个值,进行组合后有三种条件AABB,CC,满足不同的条件,不同的手数再开多仓
SS1://取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA 
BB:=//B1.B2.B3 组合等于BB         
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)))
这里DD就是开多仓的手数
BUY(holding=0,DD,MARKETr);这里手数应该用DD      
end
if 平多开空条件 then begin
SELL(1,holding,MARKETr);
在这里己经平掉多单,我要求能取到三个值;  本次平仓盈亏值前一周期累计亏损本次平仓亏损累计值,将这三个值,进行组合后有三种条件AABB,CC,满足不同的条件,不同的手数再开空仓,
SS1://取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA 
BB:=//B1.B2.B3 组合等于BB         
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)))
这里DD就是开空仓的手数
BUYSHORT(holding=0,DD,MARKETr);这里应该用DD为开仓手数,
end
if (平多开空条件 or 平空开多条件) and holding<>0 then 
begin
a1:=NUMPROFIT(1);         
a2:=a3;
end
a3:=if(a2+a1<0,a2+a1,0);  
b1:a1,NODRAW;
b2:a2,NODRAW;
b3:a3,NODRAW;

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  43楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/12/7 17:05:31    Post IP:58.246.57.26[只看该作者]

组合条件自己加下

INPUT:m(60,5,100,1);
INPUT:ss(1,1,10,1);
MA1:MA(CLOSE,m);
variable:a1=0,a2=0,a3=0;
variable:numbuy=1,numsell=1;
手数:=ss;
//交易条件
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件

if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr);
a1:=NUMPROFIT(1);        
a2:=a3;
SS1:=numsell;//取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA
BB:=//B1.B2.B3 组合等于BB        
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)));
BUY(holding=0,DD,MARKETr);这里手数应该用DD     
end


if 平多开空条件 then begin
SELL(1,holding,MARKETr);
a1:=NUMPROFIT(1);        
a2:=a3;
SS1:=numbuy;//取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA
BB:=//B1.B2.B3 组合等于BB        
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)))
BUYSHORT(holding=0,DD,MARKETr);这里应该用DD为开仓手数,
end

a3:=if(a2+a1<0,a2+a1,0); 
b1:a1,NODRAW;
b2:a2,NODRAW;
b3:a3,NODRAW;


 回到顶部
帅哥哟,离线,有人找我吗?
心静
  44楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/7 20:00:38    Post IP:121.234.51.32[只看该作者]

老师,平仓后必须分别要取得三个值才行,否则AA,BB,CC,岀现未定义的变量,而上楼取三个值在代码的最下面,无法使用,

INPUT:m(60,5,100,1);
INPUT:ss(1,1,10,1);
MA1:MA(CLOSE,m);
variable:a1=0,a2=0,a3=0;
variable:numbuy=1,numsell=1;
手数:=ss;
//交易条件
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件

if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr); 


a1:=NUMPROFIT(1);         
a2:=a3;

在这里己经平掉空单,我要求能取到三个值;  

B1:本次平仓盈亏值

B2:前一周期累计亏损

B3:本次平仓亏损累计值***************有这三个值才能得到下面的AA,BB,CC

SS1:=numsell;//取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA 
BB:=//B1.B2.B3 组合等于BB         
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)));
BUY(holding=0,DD,MARKETr);这里手数应该用DD      
end


if 平多开空条件 then begin
SELL(1,holding,MARKETr);
a1:=NUMPROFIT(1);         
a2:=a3;

在这里己经平掉空单,我要求能取到三个值;  

B1:本次平仓盈亏值

B2:前一周期累计亏损

B3:本次平仓亏损累计值***************有这三个值才能得到下面的AA,BB,CC

SS1:=numbuy;//取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA 
BB:=//B1.B2.B3 组合等于BB         
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)))
BUYSHORT(holding=0,DD,MARKETr);这里应该用DD为开仓手数,
end

a3:=if(a2+a1<0,a2+a1,0);  
b1:a1,NODRAW;
b2:a2,NODRAW;
b3:a3,NODRAW;


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  45楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/12/7 20:28:39    Post IP:116.216.0.51[只看该作者]

if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr);

a1:=NUMPROFIT(1);         
a2:=a3;          //a1和a2这边已经取到值了

end

a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值

 


 

if 平空开多条件 then  begin

B1:a1本次平仓盈亏值

B2:a2前一周期累计亏损

B3:a3本次平仓亏损累计值***************有这三个值才能得到下面的AA,BB,CC

SS1:=numsell;//取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA 
BB:=//B1.B2.B3 组合等于BB         
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)));
BUY(holding=0,DD,MARKETr);这里手数应该用DD      
end


 回到顶部
帅哥哟,离线,有人找我吗?
心静
  46楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/7 20:59:35    Post IP:121.234.51.32[只看该作者]

老师,我还是搞不懂,a3:=if(a2+a1<0,a2+a1,0);  a3取的数值你是放在源码最后面几行的,开多,开空,之前没有取到值,现在要放到那里,请帮忙详细一下,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  47楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/12/7 21:08:37    Post IP:116.216.0.51[只看该作者]

平仓的条件里面进行a1和a2的赋值,a1就是本次平常的盈亏,a3还没有赋值所以a2取得就是上一次a3的一个值。

然后给a3赋值。这样你三个值不就取到了,进入下面开仓的条件里面去。我上面例子不是写了吗?

 

if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr);

a1:=NUMPROFIT(1);         
a2:=a3;          //a1和a2这边已经取到值了

end

a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值

 

然后后面if 平空开多条件 then

begin

a1,a2,a3自己取值做判断就行了


 回到顶部
帅哥哟,离线,有人找我吗?
心静
  48楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/7 22:51:17    Post IP:121.234.51.32[只看该作者]

老师,现在取平仓前的手数都是1手,SS1:=numsell;//取得平空仓前的多仓持仓手数,这个取的值都是1,是什原因?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  49楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/12/7 22:56:40    Post IP:116.216.0.51[只看该作者]

if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr);

a1:=NUMPROFIT(1);         
a2:=a3;          //a1和a2这边已经取到值了

end

a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值

 


 

if 平空开多条件 then  begin

B1:a1本次平仓盈亏值

B2:a2前一周期累计亏损

B3:a3本次平仓亏损累计值***************有这三个值才能得到下面的AA,BB,CC

SS1:=numsell;//取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA 
BB:=//B1.B2.B3 组合等于BB         
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)));
BUY(holding=0,DD,MARKETr);

numbuy:=DD;                         //每次开仓后把对应得手数赋值给全局变量numbuy,另一个numsell同理     
end


 回到顶部
帅哥哟,离线,有人找我吗?
心静
  50楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/8 14:39:53    Post IP:180.126.189.224[只看该作者]

老师好,请帮助看一下,整个语句是否正确,现在大都数取值很正常,只发现有一处取前一周期累计亏损值出现误差,在前一个周期平多仓亏损累计值为-205,在下一周期取这个值时却是-370,前一周期累计亏损出现误差
INPUT:m(60,5,100,1);
INPUT:ss(1,1,10,1);
MA1:MA(CLOSE,m);
variable:a1=0,a2=0,a3=0;
variable:numbuy=1,numsell=1;
手数:=ss;
//交易条件
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件

if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr); 
a1:=NUMPROFIT(1);         
a2:=a3;
SS1:=numsell,NODRAW;//取得平空仓的持仓手数,
end        
a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值
if 平空开多条件 then  begin  
平空盈亏b1:a1,NODRAW;
平空前周期亏累计b2:a2,NODRAW;
平空亏损累计b3:a3,NODRAW;


BUY(holding=0,1,MARKETr);
numbuy:=1;
end

if 平多开空条件 then begin
SELL(1,holding,MARKETr);
a1:=NUMPROFIT(1);         
a2:=a3;
SS111:=numbuy,NODRAW;//取得平多仓的持仓手数,
end
a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值
if 平多开空条件 then  begin  
平多盈亏b11:a1,NODRAW;
平多前周期亏累计b22:a2,NODRAW,COLORWHITE;
平多亏损累计b33:a3,NODRAW;

BUYSHORT(holding=0,1,MARKETr);
numsell:=1;                         //每次开仓后把对应得手数赋值给全局变量numsell,
end


 回到顶部
总数 141 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..15