老师帮忙修改下程序! (文华财经WH6赢顺V6.7)

投资者咨询:老师帮忙修改下程序! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-8-30 17:41
 老师,我写了个带加仓的程序如下:

VAR1:=5;

HH1:HV(H,20);

LL1:LV(L,20);

HH2:HV(H,10);

LL2:LV(L,10);

TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));

ATR:=MA(TR,26);

ATR1:=REF(C,REFSIG_PLACE(BPK,1))-N2*REF(ATR,REFSIG_PLACE(BPK,1));

ATR2:=REF(C,REFSIG_PLACE(SPK,1))+N2*REF(ATR,REFSIG_PLACE(SPK,1));

AAA1:IF(BKVOL>0,ATR1,NULL),RGB(248,148,148);

AAA2:IF(SKVOL>0,ATR2,NULL),RGB(146,228,211);

BKVOL=0&&CROSSUP(C,HH1),BPK(VAR1);

CROSSDOWN(C,LL2)&&CROSSDOWN(C,LL1)=0,SP(BKVOL);

(C<ATR1)&&CROSSDOWN(C,LL1)=0,SP(BKVOL);

BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);

SKVOL=0&&CROSSDOWN(C,LL1),SPK(VAR1);

CROSSUP(C,HH2)&&CROSSUP(C,HH1)=0,BP(SKVOL);

(C>ATR2)&&CROSSUP(C,HH1)=0,BP(SKVOL);

SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);

TRADE_AGAIN(4);

CHECKSIG_MIN(BK,'A',0,'C',0);

CHECKSIG_MIN(SK,'A',0,'C',0);

 

现在我想把这个带加仓的程序修改成带分批减仓的程序,想法如下:

 

第一次平多时,收盘价<最后一的价格-次开多那根K线ATR减仓的手数为最后一次多的手数;第二次平多用收盘价<倒数第二次多的价格-次开多那根K线ATR减仓的手数为倒数第二次多的手数以此类推,平多用收盘价<倒数第三次多的价格-次开多那根K线ATR减仓的手数为倒数第三次多的手数,第平多用收盘价<倒数第四次多的价格-次开多那根K线ATR减仓的手数为倒数第四次多的手数,第平多用收盘价<首次开多的价格-次开多那根K线ATR减仓的手数为次开多的手数。

反之,平空也一样,第一次平空时,收盘价>最后一的价格+次开空那根K线ATR减仓的手数为最后一次空的手数;第二次平空用收盘价>倒数第二次空的价格+次开空那根K线ATR减仓的手数为倒数第二次空的手数;以此类推,平空用收盘价>倒数第三次空的价格+次开空那根K线ATR减仓的手数为倒数第三次空的手数;空用收盘价>倒数第四次空的价格+次开空那根K线ATR减仓的手数为倒数第四次空的手数;平空用收盘价>空的价格+开空那根K线ATR减仓的手数为空的手数。

备注:以上加仓次数是根据达到加仓条件进行加仓,最多加仓4次,但达不到条件时有可能4次以下,分批减仓时根据加仓次数对应相应的减仓次数

 

老师您能帮忙改下吗?

技术人员回复
日期:2018-8-30 19:17
 我们分析下,最晚明天下午给您回复
投资者咨询:老师帮忙修改下程序! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-8-30 17:41
 好的,麻烦您了!谢谢啦
技术人员回复
日期:2018-8-31 14:13
 VAR1:=5;
