咨詢內(nèi)容:
您好!
我想實(shí)現(xiàn)在10分鐘K線圖表中實(shí)現(xiàn)如下功能:
1、當(dāng)上一根60分鐘K線滿足60分鐘開多條件后,在60分鐘結(jié)束后的第一根10分鐘K線結(jié)束后開多;
當(dāng)60分鐘觸發(fā)止損或者平多條件,則平多,同樣在滿足條件的60分鐘結(jié)束后的第一根10分鐘K線平多。
2、在60分鐘滿足持有多單的條件下,如果10分鐘滿足開空條件,則開空單。
在10分鐘滿足平空條件下,則平空(平空不需要60分鐘持有多單的條件限制
我回測(cè)過(guò)程中,在10分鐘圖表上滑動(dòng)鼠標(biāo),左上角顯示的多單和空單數(shù)量的變化,就是我想要實(shí)現(xiàn)的,時(shí)間節(jié)點(diǎn)也都正確,但是有一個(gè)問(wèn)題,測(cè)試報(bào)告中,只有多單開倉(cāng)和平倉(cāng)記錄,而沒有空單的開平倉(cāng)記錄,我找不到原因,請(qǐng)幫忙指點(diǎn)一下,萬(wàn)分謝謝!
下面是鼠標(biāo)在10分鐘K線移動(dòng)過(guò)程中,多單和空單實(shí)際變化情況,和我想要的一致,下圖截取的是2022-1-17日10:40分(開多)-2022-1-24日10:40分平多,這一段多單持有期間,多單空單數(shù)量變化情況。
圖片上面有標(biāo)注執(zhí)行的時(shí)間節(jié)點(diǎn),可能看不清楚,我列個(gè)表格如下:
但是,回測(cè)報(bào)告明細(xì)中,并沒有空單開平倉(cāng)記錄:
萬(wàn)分感謝!
我的代碼如下:
//////////////////////////////////////////////////////////////////////////////////////////
variable:B[1]:=(1);//1手多單
variable:S[1]:=(1);//1手空單
variable:ZSDS=50;//止損點(diǎn)數(shù)
variable:lotsB=0;//持有多單數(shù)量
variable:lotsS=0;//持有空單數(shù)量
60_l:=CALLSTOCK('',vtlow,5,-1);//60分鐘最低價(jià)
60_c:=CALLSTOCK('',vtclose,5,-1);//60分鐘收盤價(jià)
MA5_60:=Stkindiex('','MY_MA.MYMA5',0,5,-1,0),COLORGREEN,LINETHICK2; //60分鐘5均線
{MY_MA里面代碼:
MYMA5:=MA(C,5);
}
DIF60:=Stkindiex('','macd.diff(26,12,9)',0,5,-1,0),nodraw;
DEA60:=Stkindiex('','macd.dea(26,12,9)',0,5,-1,0),nodraw;
MACD60:=2*(DIF60-DEA60);
deathcross60:=CROSS(DEA60,DIF60);//60分鐘死叉
J60:=Stkindiex('','MYKDJ.J',0,5,-1,0),nodraw;//60分鐘J值
{MYKDJ里面代碼:
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
}
DRAWTEXT(CROSS(J60,0),60_l*0.998,'底'),COLORRED;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//開多單
CON_BUY1:=CROSS(J60,0);//60分鐘J值從0以下上穿
CON_BUY2:=MACD60>REF(MACD60,1);//60分鐘MACD柱體放大
CON_SELL1:=deathcross60;//60分鐘DIF和DEA死叉
KDuo:=CON_BUY1 AND CON_BUY2; //開多條件
PDuo:=CON_SELL1;//平多條件
//如果上面60分鐘持有多單,仍然滿足持有條件,那么10分鐘上面只要出現(xiàn)10分鐘收盤價(jià)格低于上一根60分鐘5均線值,并且10分鐘DIF和DEA死叉,則開對(duì)沖的1手空單。
DIF10:=Stkindiex('','macd.diff(26,12,9)',0,18,0,0),nodraw;
DEA10:=Stkindiex('','macd.dea(26,12,9)',0,18,0,0),nodraw;
J10:=Stkindiex('','MYKDJ.J',0,18,0,0),nodraw;
CON1:=DIF10<DEA10;//10分鐘DIF和DEA死叉
CONS:=DIF10>DEA10;//10分鐘DIF和DEA金叉
PKong:=CONS; //10分鐘平空條件
KKong:=CON1;// 10分鐘開空條件
////////////////////////////////////////////////////////////////////////////////////////////
IF lotsB>0 THEN begin
//如果持有多單過(guò)程中,如果此時(shí)滿足10分鐘開空條件,則在10分鐘K線開空單
IF KKONG and lotsS=0 THEN begin
開空:=BuySHORT(1,S[1],NEXTOPEN);
lotsS:=S[1];
end
//止損
IF ENTERPRICE-60_c>=ZSDS THEN
BEGIN
多損:SELL(1,B[1],MARKET),ORDERQUEUE;
lotsB:=0;
END
{平多單}
IF PDuo THEN BEGIN
平多:=Sell(1,B[1],NEXTOPEN);
lotsB:=0;
end
END
{開多單}
IF KDuo and lotsB=0 THEN begin
開多:=Buy(1,B[1],NEXTOPEN);
lotsB:=B[1];
end
///////////////////////////////////////////////////////////////////////////////////////////////
//平空單,不需要滿足60分鐘多單持有條件,只需要滿足10分鐘平空條件即可
IF PKong AND lotsS>0 THEN BEGIN
平空:=SellSHORT(1,S[1],NEXTOPEN);
lotsS:=0;
END
空單:lotsS,linethick0;
多單:lotsB,linethick0;
資產(chǎn):=asset-10000000,colorred,noaxis;
最大回撤:=MaxDrawDown,nodraw;
盈虧比:=資產(chǎn)/最大回撤,nodraw;
?
?來(lái)源: m.kzuj.com.cn
金字塔資深技術(shù):
圖表不支持鎖倉(cāng),有多單情況下是不能開空單
所以平倉(cāng)時(shí)候平holding全部平,試下
如果還沒有空單信號(hào)說(shuō)明就是空單條件不滿足,或者在開空條件滿足時(shí)候是有多單持倉(cāng)的
技術(shù)交流:
謝謝!