如何實(shí)現(xiàn)由最近的連續(xù)虧損次數(shù)決定下一次開(kāi)倉(cāng)手?jǐn)?shù)? [MC]
-
MC用戶(hù)求助:
inputs: Price( close ), FastLength( 9 ), SlowLength( 18 ), MAX_shares(5);
variables: var0( 0 ), var1( 0 ), var2(" "), lots(1);
{max_shares作為初始的輸入?yún)?shù),表示最大手?jǐn)?shù);lots是變量,表示下單的手?jǐn)?shù)}
var0 = AverageFC( Price, FastLength ) ;??
var1 = AverageFC( Price, SlowLength ) ;
{var0和var1分別表示快速均線(xiàn)和慢速均線(xiàn),針對(duì)您的想法,我通過(guò)在最簡(jiǎn)單的均線(xiàn)策略中具體化您的想法}
condition1 = CurrentBar > 1 and var0 crosses over var1 ;
if condition1 then begin
? ? ? ? if marketposition=0 or (marketposition=-1 and openpositionprofit>0) then begin
{conditio1成立表示金叉出現(xiàn);lots為1的情況只有兩種情況,一種是第一次下單時(shí)(通過(guò)marketposition=0來(lái)表示;第二種是未平倉(cāng)收益是正的時(shí)候,由于不允許加倉(cāng),所以使用了marketposition=-1的情況,同時(shí)使用openpositionprofit來(lái)判斷是否盈利}?
? ? ? ? ? ? ? ? lots=1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
? ? ? ? ? ? ? ? Buy ( "MA2CrossLE" ) lots shares next bar at market ;
? ? ? ? end
? ? ? ? else if marketposition=-1 and openpositionprofit<=0 then begin
{若即不是第一次下單,又不是盈利狀態(tài)時(shí),此時(shí)通過(guò)marketposition=-1 and openpositionprofit<=0來(lái)判斷,表示虧損,此時(shí)會(huì)執(zhí)行下面的語(yǔ)句,也就是取 lots+1和max_shares的最小值賦值給lots,然后下單lots手}
? ? ? ? ? ? ? ? lots=minlist(lots+1,max_shares);
? ? ? ? ? ? ? ? Buy ( "MA2CrossLE1" ) lots shares next bar at market ;
? ? ? ? end;
end;
{以上部位是金叉出現(xiàn)的情況,下面的部位是死叉出現(xiàn)的情況,邏輯類(lèi)似}
condition1 = CurrentBar > 1 and var0 crosses under var1 ;
if condition1 then begin
? ? ? ? if marketposition=0 or (marketposition=1 and openpositionprofit>0) then begin
? ? ? ? ? ? ? ???lots=1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
? ? ? ? ? ? ? ? Sell Short ( "MA2CrossSE" ) lots shares next bar at market;
? ? ? ? end
? ? ? ? else if marketposition=1 and openpositionprofit<0 then begin
? ? ? ? ? ? ? ? lots=minlist(lots+1,max_shares);
? ? ? ? ? ? ? ? Sell Short ( "MA2CrossSE1" ) lots shares next bar at market;
? ? ? ? end;
end;
注意事項(xiàng):
一、整個(gè)策略都是使用平倉(cāng)反向語(yǔ)句,所以下單的手?jǐn)?shù)在下單之前就需要確定,如果先平倉(cāng)再開(kāi)倉(cāng),這樣會(huì)有一定的延遲。
二、使用的是市價(jià)單來(lái)下單,會(huì)立即以對(duì)手價(jià)成交,不過(guò)這樣會(huì)和下單判斷語(yǔ)句中openpositionprofit的值有一定的誤差,因?yàn)橐粋€(gè)是市價(jià)之間的盈虧值,另一個(gè)是市價(jià)成交之后的盈虧值;如果需要更準(zhǔn)確的是,那么需要將平倉(cāng)和開(kāi)倉(cāng)分開(kāi)來(lái)寫(xiě)。
三、這里使用的是市價(jià)單委托,如果需要使用條件單,因?yàn)闂l件單不一定會(huì)成交,而且成交的時(shí)間也不確定,所以條件單和盈虧判斷一起使用的話(huà),需要將平倉(cāng)和開(kāi)倉(cāng)分開(kāi)來(lái)執(zhí)行,而且也會(huì)稍微復(fù)雜一些。?
-
MC回復(fù)討論一:
inputs: Price( close ), FastLength( 9 ), SlowLength( 18 ), MAX_shares(5);
variables: var0( 0 ), var1( 0 ), var2(" "), lots(1);
{max_shares作為初始的輸入?yún)?shù),表示最大手?jǐn)?shù);lots是變量,表示下單的手?jǐn)?shù)}
var0 = AverageFC( Price, FastLength ) ;??
var1 = AverageFC( Price, SlowLength ) ;
{var0和var1分別表示快速均線(xiàn)和慢速均線(xiàn),針對(duì)您的想法,我通過(guò)在最簡(jiǎn)單的均線(xiàn)策略中具體化您的想法}
condition1 = CurrentBar > 1 and var0 crosses over var1 ;
if condition1 then begin
? ? ? ? if marketposition=0 or (marketposition=-1 and openpositionprofit>0) then begin
{conditio1成立表示金叉出現(xiàn);lots為1的情況只有兩種情況,一種是第一次下單時(shí)(通過(guò)marketposition=0來(lái)表示;第二種是未平倉(cāng)收益是正的時(shí)候,由于不允許加倉(cāng),所以使用了marketposition=-1的情況,同時(shí)使用openpositionprofit來(lái)判斷是否盈利}?
? ? ? ? ? ? ? ? lots=1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
? ? ? ? ? ? ? ? Buy ( "MA2CrossLE" ) lots shares next bar at market ;
? ? ? ? end
? ? ? ? else if marketposition=-1 and openpositionprofit<=0 then begin
{若即不是第一次下單,又不是盈利狀態(tài)時(shí),此時(shí)通過(guò)marketposition=-1 and openpositionprofit<=0來(lái)判斷,表示虧損,此時(shí)會(huì)執(zhí)行下面的語(yǔ)句,也就是取 lots+1和max_shares的最小值賦值給lots,然后下單lots手}
? ? ? ? ? ? ? ? lots=minlist(lots+1,max_shares);
? ? ? ? ? ? ? ? Buy ( "MA2CrossLE1" ) lots shares next bar at market ;
? ? ? ? end;
end;
{以上部位是金叉出現(xiàn)的情況,下面的部位是死叉出現(xiàn)的情況,邏輯類(lèi)似}
condition1 = CurrentBar > 1 and var0 crosses under var1 ;
if condition1 then begin
? ? ? ? if marketposition=0 or (marketposition=1 and openpositionprofit>0) then begin
? ? ? ? ? ? ? ???lots=1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
? ? ? ? ? ? ? ? Sell Short ( "MA2CrossSE" ) lots shares next bar at market;
? ? ? ? end
? ? ? ? else if marketposition=1 and openpositionprofit<0 then begin
? ? ? ? ? ? ? ? lots=minlist(lots+1,max_shares);
? ? ? ? ? ? ? ? Sell Short ( "MA2CrossSE1" ) lots shares next bar at market;
? ? ? ? end;
end;
注意事項(xiàng):
一、整個(gè)策略都是使用平倉(cāng)反向語(yǔ)句,所以下單的手?jǐn)?shù)在下單之前就需要確定,如果先平倉(cāng)再開(kāi)倉(cāng),這樣會(huì)有一定的延遲。
二、使用的是市價(jià)單來(lái)下單,會(huì)立即以對(duì)手價(jià)成交,不過(guò)這樣會(huì)和下單判斷語(yǔ)句中openpositionprofit的值有一定的誤差,因?yàn)橐粋€(gè)是市價(jià)之間的盈虧值,另一個(gè)是市價(jià)成交之后的盈虧值;如果需要更準(zhǔn)確的是,那么需要將平倉(cāng)和開(kāi)倉(cāng)分開(kāi)來(lái)寫(xiě)。
三、這里使用的是市價(jià)單委托,如果需要使用條件單,因?yàn)闂l件單不一定會(huì)成交,而且成交的時(shí)間也不確定,所以條件單和盈虧判斷一起使用的話(huà),需要將平倉(cāng)和開(kāi)倉(cāng)分開(kāi)來(lái)執(zhí)行,而且也會(huì)稍微復(fù)雜一些。
有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫(xiě)!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容