飛狐金魔方大交易師使用教程(1)-交易指令基礎 [飛狐金魔方]
博庭公司推出的金魔方軟件繼承了飛狐交易師優秀的技術分析功能,并且增加了許多新特性,尤其是在公式系統和程序化交易方面,祝愿金魔方再創輝煌!
金魔方用于編寫公式的語言稱為金語言(KingLanguage,KL),它有許多增強的特性,我們將逐步講解。金魔方在公式樹中增設了一項新的智能交易公式類型,它與舊的交易系統公式相似而又不同。
舊交易系統的范式是:交易信號: 條件表達式
新智能交易的范式是:If 條件表達式Then 交易指令
與交易系統的四種信號對應,新智能交易也有四種基本指令,如下所示:
交易類別:老交易系統信號 –> 新智能交易指令
開多、多頭開倉、買入開倉、買入:ENTERLONG–> Buy
平多、多頭平倉、賣出平倉、賣出:EXITLONG–> Sell
開空、空頭開倉、賣出開倉、空頭賣出:ENTERSHORT–> SellShort
平空、空頭平倉、買入平倉、空頭回補:EXITSHORT–> BuyTocover
舊交易系統只能定義交易信號,但無法在公式中進行倉位控制等復雜操作。
新智能交易公式可以通過交易指令的參數以及許多交易相關函數進行各式各樣的精細控制。
最好的學習方法是多實踐。讓我們開始創建公式,在公式樹【智能交易】下【新建文件夾】,命名為“攻略”,然后在其下【新建公式】,輸入名稱“例1_1”,確定后,出現公式編輯器,輸入以下源代碼:
//-------金魔方智能交易公式--------------
//例1_1 均線交叉延時過濾買賣策略
{策略:
1.收盤價金叉30周期均線,且在其上延時幾個周期后買入
2.收盤價死叉30周期均線,且在其下延時幾個周期后賣出
3.外部參數切換多種類型均線
}
input:
均線周期數(30,5,200,5), //缺省值,最小值,最大值,步長
延時周期數(0,0,6,1), 均線類型(1,1,5,1);
switch 均線類型 begin
case 1: MA1 := MA(C,均線周期數);
case 2: MA1 := MA((H+L+C)/3,均線周期數);
case 3: MA1 := EMA(C,均線周期數);
case 4: MA1 := WMA(C,均線周期數);
case 5: MA1 := SMA(C,均線周期數,1);
end
Plot(MA1,'均線'); //顯示均線
bEnterLong := BarsLast(Cross(C, MA1))=延時周期數 And C>MA1;
bExitLong := BarsLast(Cross(MA1,C))=延時周期數 And C<MA1;
if bEnterLong then Buy;
if bExitLong then Sell;
{
注解:
1.用 input 語句聲明公式參數,好處是便于修改、復制。
其中的最小值、最大值、步長用于今后的參數優化。
2.均線類型在外部參數設置,可用于參數優化
公式中用 switch case語句選用均線類型
3.Plot函數輸出指標線到主圖
4.交易條件先賦給 bEnterLong 等中間變量,便于今后修改、替換,
但語句多了影響運行效率,若執行速度很重要,就直接把條件表達式寫在If后。
5.Buy類交易函數其實有很多參數,但從后到前可以取缺省值不用寫出}
編寫好公式后,點擊工具欄第1個按鈕進行編譯,如果無誤,編譯信息窗會提示編譯通過,這就可以應用公式了。此時可以看到“攻略”文件夾下多了個“例1_1”公式,雙擊它或拖放到主圖上,這時出現【策略設置】,有【屬性】【自動交易】【公式參數】三個頁面,先初略看看,不管細節,點確定后:
可以看到,收盤價上穿均線后的次周期開盤價出現紫色的三角箭頭指示買入價位,收盤價下穿均線后的次周期開盤價出現反向的三角箭頭指示賣出價位,這兩個箭頭間紫色連線表示這筆交易盈利,藍色則表示虧損。把鼠標移到三角箭頭,出現浮動信息窗,可以看到交易詳情,包括數量、價格、開平倉配對等信息。在主圖左上角公式名稱處,右鍵菜單【查看測評報告】,選擇【交易明細】頁面,可以看到交易詳情:
在主圖左上角公式名稱處,右鍵菜單【策略設置】,點選【公式參數】頁面,修改這3個參數的值,點確定后看看均線和交易信號發生了什么變化?
金魔方的智能交易公式可輸出指標線以及畫線、文字等對象,便于核對交易信號與指標線的關系、提示報警等,甚至可直接代替技術指標等其它類型的公式。與飛狐公式逐行執行不同,它的運行模式是逐根計算的,才能實現復雜的倉位控制。
我們看到期指主連的K線圖下邊有復權標記,這是因為股指期貨存在換月價差,為了走勢的連續性和指標、測評的正確性,需要做復權處理,把鼠標移到復權標記處可看到換月價差信息。
Buy、Sell表示操作股票時的買入、賣出,如果我要操作期貨呢?既做多也做空,我們試試下面的公式:
//-------金魔方智能交易公式--------------
//例1_2 自適應均線轉向多空策略
{策略:
1.自適應均線上拐一定幅度后,平空反手開多
2.自適應均線下拐一定幅度后,平多反手開空
}
input:
N(10), Pct(0.05);
AMA1: AdaptiveMovAvg(C, N, 2, 30);
bEnterLong := (AMA1[0]/AMA1[1])>(100+Pct)/100;
bEnterShort := (AMA1[0]/AMA1[1])<(100-Pct)/100;
if bEnterLong then Buy;
if bEnterShort then SellShort;
{
注解:
1.AdaptiveMovAvg為自適應移動平均線,其參數FL=2,SL=30為Kaufman在其《精明交易者》中所用的數值
2.序列下標表示K線位置,AMA1[0]表示取當前周期的值,AMA1[1]表示取前一個周期的值
3.當AMA1上升且大于前值百分之Pct時買多,反之賣空
}
如圖所示,多了藍色箭頭表示空頭交易,我們發現,多頭平倉交易與空頭開倉交易同時執行,查看交易明細證實了這一點。這是因為:
1、 單一策略只能持多倉、持空倉、無持倉三種狀態,不允許多空雙向同時持倉。
2、 某交易指令開倉時,如果已有反向持倉,先自動平掉舊倉再反手開新倉。
本例在市場中始終持倉,空頭開倉時會自動先平掉原有的多頭持倉,反之亦然。多空交易交錯發生,不需要寫平倉指令。
這種機制使得編寫公式特別簡潔,如果允許同時持有多頭和空頭倉,公式的邏輯和函數、語句將變得很復雜,難以掌握。雖然單一策略不能同時有多頭和空頭的持倉,但不同策略可以持有不同方向的倉位,例如策略A持有多頭,策略B持有空頭,它們互不干擾,而且,不同的策略可以編寫在同一個公式文件中,如何實現?敬請持續關注本攻略!
以上例子屬于趨勢交易策略,我們再試試用布林通道實現振蕩交易策略。
//-------金魔方智能交易公式--------------
//例1_3 布林通道振蕩策略
{策略:
1.最低價低于下軌后開多,最高價高于中線后平多
2.最高價高于上軌后開空,最低價低于中線后平空
3.可連續同向開倉3次
}
input:
M(20,5,200,5), N(2), S(3);
//計算布林通道
Mid : MA(C,M);
Upper: Mid + N*STD(C,M);
Lower: Mid - N*STD(C,M);
AllowSameEntries(S);
bEnterLong := L < Lower; //多頭開倉條件
bExitLong := H > Mid; //多頭平倉條件
bEnterShort := H > Upper; //空頭開倉條件
bExitShort := L < Mid; //空頭平倉條件
if bEnterLong then Buy;
if bExitLong then Sell;
if bEnterShort then SellShort;
if bExitShort then BuyToCover;
{
注解:
1.AllowSameEntries函數設置允許連續同向開倉最大次數
默認不能連續開同向倉}
如圖所示,可以用AllowSameEntries函數控制同方向連續開倉的最大次數,如果沒有用到這個函數,或者把S參數設置為1,則在已有持倉情況下,不再連續開同方向的倉,大家可以試試。默認不能連續開同向倉,也是為了使大多數策略的公式編寫簡單,邏輯清晰。
從以上的例子,我們知道,不帶任何參數的交易指令是在信號發生的下一周期開盤時進行交易的,因為本周期收盤時才能確定信號最終不變的狀態,但那一瞬間卻是下不到單的。
在公式編輯器中把鼠標移到Buy函數名處,出現浮動信息窗,看到函數說明,我們發現其實它有很多參數,如何應用這些參數?如何使用其它的下單方式、控制下單時機、價位和數量嗎?如果想在收盤時下單怎么辦呢?另外,默認的交易數量是如何定的呢?回想起【策略設置】中有“委托數量”的設置,是在那里設置的嗎?
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容