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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 恳请老师帮忙修改为金字塔能用的策略

   

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


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

主题:恳请老师帮忙修改为金字塔能用的策略

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


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2021/3/24 10:28:49
恳请老师帮忙修改为金字塔能用的策略  发帖心情 Post By:2021/3/24 10:38:09    Post IP:123.53.43.7[只看该作者]

原来用的文华策略,感觉挺好用,现在改用金字塔,恳请老师帮忙修改为金字塔能用的策略,感谢!
WH8代码如下:


<PARAM>
[KPCL,0.000000,3333.000000,1.000000]
[YKJ,0.000000,9999.000000,600.000000]
[CK,0.000000,9999.000000,1.000000]

</PARAM>
<PARAMDEFAULTSET>
1
[333.000000,666.000000,333.000000,999.000000]
[600.000000,1000.000000,1000.000000,1000.000000]
[1.000000,1.000000,1.000000,1.000000]

</PARAMDEFAULTSET>
<CODE>

//请手动输入参数YKJ(0,9999,2000) KPCL(0,3333,1)//



A:=EMA(C,1);
B:=EMA(C,5);
NN:=BARSLAST(DATE<>REF(DATE,1))+1;
NR:=VALUEWHEN(NN,DATE);
SETEXPIREDATE('20181002');
RQ:=990806;
NXZ:=NR<(RQ);
DRAWTEXT(NR>=RQ && ISLASTBAR=1,H,'意'),COLORWHITE,FONTSIZE20;
BKN:=COUNTSIG(BK,50);
SKN:=COUNTSIG(SK,50);
M:=0.3;
M1:=0.3;
K1:=0.3;
K2:=0.3;
N:=BARSLAST(DATE<>REF(DATE,1))+1;
OO:=VALUEWHEN(DATE<>REF(DATE,1),O);
HH1:=REF(HHV(H,N*M),N);
LL1:=REF(LLV(L,N*M),N);
HC1:=REF(HHV(C,N*M),N);
LC1:=REF(LLV(C,N*M),N);
HH2:=REF(HHV(H,N*M1),N);
LL2:=REF(LLV(L,N*M1),N);
HC2:=REF(HHV(C,N*M1),N);
LC2:=REF(LLV(C,N*M1),N);
SELLR:=IFELSE((HH1-LC1)>=(HC1-LL1),HH1-LC1,HC1-LL1);
BUYR:=IFELSE((HH2-LC2)>=(HC2-LL2),HH2-LC2,HC2-LL2);
BT:=K1*BUYR;
ST:=K2*SELLR;
HH:=OO+BT;
LL:=OO-ST;
YK:=TPROFIT_REF(1)<YKJ*(KPCL*3) && TPROFIT_REF(2)<YKJ*(KPCL*3) && TPROFIT_REF(3)<YKJ*(KPCL*3);
VL:=IFELSE(TNUMSEQLOSS>=2,3*KPCL,IFELSE(TNUMSEQLOSS=1,KPCL*2,KPCL));
VOX:=IFELSE(YK,VL,KPCL);
BKVOL=0 && A>HH && NXZ && BKN=0 && A>B,BK(VOX);
BKVOL>0 && A<LL && A<BKHIGH*0.99 && A<BKPRICE,SP(BKVOL);
BKVOL>0 && A<HH && A<BKHIGH*0.98,SP(BKVOL);
SKVOL=0 && A<LL && NXZ && SKN=0 && A<B,SK(VOX);
SKVOL>0 && A>HH && A>SKLOW*1.01 && A>SKPRICE,BP(SKVOL);
SKVOL>0 && A>LL && A>SKLOW*1.02,BP(SKVOL);
SETALLSIGPRICETYPE(TRACING_ORDER);
SETMOVEOPIPRICE(TRACING_ORDER);
TRADE_OTHER('AUTO');
P1:IFELSE(A>BKPRICE,BKHIGH*0.98,BKHIGH*0.99),DOT,COLORRED;
P2:IFELSE(A<SKPRICE,SKLOW*1.02,SKLOW*1.01),DOT,COLORCYAN;

CLOSEKLINE(2,CK);
累积盈亏..MONEYREAL-INITMONEY,COLORYELLOW,BOLD;
//TRADE_OTHER('AUTO');//映射交易主力合约


</CODE>
<VERSION>
130112
</VERSION>
<EDITTIME>
2018年12月29日19:28:20
</EDITTIME>
<PROPERTY>
1
</PROPERTY>
 

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/24 11:15:38    Post IP:58.246.57.26[只看该作者]

 这部分什么意思:
