下面的策略如何實(shí)現(xiàn),煩請Alex回復(fù),謝謝 [MC]
-
MC用戶求助:
我希望在開倉價(jià)格開倉之后,假設(shè)價(jià)格為2000,朝著開倉方向,每隔60點(diǎn)就記錄一次,假設(shè)做多,漲了180點(diǎn),就是3,240點(diǎn)就是4,做空,跌180,就是3,跌240點(diǎn)就是4,這個(gè)該如何寫,謝謝
?
-
MC回復(fù)討論一:
以雙均線策略為例,您的策略代碼如下:
inputs: Price( Close ), FastLength( 9 ), SlowLength( 18 ) ;
variables: var0( 0 ), var1( 0 ) ;
variables: recalcpersist flag(0), recalcpersist valueh(0), recalcpersist valuel(0);
{這里新建了三個(gè)變量,使用了recalcpersist聲明,也就是這3個(gè)變量每次計(jì)算的值都會(huì)被保存;若沒有加這個(gè)關(guān)鍵字的聲明,那么這3個(gè)變量的計(jì)算值只會(huì)在當(dāng)根bar收盤時(shí)的計(jì)算值才會(huì)被保存}
once begin
flag=0;
valueh=0;
valuel=0;
end;
recalclastbarafter(10);
{這里使用了關(guān)鍵字recalclastbarafter,當(dāng)信號當(dāng)前的時(shí)間超過信號最近一次計(jì)算的時(shí)間10秒時(shí),信號執(zhí)行重新計(jì)算一次,這種計(jì)算可以取關(guān)鍵字的值及函數(shù)的計(jì)算,但是不能執(zhí)行委托單的操作,也就是即使條件滿足也不能發(fā)送委托單;只能等到當(dāng)根bar收盤時(shí)時(shí)條件滿足才會(huì)執(zhí)行委托單的操作}
condition1=getappinfo(aicalcreason)=3;
{信號的計(jì)算方式有很多,condition1為true表示當(dāng)前的計(jì)算是基于recalclastbarafter的計(jì)算}
if condition1=false then begin
var0 = AverageFC( Price, FastLength ) ;
var1 = AverageFC( Price, SlowLength ) ;
condition2 = CurrentBar > 1 and var0 crosses above var1 ;
if condition2 then? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Buy ( "MA2CrossLE" ) next bar at market ;
condition2 = CurrentBar > 1 and var0 crosses under var1 ;
if condition2 then? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Sell Short ( "MA2CrossSE" ) next bar at market ;
end;
{以上基于condition1=false的代碼段,您可以將主要的代碼放在這里面,這段代碼會(huì)基于當(dāng)根bar收盤時(shí)進(jìn)行計(jì)算,這樣可以減少信號不必要的計(jì)算量}
if marketposition=0 then begin
flag=0;
valueh=0;
valuel=0;
end
else
if marketposition=1 then begin
valuel=0;
if high>valueh then
valueh=high;
if valueh<>entryprice then
flag=intportion((valueh-entryprice)/60);
{當(dāng)多頭進(jìn)場之后,利用變量valueh始終保存進(jìn)場之后的最高價(jià),然后flag的計(jì)算等于(valueh與進(jìn)場價(jià)的差)/60;當(dāng)然您也可以直接使用每次計(jì)算時(shí)的最新價(jià)賦值給valueh,這個(gè)地方需要看您的策略了}
end
else if marketposition=-1 then begin
valueh=0;
if low<valuel then
valuel=low;
if valuel<>entryprice then
flag=intportion((entryprice-valuel)/60);
end;
注意事項(xiàng):
1.您的策略可以在非bar內(nèi)模式下,但是可能會(huì)計(jì)算不會(huì)及時(shí)
2.您的策略可以使用兩個(gè)信號,一個(gè)信號用于發(fā)送委托單(非bar內(nèi)),另一個(gè)信號用于計(jì)算flag變量(開bar內(nèi))
3.通過以上的方式,您可以在非bar內(nèi)模式下及時(shí)進(jìn)行計(jì)算flag,也就是及時(shí)進(jìn)行記錄盈利的點(diǎn)數(shù)。?
-
MC回復(fù)討論二:
牛的,不過信息量有點(diǎn)大,我最后其實(shí)只需要用到flag里的值,我對第一部分不是很理解,容我細(xì)細(xì)學(xué)習(xí)之后再向您請教
?
-
MC回復(fù)討論三:
?
-
MC回復(fù)討論四:
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容