連續(xù)滿足如何編寫 [MC]
-
MC用戶求助:
不知道您這里是要求close>lowest(L,10) 連續(xù)滿足十根bar還是十天,那這兩種情況下面都會(huì)給出相應(yīng)的代碼:
一、連續(xù)滿足十根bar,countif(close>lowest(L,10),10)=10即可,因?yàn)閏ountif(test,length)統(tǒng)計(jì)的是最近length根bar(包括當(dāng)根bar)上test成立的次數(shù),若結(jié)果是length次就表明連續(xù)length根bar都滿足條件。
二、連續(xù)滿足十天,這個(gè)有點(diǎn)麻煩,需要使用數(shù)組、關(guān)于每天的開始時(shí)間和結(jié)束時(shí)間的初始參數(shù)。
input: starttime(2100), endtime(1500);
{一天的開始時(shí)間starttime和一天的結(jié)束時(shí)間endtime}
var: flag(-1), var_true(true);
{flag用于統(tǒng)計(jì)天數(shù),var_true變量用于判斷當(dāng)天close>lowest(low,10)是否連續(xù)成立,默認(rèn)是true}
array: arr0[9](false);
if time=starttime then begin
? ? ? ? var_true=true;
? ? ? ? flag=flag+1;
end;
{每天的開始時(shí)間點(diǎn),變量設(shè)定,將flag累加1,將var_true賦值為true,因?yàn)樵谙旅嬷慌袛酁閒alse的情況}
if flag<>-1 and var_true=true and close<=lowest(low,10) then
? ? ? ? var_true=false;
{判斷當(dāng)天是否有不連續(xù)的情況,若有則賦值var_true為false,當(dāng)天的剩余時(shí)間將不再判斷}
if time=endtime and flag<>-1 then
? ? ? ? arr0[mod(flag,10)]=var_true;
{每天的結(jié)束時(shí)間點(diǎn),將var_true賦值存儲(chǔ)到數(shù)組中,通過mod求余運(yùn)算,使數(shù)組中存儲(chǔ)的是始終是最近10天是否連續(xù)的情況}
if flag>9 then
? ? ? ? condition1=not array_contains(arr0,false);
{當(dāng)flag>9說明數(shù)組中已經(jīng)存儲(chǔ)了最近10天是否連續(xù)的情況,若數(shù)組中沒有false,則說明連續(xù)10天close>lowest(low,10)成立,此時(shí)condition1為true;否則condition1為false}
注意事項(xiàng):對(duì)于短周期,比如1分鐘甚至更小,或者對(duì)于交易量比較小的商品合約,有可能開始時(shí)間或者結(jié)束時(shí)間點(diǎn)沒有K線,那么這個(gè)算法就會(huì)出現(xiàn)問題;所以這里只是給出一個(gè)模板,關(guān)于時(shí)間的界定,您可能需要貼出您的具體情境,然后特別定制代碼界定時(shí)間。
此外,更簡單的辦法是,通過插入日線周期的子圖,然后聲明一個(gè)基于子圖的變量,通過這個(gè)變量來保存當(dāng)天是否連續(xù)。?
-
MC回復(fù)討論一:
不知道您這里是要求close>lowest(L,10) 連續(xù)滿足十根bar還是十天,那這兩種情況下面都會(huì)給出相應(yīng)的代碼:
一、連續(xù)滿足十根bar,countif(close>lowest(L,10),10)=10即可,因?yàn)閏ountif(test,length)統(tǒng)計(jì)的是最近length根bar(包括當(dāng)根bar)上test成立的次數(shù),若結(jié)果是length次就表明連續(xù)length根bar都滿足條件。
二、連續(xù)滿足十天,這個(gè)有點(diǎn)麻煩,需要使用數(shù)組、關(guān)于每天的開始時(shí)間和結(jié)束時(shí)間的初始參數(shù)。
input: starttime(2100), endtime(1500);
{一天的開始時(shí)間starttime和一天的結(jié)束時(shí)間endtime}
var: flag(-1), var_true(true);
{flag用于統(tǒng)計(jì)天數(shù),var_true變量用于判斷當(dāng)天close>lowest(low,10)是否連續(xù)成立,默認(rèn)是true}
array: arr0[9](false);
if time=starttime then begin
? ? ? ? var_true=true;
? ? ? ? flag=flag+1;
end;
{每天的開始時(shí)間點(diǎn),變量設(shè)定,將flag累加1,將var_true賦值為true,因?yàn)樵谙旅嬷慌袛酁閒alse的情況}
if flag<>-1 and var_true=true and close<=lowest(low,10) then
? ? ? ? var_true=false;
{判斷當(dāng)天是否有不連續(xù)的情況,若有則賦值var_true為false,當(dāng)天的剩余時(shí)間將不再判斷}
if time=endtime and flag<>-1 then
? ? ? ? arr0[mod(flag,10)]=var_true;
{每天的結(jié)束時(shí)間點(diǎn),將var_true賦值存儲(chǔ)到數(shù)組中,通過mod求余運(yùn)算,使數(shù)組中存儲(chǔ)的是始終是最近10天是否連續(xù)的情況}
if flag>9 then
? ? ? ? condition1=not array_contains(arr0,false);
{當(dāng)flag>9說明數(shù)組中已經(jīng)存儲(chǔ)了最近10天是否連續(xù)的情況,若數(shù)組中沒有false,則說明連續(xù)10天close>lowest(low,10)成立,此時(shí)condition1為true;否則condition1為false}
注意事項(xiàng):對(duì)于短周期,比如1分鐘甚至更小,或者對(duì)于交易量比較小的商品合約,有可能開始時(shí)間或者結(jié)束時(shí)間點(diǎn)沒有K線,那么這個(gè)算法就會(huì)出現(xiàn)問題;所以這里只是給出一個(gè)模板,關(guān)于時(shí)間的界定,您可能需要貼出您的具體情境,然后特別定制代碼界定時(shí)間。
此外,更簡單的辦法是,通過插入日線周期的子圖,然后聲明一個(gè)基于子圖的變量,通過這個(gè)變量來保存當(dāng)天是否連續(xù)。
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容