HH1:HV(H,20);
LL1:LV(L,20);
HH2:HV(H,10);
LL2:LV(L,10);
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,26);
ATR1:=REF(C,REFSIG_PLACE(BPK,1))-N2*REF(ATR,REFSIG_PLACE(BPK,1));
ATR2:=REF(C,REFSIG_PLACE(SPK,1))+N2*REF(ATR,REFSIG_PLACE(SPK,1));
AAA1:IF(BKVOL>0,ATR1,NULL),RGB(248,148,148);
AAA2:IF(SKVOL>0,ATR2,NULL),RGB(146,228,211);
BKVOL=0&&CROSSUP(C,HH1),BPK(VAR1);
C<REFSIG_PRICE(BK,1)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=0&&ENTRYSIG_PRICE(2)>0,SP(REFSIG_VOL(BK,1));
C<REFSIG_PRICE(BK,2)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=1&&ENTRYSIG_PRICE(3)>0,SP(REFSIG_VOL(BK,2));
C<REFSIG_PRICE(BK,3)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=2&&ENTRYSIG_PRICE(4)>0,SP(REFSIG_VOL(BK,3));
C<REFSIG_PRICE(BK,4)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=3&&ENTRYSIG_PRICE(5)>0,SP(REFSIG_VOL(BK,4));
C<ENTRYSIG_PRICE(1)-REF(ATR,ENTRYSIG_PLACE(1)),SP(BKVOL);
BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);
SKVOL=0&&CROSSDOWN(C,LL1),SPK(VAR1);
SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);
C>REFSIG_PRICE(SK,1)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=0&&ENTRYSIG_PRICE(2)>0,BP(REFSIG_VOL(SK,1));
C>REFSIG_PRICE(SK,2)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=1&&ENTRYSIG_PRICE(3)>0,BP(REFSIG_VOL(SK,2));
C>REFSIG_PRICE(SK,3)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=2&&ENTRYSIG_PRICE(4)>0,BP(REFSIG_VOL(SK,3));
C>REFSIG_PRICE(SK,4)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=3&&ENTRYSIG_PRICE(5)>0,BP(REFSIG_VOL(SK,4));
C>ENTRYSIG_PRICE(1)+REF(ATR,ENTRYSIG_PLACE(1)),BP(BKVOL);

TRADE_AGAIN(4);
CHECKSIG_MIN(BK,'A',0,'C',0);
CHECKSIG_MIN(SK,'A',0,'C',0);
投资者咨询:老师帮忙修改下程序! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-8-30 17:41
 谢谢,老师!您太棒了~图片点击可在新窗口打开查看
投资者咨询:老师帮忙修改下程序! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-8-30 17:41
 老师:您好!还得麻烦您帮着修改下!
    我刚刚加载了一下程序,发现如果一根大阴线击穿了前面所有止损条件(加多价格-首次开多的ATR),那么程序默认只平掉倒数第一根的仓位,但我希望它如果击穿了的所有止损条件,把手中的多单都平掉(如图所示),这个要怎么实现呢?还有图中的大阴线已经达到了反手的条件,但是没有反手,怎么样才能让它反手呢?

    辛苦

按此在新窗口浏览图片
文件名:论坛2018.8.31.png
老师了!
技术人员回复
日期:2018-8-31 20:04
 

 VAR1:=5;
HH1:HV(H,20);
LL1:LV(L,20);
HH2:HV(H,10);
LL2:LV(L,10);
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,26);
ATR1:=REF(C,REFSIG_PLACE(BPK,1))-N2*REF(ATR,REFSIG_PLACE(BPK,1));
ATR2:=REF(C,REFSIG_PLACE(SPK,1))+N2*REF(ATR,REFSIG_PLACE(SPK,1));
AAA1:IF(BKVOL>0,ATR1,NULL),RGB(248,148,148);
AAA2:IF(SKVOL>0,ATR2,NULL),RGB(146,228,211);
BKVOL=0&&CROSSUP(C,HH1),BPK(VAR1);
C<REFSIG_PRICE(BK,1)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=0&&ENTRYSIG_PRICE(2)>0,SP(REFSIG_VOL(BK,1));
C<REFSIG_PRICE(BK,2)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=1&&ENTRYSIG_PRICE(3)>0,SP(REFSIG_VOL(BK,2));
C<REFSIG_PRICE(BK,3)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=2&&ENTRYSIG_PRICE(4)>0,SP(REFSIG_VOL(BK,3));
C<REFSIG_PRICE(BK,4)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=3&&ENTRYSIG_PRICE(5)>0,SP(REFSIG_VOL(BK,4));
C<ENTRYSIG_PRICE(1)-REF(ATR,ENTRYSIG_PLACE(1)),SP(BKVOL);
BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);
BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);
BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);
BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);
SKVOL=0&&CROSSDOWN(C,LL1),SPK(VAR1);
SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);
SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);
SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);
SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);
C>REFSIG_PRICE(SK,1)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=0&&ENTRYSIG_PRICE(2)>0,BP(REFSIG_VOL(SK,1));
C>REFSIG_PRICE(SK,2)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=1&&ENTRYSIG_PRICE(3)>0,BP(REFSIG_VOL(SK,2));
C>REFSIG_PRICE(SK,3)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=2&&ENTRYSIG_PRICE(4)>0,BP(REFSIG_VOL(SK,3));
C>REFSIG_PRICE(SK,4)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=3&&ENTRYSIG_PRICE(5)>0,BP(REFSIG_VOL(SK,4));
C>ENTRYSIG_PRICE(1)+REF(ATR,ENTRYSIG_PLACE(1)),BP(BKVOL);


