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