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


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

   

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


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

主题:请求帮助改写

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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
请求帮助改写  发帖心情 Post By:2015/11/29 20:31:12    Post IP:180.126.3.69[显示全部帖子]

老师好请求帮助将文华源码改写成金字塔源码

N4:=SUMBARS(COUNTSIG(BK,1),1),NODRAW;
N5:=SUMBARS(COUNTSIG(SK,1),1),NODRAW;
N1:=IF(COUNTSIG(BK,0)=0,N5,N4),NODRAW;
N2:=IF(COUNTSIG(SK,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:MONEYTOT-REF(MONEYTOT,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNTSIG(SP,0)+COUNTSIG(BP,0)=0,0,LOOP2(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/11/29 21:43:45    Post IP:180.126.3.69[显示全部帖子]

老师这是平仓后开仓前立即取出三个值,

一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0,

二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,这个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。

三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/11/30 16:02:53    Post IP:180.126.3.69[显示全部帖子]

老师,我将cci交易系统代入测试一下,通不过,不知是什么原,

TYP := (HIGH + LOW + CLOSE)/3;
CCI:=(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M));

手数:=ss;
//交易条件
开多平空条件:=CROSS(CCI,100);//开多平空条件
开空平多条件:=CROSS(100,cci);//开空平多条件

//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);

开多条件:=CROSS(CCI,100);//开多条件
开空条件:=CROSS(100,cci);//开空条件
平空条件:=CROSS(CCI,100);//平空条件
平多条件:=CROSS(100,cci);//平多条件
N4:=SUMBARS(COUNT(开多条件,1),1),NODRAW;
N5:=SUMBARS(COUNT(开空条件,1),1),NODRAW;
N1:=IF(COUNT(开多条件,0)=0,N5,N4),NODRAW;
N2:=IF(COUNT(开空条件,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:asset-REF(asset,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNT(平多条件,0)+COUNT(平空条件,0)=0,0,if(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/11/30 17:21:59    Post IP:180.126.3.69[显示全部帖子]

INPUT:m(14,5,32,1);
INPUT:ss(1,1,10,1);

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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/11/30 17:24:12    Post IP:180.126.3.69[显示全部帖子]

定义好,还是通不过

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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/1 20:13:32    Post IP:221.231.89.90[显示全部帖子]

老师,你在回答问题试不试呀,还是通不过,

INPUT:m(14,5,32,1);
INPUT:ss(1,1,10,1);
TYP := (HIGH + LOW + CLOSE)/3;
CCI:=(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M));

手数:=ss;
//交易条件
开多平空条件:=CROSS(CCI,100);//开多平空条件
开空平多条件:=CROSS(100,cci);//开空平多条件

//交易系统
初始资金:=1000000;

if CROSS(CCI,100) then

begin

平空:SELLSHORT(开多平空条件,手数,MARKET);

平仓盈亏值:=NUMPROFIT(1);

前一周期亏损累计值:=if(平仓盈亏值<0,ref(asset-初始资金,1),0);

本次累计亏损值:=if(前一周期亏损累计值+平仓盈亏值<0,前一周期亏损累计值+平仓盈亏值,0);

end
if CROSS(100,cci) then

begin

平多:SELL(开空平多条件,手数,MARKET);

平仓盈亏值:=NUMPROFIT(1);

前一周期亏损累计值:=if(平仓盈亏值<0,ref(asset-初始资金,1),0);

本次累计亏损值:=if(前一周期亏损累计值+平仓盈亏值<0,前一周期亏损累计值+平仓盈亏值,0);

end
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/1 23:06:44    Post IP:221.231.89.90[显示全部帖子]

老师,二三取值不对,要求取亏损值,

一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0,

二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。

----------------前一周期亏损的累计值,盈利取值为0,只有亏时才能取值,

三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。-----------------相加亏损才取值



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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/2 10:09:45    Post IP:221.231.89.90[显示全部帖子]

老师,

a2:=if(ref(asset-初始资金,1)<0,ref(asset-初始资金,1),0);                             
a3:=if(ref(asset-初始资金,1)+a1<0,ref(asset-初始资金,1)+a1,0);

用当前资产-初始资金,这样取值是错误的,

当做单发生亏损时才取值,当下一单盈利大于前一单亏损肘取值为0,如一下单再次亏损就亏损相加,当下一单有盈利大于亏损时又取值为0,下一单又重新取值,亏取值,盈及保本取0,

老师你可将1楼文华源码加到文华软件中看一下三个取值,


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/2 14:22:31    Post IP:221.231.89.90[显示全部帖子]

第一单盈利1000元

第二单亏损500元

那么,第二单平仓后取三个值为,

平仓盈亏值:=-500元;
前一周期亏损累计值:=0;   前一周期为盈利1000元,取值为0
本次累计亏损值:=-500元;   本次亏损累计为,前一周期取值0+本次亏损500,取值为负500,

 如果用,当前资产-初始资产,那么当前资产应为初始资金10000+第一单盈利1000-第二单亏500-初始资金10000,取的得为正500,我要求亏损才取值,盈利取0值,


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/2 21:41:17    Post IP:121.234.52.103[显示全部帖子]

老师,你还是理解错了,不是本次亏损时才取前一周期的累计亏损值,a2:=if(a1<0,ref(num,1),0);            //当本次亏损时,取前一周期的累计亏损值,否者取0  
                           而是本次平仓无论盈亏,都取前一周的累计亏损值,
我用做单形式进一步来说明取值,首先声明做第一单时,无前一周期的盈亏值,声明初始前一周期的累计亏损值=0,
第一单平仓   盈利1000        第一取值平仓盈亏值,  +1000,       第二取值前一周期亏损累计值,  0 ,(因第一单,无前一周期,声明初始前一周期累计亏损值为0),       第三取值本次累计亏损值,  0,(本次平仓盈利1000+前一周期亏损累计值0,因盈利1000,则取值为0)。
第二单平仓   亏损-500        第一取值平仓盈亏值,  -500,          第二取值前一周期亏损累计值,  0 ,(因前一单累计亏损值为0,因前一周期盈利而取值为0),              第三取值本次累计亏损值,-500,(本次平仓亏-500+前一周期亏损累计值0,则取值亏损累计为-500)。
第三单平仓   亏损-300        第一取值平仓盈亏值,  -300,          第二取值前一周期亏损累计值,-500,(因前一单累计亏损值为-500),                                          第三取值本次累计亏损值,-800,(本次平仓亏-300+前一周期亏损累计值-500,则累计亏损值-800)。
第四单平仓   亏损-600        第一取值平仓盈亏值,  -600,          第二取值前一周期亏损累计值,-800 ,(因前一单累计亏损值为-800),                                         第三取值本次累计亏损值,-1400,(本次平仓亏-600+前一周期亏损累计值-800,则累计亏损值-1400)。
第五单平仓   亏损-200        第一取值平仓盈亏值,  -200,          第二取值前一周期亏损累计值,-1400 ,(因前一单累计亏损值为-1400),                                      第三取值本次累计亏损值,-1600,(本次平仓亏-200+前一周期亏损累计值-1400,则累计亏损值-1600)。  
第六单平仓   盈利800        第一取值平仓盈亏值, +800,            第二取值前一周期亏损累计值,-1600 ,(因前一单累计亏损值为-1600),                                      第三取值本次累计亏损值,-800,(本次平仓盈利800+前一周期亏损累计值-1600,则累计亏损值-800)。 
第七单平仓   亏损-100        第一取值平仓盈亏值, -100,            第二取值前一周期亏损累计值,-800 ,(因前一单累计亏损值为-800),                                        第三取值本次累计亏损值,-900,(本次平仓亏-100+前一周期亏损累计值-800,则累计亏损值-900)。  
第八单平仓   保本 0           第一取值平仓盈亏值, 0,                  第二取值前一周期亏损累计值,-900 ,(因前一单累计亏损值为-900),                                        第三取值本次累计亏损值,-900,(本次平仓无盈亏0+前一周期亏损累计值-900,则累计亏损值-900)。 
第九单平仓   盈利1200      第一取值平仓盈亏值, +1200,          第二取值前一周期亏损累计值,-900 ,(因前一单累计亏损值为-900),                                        第三取值本次累计亏损值,0,(本次平仓盈利1200+前一周期亏损累计值-900,因盈利取值为0)。 
第十单平仓   盈利100       第一取值平仓盈亏值, +100,             第二取值前一周期亏损累计值,0 ,(因前一单累计盈利而取值为0),                                             第三取值本次累计亏损值,0,(本次平仓盈利100+前一周期亏损累计值0,因盈利取值为0)。                
第十一单平仓 亏损-200       第一取值平仓盈亏值, -200,             第二取值前一周期亏损累计值,0 ,(因前一单累计盈利而取值为0),                                             第三取值本次累计亏损值,-200,(本次平仓亏-200+前一周期亏损累计值0,则累计亏损取值为-200)。  

      平仓后就这样取三个值                
    

 回到顶部
总数 29 1 2 3 下一页