请教:麻烦您修改一下金字塔程序
CROSS(0,TMP1),LOW,BPK,TFILTER;//绿柱变红柱时,第一根红柱的收盘价提前3秒,先平空仓反手开多仓8手
CROSS(TMP1,0),HIGH,SPK,TFILTER;//红柱变绿柱时,第一根绿柱的收盘价提前3秒,先平多仓反手开空仓8手
L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};
H>OPEN+10,SP,ALLOWREPEAT;//{开多仓的价格,上涨10个点止盈,平多仓}
//麻烦老师修改:开仓8手,盈10个点止盈平仓2手,盈20个点再平2手,盈30个点再平2手,盈50个点反手2手
//最新价达到条件出信号1秒下单,允许同一根k线出现多个止盈信号,多次止盈,谢谢老师。
1.“绿柱变红柱时,第一根红柱的收盘价提前3秒” 红柱绿柱代码呢?贴下完整代码好吧。否则我写了也没法测试。
2.“最新价达到条件出信号1秒下单”什么叫出信号1秒下单?
HH:=HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,5)/120+HHV (HIGH,60)/5;
LL:=LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,5)/5+LLV(LOW,30)/5;
H1:= IF(H<REF(H,10)&&REF(H,20)<REF(H,2),REF(H,2),0);
L1:= IF(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,2),0);
H2:=VALUEWHEN(H1>0,H1);
L2:=VALUEWHEN(L1>0,L1);
K1:=IF(CLOSE>H2,-3,IF(CLOSE<L2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
GG:=IF(K2=1,H2,L2);
GG1:=VALUEWHEN(ISLASTBAR,GG);
TMP1:=K2;
W1:=K2;
W2:=OPEN-CLOSE;
HT:=IF(OPEN>CLOSE,OPEN,CLOSE);
LT:=IF(OPEN<CLOSE,OPEN,CLOSE);
KK:=BARSLAST(CROSS(TMP1,0));
DD:=BARSLAST(CROSS(0,TMP1));
STICKLINE(DD<KK,C,O,8,0),COLORRED;
STICKLINE(DD<KK,H,L,0,0),COLORRED;
STICKLINE(DD>KK,C,O,8,0),COLORGREEN;
STICKLINE(DD>KK,H,L,0,0),COLORGREEN;
CROSS(0,TMP1),LOW,BPK,TFILTER;//绿柱变红柱时,第一根红柱的收盘价提前3秒,先平空仓反手开多仓8手
CROSS(TMP1,0),HIGH,SPK,TFILTER;//红柱变绿柱时,第一根绿柱的收盘价提前3秒,先平多仓反手开空仓8手
L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};
H>OPEN+10,SP,ALLOWREPEAT;//{开多仓的价格,上涨10个点止盈,平多仓}
//麻烦老师修改:开仓8手,盈10个点止盈平仓2手,盈20个点再平2手,盈30个点再平2手,盈50个点反手2手
//最新价达到条件出信号1秒下单,允许同一根k线出现多个止盈信号,多次止盈,谢谢老师。
"
第一根红柱的收盘价提前3秒"这个解释下。是指K线走完之前提前3秒下单还是什么?
“ L<OPEN-10,BP,ALLOWREPEAT;//{开空仓的价格,下跌10个止盈,平空仓};”
这个代码字面逻辑是:最低价比开盘价低10个点就平空仓。你需要的是这个逻辑?还是需要单纯的10个点止盈。你这个代码和你文字描述的逻辑是冲突的 我不知道你到底需要哪个。
交易模式必须选择固定轮询,否则无法实现K线走完前3秒下单。这个提前3秒下单 在回测里面是体现不出来的,只有实际运行程序化才能看到效果。
HH:=HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,30)/5+HHV(HIGH,5)/120+HHV (HIGH,60)/5;
LL:=LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,20)/5+LLV(LOW,5)/5+LLV(LOW,30)/5;
H1:= IF(H<REF(H,10)&&REF(H,20)<REF(H,2),REF(H,2),0);
L1:= IF(L>REF(L,2)&&REF(L,1)>REF(L,2),REF(L,2),0);
H2:=VALUEWHEN(H1>0,H1);
L2:=VALUEWHEN(L1>0,L1);
K1:=IF(CLOSE>H2,-3,IF(CLOSE<L2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
GG:=IF(K2=1,H2,L2);
GG1:=VALUEWHEN(ISLASTBAR,GG);
TMP1:=K2;
W1:=K2;
W2:=OPEN-CLOSE;
HT:=IF(OPEN>CLOSE,OPEN,CLOSE);
LT:=IF(OPEN<CLOSE,OPEN,CLOSE);
KK:=BARSLAST(CROSS(TMP1,0));
DD:=BARSLAST(CROSS(0,TMP1));
STICKLINE(DD<KK,C,O,8,0),COLORRED;
STICKLINE(DD<KK,H,L,0,0),COLORRED;
STICKLINE(DD>KK,C,O,8,0),COLORGREEN;
STICKLINE(DD>KK,H,L,0,0),COLORGREEN;
ss:=8;//手数
jc:CROSS(0,TMP1);
sc:CROSS(TMP1,0);
abb:time0-timetot0(dynainfo(207));//K线结束倒计时间
timecd:(not(ISLASTBAR) or (ISLASTBAR and abb<=3));//最新K结束前3秒或当时是历史K
if jc and timecd then
begin
sellshort(holding<0,holding,market);
buy(holding=0,ss,market);
end
if sc and timecd then
begin
sell(holding>0,holding,market);
buyshort(holding=0,ss,market);
end
if c-AVGENTERPRICE>=10*MINDIFF then sell(1,holding,market);//10个点止盈
if AVGENTERPRICE-c>=10*MINDIFF then sellshort(1,holding,market);
老师您好,刚才测试了程序运行,持仓达到止盈条件不能及时止盈平仓,有时盈利的单到信号反转平仓,变成亏损单。
请重新修改 红色k线变绿色k线时,先平多仓,再开空仓,走完k线下单,开盘价下单8手
/////////////绿色k线变红色k线时,先平空仓,再开多仓,走完k线下单,开盘价下单8手
////////////开多仓或者空仓,如果持仓的价格盈利10个点的时候,先止盈立刻平2手,如果再盈10个点,再止盈平仓2手,如果再盈利15个点,再止盈平仓2手,
////////////如果再盈20个点,反手2手。,这些思路就类似波段止盈与趋势止盈。如果达不到平仓条件,信号反转走完k线时,平所有剩下的个别持仓或者所有持仓
/////这些开平仓条件,金字塔程序都能够实现
,就是不知道怎样截图上传上来