<PARAMDEFAULTSET>
1
[333.000000,666.000000,333.000000,999.000000]
[600.000000,1000.000000,1000.000000,1000.000000]
[1.000000,1.000000,1.000000,1.000000]

</PARAMDEFAULTSET>
<CODE>

请提供下说明。

是参数吗?但是又没有参数名,不清楚什么意思。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
你幸福吗
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2021/3/24 10:28:49
  发帖心情 Post By:2021/3/24 11:45:00    Post IP:123.53.43.7[只看该作者]

这部分是参数,是<PARAM>
[KPCL,0.000000,3333.000000,1.000000]
[YKJ,0.000000,9999.000000,600.000000]
[CK,0.000000,9999.000000,1.000000]
的参数默认值,最大值,最小值


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/24 16:47:18    Post IP:58.246.57.26[只看该作者]

 其他软件的运行机制和具体函数实现都有很多差异性,这一点肯定存在,且我们也没办法去探究具体差异。另外还存在很多未知的细微差异,所以以下代码仅供参考。  通常我们是建议其他厂商转过来的客户将具体思路以文字方式描述后,再编写成代码。这种直接强行转换的,可能存在很多问题。


INPUT:KPCL(1,1,3333,1),YKJ(600,600,9999,1);

A:=EMA(C,1);
B:=EMA(C,5);
NN:=BARSLAST(DATE<>REF(DATE,1))+1;
NR:=VALUEWHEN(NN,DATE);
RQ:=990806;
//日期要在99年之前?? 原代码的思路似乎是判断日期要在99年周期,这里只能改下,否则出不了信号了。
NXZ:=NR>(RQ);
DRAWTEXT(NR>=RQ and  ISLASTBAR=1,H,'意'),COLORWHITE;
BKN:TYPEBAR(1,1)>50 or not(TYPEBAR(1,1));
SKN:=TYPEBAR(1,3)>50 or not(TYPEBAR(1,3));
M:=0.3;
M1:=0.3;
K1:=0.3;
K2:=0.3;
N:=BARSLAST(DATE<>REF(DATE,1))+1;
OO:=VALUEWHEN(DATE<>REF(DATE,1),O);
HH1:=REF(HHV(H,N*M),N);
LL1:=REF(LLV(L,N*M),N);
HC1:=REF(HHV(C,N*M),N);
LC1:=REF(LLV(C,N*M),N);
HH2:=REF(HHV(H,N*M1),N);
LL2:=REF(LLV(L,N*M1),N);
HC2:=REF(HHV(C,N*M1),N);
LC2:=REF(LLV(C,N*M1),N);
SELLR:=IFELSE((HH1-LC1)>=(HC1-LL1),HH1-LC1,HC1-LL1);
BUYR:=IFELSE((HH2-LC2)>=(HC2-LL2),HH2-LC2,HC2-LL2);
BT:=K1*BUYR;
ST:=K2*SELLR;
HH:=OO+BT;
LL:=OO-ST;
YK:=NUMPROFIT(1)<YKJ*(KPCL*3) and NUMPROFIT(2)<YKJ*(KPCL*3) and NUMPROFIT(3)<YKJ*(KPCL*3);
lkpd1:=NUMPROFIT(1)<0 and NUMPROFIT(2)<0;
lkpd2:=NUMPROFIT(1)<0 and NUMPROFIT(2)>=0;
VL:=IFELSE(lkpd1,3*KPCL,IFELSE(lkpd2,KPCL*2,KPCL));
VOX:=IFELSE(YK,VL,KPCL);
buy(A>HH and NXZ and BKN and A>B and holding=0,VOX,market);
BKHIGH:=hhv(h,ENTERBARS+1);
sell(A<LL and A<BKHIGH*0.99 and A<ENTERPRICE,holding,market);
sell(A<HH and A<BKHIGH*0.98,holding,market);
buyshort(A<LL and NXZ and SKN and A<B and holding=0,VOX,market);
SKLOW:=llv(l,ENTERBARS+1);
sellshort(A>HH and A>SKLOW*1.01 and A>ENTERPRICE,holding,market);
sellshort(A>LL and A>SKLOW*1.02,holding,market);

//以下函数无法实现。请使用软件自带的追撤单功能
//SETALLSIGPRICETYPE(TRACING_ORDER);
//SETMOVEOPIPRICE(TRACING_ORDER);

//以下函数无法实现,请使用交易时候的下单映射功能
//TRADE_OTHER('AUTO');