MULTSIG_MIN(0,0,10);
投资者咨询:老师帮忙修改下程序! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-8-30 17:41
 老师,您好!谢谢您的回答!但是与我想要的还是有些偏差!

偏差1:您这次修改把我首次开仓和平仓都改成突破价了,我想要的是首次开仓和平仓都只用收盘价,只有加仓时候才用突破价格的。

偏差2:您把我加仓指令改成每根K线上多指令了,我想要的是每根K线上加仓时候只有一个突破价格。

我主要是想要,如上面提问中的,当一根大阴线符合所有止损条件(每次加多价格-首次开多的ATR,这个条件止损),把手中的多单都平掉,并且同时符合反手条件了就实现反手。

麻烦您再帮我改下好么?
谢谢您了


技术人员回复
日期:2018-8-31 22:12
这么试试

VAR1:=5;
HH1:HV(H,20);
LL1:LV(L,20);
HH2:HV(H,10);
LL2:LV(L,10);
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,26);
ATR1:=REF(C,REFSIG_PLACE(BPK,1))-N2*REF(ATR,REFSIG_PLACE(BPK,1));
ATR2:=REF(C,REFSIG_PLACE(SPK,1))+N2*REF(ATR,REFSIG_PLACE(SPK,1));
AAA1:IF(BKVOL>0,ATR1,NULL),RGB(248,148,148);
AAA2:IF(SKVOL>0,ATR2,NULL),RGB(146,228,211);
BKVOL=0&&CROSSUP(C,HH1),BPK(VAR1);
C<REFSIG_PRICE(BK,1)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=0&&ENTRYSIG_PRICE(2)>0,SP(REFSIG_VOL(BK,1));
C<REFSIG_PRICE(BK,2)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=1&&ENTRYSIG_PRICE(3)>0,SP(REFSIG_VOL(BK,2));
C<REFSIG_PRICE(BK,3)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=2&&ENTRYSIG_PRICE(4)>0,SP(REFSIG_VOL(BK,3));
C<REFSIG_PRICE(BK,4)-REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(SP,ENTRYSIG_PLACE(1))=3&&ENTRYSIG_PRICE(5)>0,SP(REFSIG_VOL(BK,4));
C<ENTRYSIG_PRICE(1)-REF(ATR,ENTRYSIG_PLACE(1))&&BKVOL>0,CLOSEOUT;
BKVOL>0&&C>(BKPRICE+REF(ATR,REFSIG_PLACE(BPK,1))*0.5),BK(VAR1);
SKVOL=0&&CROSSDOWN(C,LL1),SPK(VAR1);
SKVOL>0&&C<(SKPRICE-REF(ATR,REFSIG_PLACE(SPK,1))*0.5),SK(VAR1);
C>REFSIG_PRICE(SK,1)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=0&&ENTRYSIG_PRICE(2)>0,BP(REFSIG_VOL(SK,1));
C>REFSIG_PRICE(SK,2)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=1&&ENTRYSIG_PRICE(3)>0,BP(REFSIG_VOL(SK,2));
C>REFSIG_PRICE(SK,3)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=2&&ENTRYSIG_PRICE(4)>0,BP(REFSIG_VOL(SK,3));
C>REFSIG_PRICE(SK,4)+REF(ATR,ENTRYSIG_PLACE(1))&&COUNTSIG(BP,ENTRYSIG_PLACE(1))=3&&ENTRYSIG_PRICE(5)>0,BP(REFSIG_VOL(SK,4));
C>ENTRYSIG_PRICE(1)+REF(ATR,ENTRYSIG_PLACE(1))&&SKVOL>0,CLOSEOUT;

TRADE_AGAIN(4);
CHECKSIG_MIN(BK,'A',0,'C',0);
CHECKSIG_MIN(SK,'A',0,'C',0);