期貨軟件TB系統(tǒng)源代碼解讀系列19-函數(shù)上穿、下跌

函數(shù)上穿CrossOver與下跌CrossUnder抽莱,其實是很方便的一對函數(shù)術(shù)語范抓,調(diào)用也很簡練∈愁恚可怎么說呢匕垫,這兩我一般不怎么喜歡用,不是因為什么不好虐呻,只是個人習(xí)慣而已象泵。這兩函數(shù)算法沒什么好說的寞秃,看字面意思都明白了,具體用代碼怎么表達(dá)呢偶惠,我們來看看這代碼編寫的蜕该,如下:

函數(shù)CrossOver代碼:

Params

NumericSeries Price1(1); //聲明數(shù)值序列參數(shù)Price1,初始值為1.//

NumericSeries Price2(1); //聲明數(shù)值序列參數(shù)Price2洲鸠,初始值為1.//

Vars

Bool Con1(False); //聲明布爾型變量Con1堂淡,初始判斷為假。//

Bool PreCon(False); //聲明布爾型變量PreCon扒腕,初始判斷為假绢淀。//

Numeric Counter(0); //聲明數(shù)值變量Counter,初值為0.//

Begin

If(Price1 > Price2) //假如價格Price1 大于Price2.//

{

Counter = 1;//變量Counter值等于1.//

Con1 = Price1[1] == Price2[1]; // 前一價格Price1等于前一價格Price2瘾腰,把這兩價格賦值給布爾型變量Con1//

While (Con1 and Counter < CurrentBar)//這也是一個循環(huán)語句皆的,當(dāng)布爾型變量Con1為真,并且Counter值小于當(dāng)前k線索引值蹋盆。//

{

Counter = Counter + 1; //變量Counter = 前一個Counter值 +1//

Con1 = Price1[Counter] == Price2[Counter];//布爾型變量Con1值隨著變量Counter值變化了费薄,即Counter值月大,k線的價格往回倒騰數(shù)位越多栖雾。//

}

PreCon = Price1[Counter] < Price2[Counter];//當(dāng)k線返回索引價格Price2大于價格Price1時楞抡,把數(shù)值賦值給布爾型變量PreCon。這些運算符的先后順序析藕,跟數(shù)學(xué)運算符差不多召廷,一般都是先乘除后加減(* / + -),次判斷大姓穗省(<>)竞慢,最后才是賦值(=)//

Return PreCon;//把布爾型變量值PreCon返回給主函數(shù)。//

}Else//就是假如價格Price1小于或等于Price2時治泥。//

{

Return False; //返回給主函數(shù)是一個錯誤值筹煮,也就是沒有值反饋回去了。//

}

End

看著不難吧居夹,也是一步步翻譯下來败潦,就是同一根k線上,依據(jù)不同算法當(dāng)價格1大于價格2了吮播,比如均線10與均線120变屁,在同一根k線上,體現(xiàn)出來是不一樣的吧意狠,所以才有了這上穿和下跌的粟关。

函數(shù)CrossUnder代碼,解讀其實是一樣的,就是條件改一下闷板,價格Price1小于Price2時澎灸,怎么處理,如下:

Params

NumericSeries Price1(1);

NumericSeries Price2(1);

Vars

Bool Con1(False);

Bool PreCon(False);

Numeric Counter(0);

Begin

If(Price1 < Price2)

{

Counter = 1;

Con1 = Price1[1] == Price2[1];

While (Con1 and Counter < CurrentBar)

{

Counter = Counter + 1;

Con1 = Price1[Counter] == Price2[Counter];

}

PreCon = Price1[Counter] > Price2[Counter];

Return PreCon;

}Else

{

Return False;

}

End

解讀完這兩函數(shù)遮晚,我們可以調(diào)用KD指標(biāo)直接試著做一個簡單的程序化性昭,看用這兩函數(shù)與不用這兩函數(shù),交易時可有差異的县遣。第一個用這兩函數(shù)的代碼及結(jié)果糜颠,如下:

Params

Numeric Length(14);

Numeric SlowLength(3);

Numeric SmoothLength(3);

