飛狐金魔方大交易師智能交易使用教程(9)-均線與趨勢線交叉加倉位管理 [飛狐金魔方]
本節(jié)講解如何應(yīng)用公共(自編)函數(shù),如何在公式中調(diào)用手工繪制的趨勢線產(chǎn)生交易信號,如何根據(jù)前次交易結(jié)果調(diào)整下單量,如何應(yīng)用新的文本繪制函數(shù),請跟隨本ID一探究竟。
首先在公式樹的【公共函數(shù)】下創(chuàng)建名為“顯示績效”的公式:
input:
NumericSeries MA1, //序列參數(shù)
Numeric 下單量, //數(shù)值參數(shù)
NumericRef 盈利因子, //數(shù)值型引用參量,裝載計(jì)算結(jié)果
NumericRef 盈虧比;
均線: MA1,Precision0;
單量: 下單量,Precision0, LineThick0;
勝率%: PercentProfit, Precision0, LineThick0;
盈利因子:= -GrossProfit/GrossLoss; //總盈利/總虧損
盈虧比:= -(GrossProfit/NumWinTrades)/(GrossLoss/NumLosTrades);
return (InitialCapital+NetProfit); //函數(shù)返回
編譯通過后,再創(chuàng)建以下智能交易公式:
//-------金魔方智能交易公式--------------
//例9_1 均線與趨勢線交叉加倉位管理策略
{策略:
1.均線與手工畫的趨勢線交叉作為交易信號
2.上次交易為'止盈'平倉或首次開倉,下單量為初始單量
3.上次交易為非'止盈'平倉的,下單量按加倉步長漸次增加
4.下單量增大到超過最大單量則回復(fù)為初始單量
}
input:
TL標(biāo)識號(99), //手工繪制趨勢線的標(biāo)識號,【設(shè)置畫線】標(biāo)題欄可見
止盈價(jià)差(600),
止損價(jià)差(200),
初始單量(1),
加倉步長(1), //下單量漸次增加步長
最大單量(10),
轉(zhuǎn)折強(qiáng)度(15); //波峰波谷前后N周期最高最低
variable: 下單量(1),等量次數(shù)(1);
MA1 := MA(C,2);
TLV := TL_GetValue(TL標(biāo)識號, Date, Time); //趨勢線數(shù)值序列
bEnterLong := CrossOver(MA1,TLV); //均線上叉趨勢線平空開多
bEnterShort:= CrossUnder(MA1,TLV); //均線下叉趨勢線平多開空
if bEnterLong or bEnterShort then begin
//上次平倉標(biāo)識為'止盈'或沒有交易過
if ExitName(1) = '止盈' OR ExitName(1) = '' then
下單量 = 初始單量;
else begin //漸次增加下單量
if 下單量=初始單量 or 等量次數(shù) = 2 then begin
下單量 = 下單量 + 加倉步長;
等量次數(shù) = 1;
end else
等量次數(shù) = 等量次數(shù) +1;
if (下單量 > 最大單量) then 下單量 = 初始單量;
end
end
if bEnterLong then begin
Buy('',下單量);
ID1:=Text_New(Date,Time, L, 314, true); //繪制314號圖標(biāo)-右上箭頭
Text_SetColor(ID1,ColorMagenta);
end
if bEnterShort then begin
SellShort('',下單量);
ID1:=Text_New(Date,Time, H, 316, true); //繪制316號圖標(biāo)-右下箭頭
Text_SetColor(ID1,ColorCyan);
Text_SetStyle(ID1, 0, 1); //設(shè)置下對齊
end
if MarketPosition = 1 then begin //多頭持倉
Sell('',DEFAULT,EntryPrice+止盈價(jià)差,0,OT_LIMIT,OB_NEXTBAR,'止盈');
Sell('',DEFAULT,EntryPrice-止損價(jià)差,0,OT_STOP,OB_NEXTBAR,'止損');
end
if MarketPosition = -1 then begin //空頭持倉
BuyToCover('',DEFAULT,EntryPrice-止盈價(jià)差,0,OT_LIMIT,OB_NEXTBAR,'止盈');
BuyToCover('',DEFAULT,EntryPrice+止損價(jià)差,0,OT_STOP,OB_NEXTBAR,'止損');
end
//顯示波峰點(diǎn)
pos := SwingHighBar(1,High,轉(zhuǎn)折強(qiáng)度,轉(zhuǎn)折強(qiáng)度+1);//波峰位置
SWV := SwingHigh(1,High,轉(zhuǎn)折強(qiáng)度,轉(zhuǎn)折強(qiáng)度+1); //波峰數(shù)值
if pos = 轉(zhuǎn)折強(qiáng)度 then begin
ID1 :=Text_New(Date[pos],Time[pos], SWV, SWV);
Text_SetColor(ID1,ColorMagenta);
Text_SetStyle(ID1, 2, 1); //設(shè)置水平中對齊、垂直下對齊
end
//顯示波谷點(diǎn)
pos := SwingLowBar(1,Low,轉(zhuǎn)折強(qiáng)度,轉(zhuǎn)折強(qiáng)度+1); //波谷位置
SWV := SwingLow(1,Low,轉(zhuǎn)折強(qiáng)度,轉(zhuǎn)折強(qiáng)度+1); //波谷數(shù)值
if pos = 轉(zhuǎn)折強(qiáng)度 then begin
ID1 :=Text_New(Date[pos],Time[pos], SWV, SWV);
Text_SetColor(ID1,ColorBlue);
Text_SetStyle(ID1, 2, 0); //設(shè)置水平中對齊、垂直上對齊
end
//調(diào)用“顯示績效”公共函數(shù)顯示績效,并計(jì)算返回余額、盈利因子、盈虧比
variable: //公式中可以有多組input、variable聲明
PF(0),PR(0); //引用型變量,裝回計(jì)算結(jié)果
余額:顯示績效(MA1,下單量,PF,PR),Precision0,OwnerScale;
盈虧比:PR, Precision1, LineThick0;
盈利因子:PF, Precision1, LineThick0;
{
注解:
1.ExitName(1)取得上一回持倉的最后一次平倉的標(biāo)識名
2.Text_*系列函數(shù)請參見【字典】中【新畫線函數(shù)】類里的說明
3.“顯示績效”為用戶自編的公共函數(shù)
}
如下圖所示,在主圖上手工繪制一條直線(圖中粗紫色線),選中它,右鍵菜單【設(shè)置畫線】,標(biāo)題欄上#后面的數(shù)字即為該畫線的標(biāo)識號,把公式的外部參數(shù)“TL標(biāo)識號”的數(shù)值99改為這個(gè)數(shù)字,然后把公式拖放到圖上,即可讓公式跑出交易結(jié)果。
右鍵菜單【查看測評報(bào)告】-【交易明細(xì)】,因公式中等單量次數(shù)上限為2,所以下單量從1->2->2->3->,遇到止盈,再從1->2...,如圖所示:
新的文本繪制函數(shù)Text_New 不僅可以在圖上標(biāo)出文本、數(shù)字,還能繪制680種圖標(biāo),圖標(biāo)與數(shù)字標(biāo)號對照表請見下圖:
上節(jié)的點(diǎn)數(shù)圖算法可以改寫成公共函數(shù),這樣,其它公式就可以直接調(diào)用而不用寫繁雜的語句,可以把“轉(zhuǎn)向價(jià)”作為函數(shù)的return輸出,用引用型參數(shù)NumericRef定義“突破買價(jià)”、“突破賣價(jià)”,這樣可以同時(shí)輸出這三個(gè)計(jì)算結(jié)果,請各位自行試驗(yàn)。
我們已經(jīng)介紹了一些經(jīng)典的策略和交易技巧及其金魔方公式實(shí)現(xiàn),在研發(fā)交易策略時(shí),如何評估策略的好壞、評估能否用于真實(shí)交易呢?
且聽下回分解!
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容