請問怎么解決反手不開倉的問題
作者:金字塔 來源:cxh99.com 發布時間:2014年02月15日
- 咨詢內容:
老師你好,下面是我的交易代碼示例,其中,平多條件(PD)想表達的意思是:如果開空條件已成立,即使持有多單也馬上平多開空(PK亦然),這時候系統就只有平倉,沒有開倉,請問是什么原因?
dif:=ema(c,12)-ema(c,26);dea:=ema(dif,9);macd:=2*(dif-dea);cpx:=ma(c,14);entertime:=time<150000 and time>091600;exittime:=time>=151400;
//交易條件kd:=cross(c,cpx) and cpx>ref(cpx,1) and macd>0 and entertime;//開多條件kk:=cross(cpx,c) and cpx<ref(cpx,1) and macd<0 and entertime;//開空條件pd:=(macd<0 and cpx<ref(cpx,1)) or kk or exittime;//平多條件(如果開空條件成立,即使持有多單,馬上平多開空)pk:=(macd>0 and cpx>ref(cpx,1)) or kd or exittime;//平空條件(如果開多條件成立,即使持有空單,馬上平空開多)
//交易系統 if holding<>0 then begin sell(pd,0,limit,c),orderqueue; sellshort(pk,0,limit,c),orderqueue;end
if holding=0 then begin buy(kd,1,limit,c),orderqueue; buyshort(kk,1,limit,c),orderqueue;end
- 金字塔客服:
if holding<>0 then begin
sell(pd,0,limit,c),orderqueue;
sellshort(pk,0,limit,c),orderqueue;
end
if holding=0 then begin
buy(kd,1,limit,c),orderqueue;
buyshort(kk,1,limit,c),orderqueue;
end
這樣的順序是不正確的,軟件的公式編輯界面有說明是如何寫的。而且,用戶是不是不明白ORDERQUEUE是用來干什么的?加上來是不是為了好看?
dif:=ema(c,12)-ema(c,26);
dea:=ema(dif,9);
macd:=2*(dif-dea);
cpx:=ma(c,14);
entertime:=time<150000 and time>091600;
exittime:=time>=151400;
kd:=cross(c,cpx) and cpx>ref(cpx,1) and macd>0 and entertime;//開多條件
kk:=cross(cpx,c) and cpx<ref(cpx,1) and macd<0 and entertime;//開空條件
pd:=(macd<0 and cpx<ref(cpx,1)) or exittime;//平多條件(如果開空條件成立,即使持有多單,馬上平多開空)
pk:=(macd>0 and cpx>ref(cpx,1)) or exittime;//平空條件(如果開多條件成立
if kd then begin
sellshort(1,0,thisclose);
buy(holding=0,1,thisclose);
end
if kk then begin
sell(1,0,thisclose);
buyshort(holding=0,1,thisclose);
end
if pd then sell(1,0,thisclose);
if pk then sellshort(1,0,thisclose);
- 用戶回復:
謝謝老師,我改過來了!如果我加上移動止贏的全局變量(YDZY),麻煩老師看一下下面的格式和邏輯對不對呢?
if ydzy=1 and holding<>0 then begin if h>highprice then highprice:=h; if (highprice-enterprice>=49 and highprice-h>=6) or (highprice-enterprice>=19 and h-enterprice<=17) then sell(1,0,limitr,c); if l<lowprice then lowprice:=l; if (enterprice-lowprice>=30 and l-lowprice>=16) or (enterprice-lowprice>=19 and enterprice-l<=13) then sellshort(1,0,limitr,c);end
- 網友回復:
謝謝老師,我改過來了,如果加上移動止贏變量,麻煩老師再看看下面的公式格式和邏輯對不對?謝謝!
variable:ydzy=1; //移動止盈開關variable:highprice=0,lowprice=0; //記錄開倉價
if kd then begin sellshort(1,0,limitr,c); buy(holding=0,1,limitr,c); highprice:=enterprice; end if kk then begin sell(1,0,limitr,c); buyshort(holding=0,1,limitr,c); lowprice:=enterprice;end if pd or enterprice-c>=10 then sell(1,0,limitr,c);if pk or c-enterprice>=10 then sellshort(1,0,limitr,c);
if ydzy=1 and holding<>0 then begin if h>highprice then highprice:=h; if (highprice-enterprice>=49 and highprice-h>=6) or (highprice-enterprice>=19 and h-enterprice<=17) then sell(1,0,limitr,c); if l<lowprice then lowprice:=l; if (enterprice-lowprice>=30 and l-lowprice>=16) or (enterprice-lowprice>=19 and enterprice-l<=13) then sellshort(1,0,limitr,c);end
- 網友回復:
現在是哪里不對的問題?