[此贴子已经被作者于2021/3/25 13:05:02编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
你幸福吗
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2021/3/24 10:28:49
  发帖心情 Post By:2021/3/25 11:43:49    Post IP:123.53.43.79[只看该作者]

感谢老师!您辛苦了,能不能在代码后面给我加上注释,有的代码看不懂,十分谢谢!

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/25 16:10:22    Post IP:58.246.57.26[只看该作者]

 哪一句不太懂?不妨单独指出来,全注释下不太现实,有些指标变量的计算 大概只有最初写这个的人才知道是用来干嘛的,因为这些纯指标代码 是个人思路。是个人交易观点的体现,其他人未必能解读。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
你幸福吗
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2021/3/24 10:28:49
  发帖心情 Post By:2021/3/25 16:23:47    Post IP:123.53.43.79[只看该作者]

这一段不是完全看得懂,希望老师能注释一下,谢谢啦!另外这个模型里是不是有偷价或者未来函数啊?

HH1:=REF(HHV(H,N*M),N);

LL1:=REF(LLV(L,N*M),N);
HC1:=REF(HHV(C,N*M),N);
LC1:=REF(LLV(C,N*M),N);
HH2:=REF(HHV(H,N*M1),N);
LL2:=REF(LLV(L,N*M1),N);
HC2:=REF(HHV(C,N*M1),N);
LC2:=REF(LLV(C,N*M1),N);
SELLR:=IFELSE((HH1-LC1)>=(HC1-LL1),HH1-LC1,HC1-LL1);
BUYR:=IFELSE((HH2-LC2)>=(HC2-LL2),HH2-LC2,HC2-LL2);
BT:=K1*BUYR;
ST:=K2*SELLR;
HH:=OO+BT;
LL:=OO-ST;
YK:=NUMPROFIT(1)<YKJ*(KPCL*3) and NUMPROFIT(2)<YKJ*(KPCL*3) and NUMPROFIT(3)<YKJ*(KPCL*3);
lkpd1:=NUMPROFIT(1)<0 and NUMPROFIT(2)<0;
lkpd2:=NUMPROFIT(1)<0 and NUMPROFIT(2)>=0;
VL:=IFELSE(lkpd1,3*KPCL,IFELSE(lkpd2,KPCL*2,KPCL));
VOX:=IFELSE(YK,VL,KPCL




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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/26 9:31:20    Post IP:58.246.57.26[只看该作者]

这部分代码也没啥好注释的啊。

HH1:=REF(HHV(H,N*M),N);//调用N周期前的  N*M周期的最高价 下面几个类似
LL1:=REF(LLV(L,N*M),N);
HC1:=REF(HHV(C,N*M),N);
LC1:=REF(LLV(C,N*M),N);
HH2:=REF(HHV(H,N*M1),N);
LL2:=REF(LLV(L,N*M1),N);
HC2:=REF(HHV(C,N*M1),N);
LC2:=REF(LLV(C,N*M1),N);
SELLR:=IFELSE((HH1-LC1)>=(HC1-LL1),HH1-LC1,HC1-LL1);
BUYR:=IFELSE((HH2-LC2)>=(HC2-LL2),HH2-LC2,HC2-LL2);
BT:=K1*BUYR;
ST:=K2*SELLR;
HH:=OO+BT;
LL:=OO-ST;
YK:=NUMPROFIT(1)<YKJ*(KPCL*3) and NUMPROFIT(2)<YKJ*(KPCL*3) and NUMPROFIT(3)<YKJ*(KPCL*3);//判断最近三次盈亏是否分别达到某个数值。NUMPROFIT(N)是表示最近N次交易的盈亏
lkpd1:=NUMPROFIT(1)<0 and NUMPROFIT(2)<0;//连亏2次
lkpd2:=NUMPROFIT(1)<0 and NUMPROFIT(2)>=0;//最近一次交易亏损,上上次是盈利




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
你幸福吗
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2021/3/24 10:28:49
  发帖心情 Post By:2021/4/9 7:28:58    Post IP:118.195.142.7[只看该作者]

老师好,请问这个开仓为什么不是固定的一手?有时候开1手,有时候开3三手。如何控制开仓手数?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/4/9 8:53:58    Post IP:58.246.57.26[只看该作者]

 他这个下单手数是指标计算出来的。并非固定手数。
你如果要固定手数:
VOX:=IFELSE(YK,VL,KPCL);

这里你就把vox改成固定数值就行了。


命数如织,当如磐石。
 回到顶部
总数 12 1 2 下一页