Vars

NumericSeries HighestValue;

NumericSeries LowestValue;

NumericSeries KValue;

Numeric SumHLValue;

Numeric SumCLValue;

NumericSeries DValue;

Bool condition1;

Bool condition2;

Begin

HighestValue = HighestFC(High, Length);

LowestValue = LowestFC(Low, Length);

SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);

SumCLValue = SummationFC(Close - LowestValue,SlowLength);

If(SumHLValue <> 0)

{

KValue = SumCLValue/SumHLValue*100;

}Else

{

KValue = 0;

}

DValue = AverageFC(KValue,SmoothLength);

If(!CallAuctionFilter()) Return;

condition1 = CrossOver(KValue[1],DValue[1]);

condition2 = CrossUnder(KValue[1],DValue[1]);

If(MarketPosition <>1 And condition1)

{

Buy(1,Open);

}

If(MarketPosition <> -1 And condition2)

{

SellShort(1,Open);

}

End


第二個,不用那兩函數(shù)的萧求,代碼及結(jié)果如下:

Params

Numeric Length(14);

Numeric SlowLength(3);

Numeric SmoothLength(3);

Vars

NumericSeries HighestValue;

NumericSeries LowestValue;

NumericSeries KValue;

Numeric SumHLValue;

Numeric SumCLValue;

NumericSeries DValue;

Begin

HighestValue = HighestFC(High, Length);

LowestValue = LowestFC(Low, Length);

SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);

SumCLValue = SummationFC(Close - LowestValue,SlowLength);

If(SumHLValue <> 0)

{

KValue = SumCLValue/SumHLValue*100;

}Else

{

KValue = 0;

}

DValue = AverageFC(KValue,SmoothLength);

If(!CallAuctionFilter()) Return;

If(MarketPosition <>1 And KValue[1] > DValue[1])

{

Buy(1,Open);

}

If(MarketPosition <> -1 And KValue[1] < DValue[1])

{

SellShort(1,Open);

}

End


上下兩圖對比看到了吧其兴,基本是沒有差別的,這也是為什么我一般懶得用它們的原因夸政。當(dāng)然你們要是不相信可以直接試對比一下的元旬,這兩函數(shù)用的時候記得聲明為布爾型的就可以。很簡單吧守问,代碼沒有我們想像的那么難匀归,自己做程序化的交易也不是很難的,算法(即交易買賣規(guī)則)才是靈魂耗帕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穆端,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兴垦,更是在濱河造成了極大的恐慌徙赢,老刑警劉巖字柠,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件探越,死亡現(xiàn)場離奇詭異,居然都是意外死亡窑业,警方通過查閱死者的電腦和手機钦幔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來常柄,“玉大人鲤氢,你說我怎么就攤上這事∥髋耍” “怎么了卷玉?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喷市。 經(jīng)常有香客問我相种,道長,這世上最難降的妖魔是什么品姓? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任寝并,我火速辦了婚禮箫措,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衬潦。我一直安慰自己斤蔓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布镀岛。 她就那樣靜靜地躺著弦牡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漂羊。 梳的紋絲不亂的頭發(fā)上喇伯,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音拨与,去河邊找鬼稻据。 笑死,一個胖子當(dāng)著我的面吹牛买喧,可吹牛的內(nèi)容都是我干的捻悯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼淤毛,長吁一口氣:“原來是場噩夢啊……” “哼今缚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起低淡,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤姓言,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蔗蹋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體何荚,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年猪杭,在試婚紗的時候發(fā)現(xiàn)自己被綠了餐塘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡皂吮,死狀恐怖戒傻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜂筹,我是刑警寧澤需纳,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站艺挪,受9級特大地震影響不翩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一慌盯、第九天 我趴在偏房一處隱蔽的房頂上張望周霉。 院中可真熱鬧,春花似錦亚皂、人聲如沸俱箱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狞谱。三九已至,卻和暖如春禁漓,著一層夾襖步出監(jiān)牢的瞬間跟衅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工播歼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伶跷,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓秘狞,卻偏偏與公主長得像叭莫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烁试,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容