[外匯 程式交易]

Trader_Training_BT V3.0 比起 V1.02 做了下列的加強:
★ (1) 可以使用文字複合指令,參考下面<表二> 複合指令說明。
★ (2) 可以使用「水平線」的掛單指令,如下面 (圖四) 所示。
★ (3) 增加追縱止損 (Trailing Stop) 的功能,如下面<表二> 複合指令說明。

【前言】

這是我的軟件:Trader_Training_BT「手動」下單的「自動」交易軟件。(??沒錯,不要懷疑)

現盤或模擬盤中,想下單時按下「F9」或從「功能表 => 工具 => 新交易單」就可以下單。可是在歷史盤中怎麼「手動」下單呢?MT4交易平台一直沒有提供這樣的功能,因為歷史盤是提供給「自動」交易軟件做測試用的,我靈機一動,突然想到可以在歷史盤中「手動」下單的方法,於是我花了幾天的時間寫完這個軟件的初版,又花了很多時間做改善,讓大家容易使用。

這個軟件可以讓你在歷史盤「手動」下單。我相信它絕對可以幫你省很多、很多的 $$ 。

用這個軟件在「歷史盤」練到績效好才去開真倉,可以避免你真槍實彈上戰場、真實帳戶的真錢的損失。

【程式費用】一年授權費新台幣3000元整。

【程式使用方式】

程式下載:將以e-mail寄給取得授權的人,需要授權碼的人在請主動e-mail連絡:gino.liu.tw@gmail.com (Gino Liu)。

程式安裝方法,請參考文章, 從檔案總管將Trader_Training_BT.ex4 Samurai.dll 複製到相對應的目錄:

     [外匯][MT4]正解:MT4 的EA到底該放在那個目錄?

        複製檔案後必需重新啟動你的MT4交易平台。

重新啟動MT4平台後必需做的設定:從MT4平台上方的「功能表(菜單) => 工具 => 選項」點擊叫出如下的對話視窗,點擊「智能交易系統」將「允許導入動態連結庫」打勾;「確認導入動態連結庫」不打勾: 

程式使用方法:參考這裏:[外匯]如何做投資策略測試 (看歷史盤)

你可以從「功能表 => 檢視 => 投資策略測試」或直接按「Ctrl + R」叫出歷史測試。如下面(圖一),在智能交易系統的地方選「Trader_Training_BT」。

記得「復盤顯示」的地方要打勾。

在上面 (圖一) 的地方點一下「智能交易系統屬性」,出現如(圖二)的輸入參數視窗,你可以改變這些賦值來決定你的交易單的獲利點數、止損點數、手數…等的預設值:

Email: 填入你的 e-mail 位址。
License_Key: 程式的授權碼。針對每個Email有一組授權碼才可以使用!
SL_Pips: 交易單的止損點數 (Stop Loss),填 0 表示不設止損。
TP_Pips: 交易單的獲利點數 (Take Profit),填 0 表示不設獲利。
Lots: 交易單的手數。
若值為0手,將自動以下面的「Risk_Percentage」來換算手數 (建議填為0)。
Risk_Percentage: 交易單的風險比例。
舉例:Risk_Percentage填為2,表示若你的交易單虧損了,則這張交易單將損失你的「可用保證金」的2% (含點差)。
程式將以你的交易單的止損點數(SL_Pips) 為條件幫你換算下單手數。
如果上面「Lots」的值不為0,程式將以「Lots」的值當成下單手數,而不用Risk_Percentage來計算手數。

如何下單?

先舉一個例子:如下面 (圖三),MT4交易平台上,在(標示C) 的地方按下 A,並且在圖表上任何地方 (標示D) 加入文字「buy」 ,Trader_Training_BT 就會在當前價格(107.34)幫你下一個買單,並依 (圖二) 的手數、止損、獲利點數等預設值下單。


<表一> 下單指令列表:

在歷史盤要下單時,先暫停歷史盤,如上面(圖三)的方式在圖表中加入文字指令,然後按「F12」就入單了。Trader_Training_BT 會去分析文字的內容,而幫你下單。

下面是所有的下單指令列表:

基礎指令: 以下為Trader_Training_BT 的指令:
buy 下買單。手數及獲利、止損依上面(圖二)的方式指定。
sell 下賣單。手數及獲利、止損依上面(圖二)的方式指定。
close 平倉交易單。
如果同時有很多單未平倉,這個指令只會平倉第一張交易單。
   
進階指令:  
buy + 手數 下買單,同時指定手數。舉例:「buy 0.5」下 0.5手的買單。
sell + 手數 下賣單,同時指定手數。舉例:「sell 1.2」下 1.2手的賣單。
close + 手數 平倉第一張未平倉交易單的部份手數。例如的交易單是2手,指令「close 0.5」表示平倉掉 0.5手,留1.5手。
  以上指定手數的交易單操作,程式會依你的帳戶餘額將你的手數限定在最小及最大可下單手數範圍內,例如你不可能下1000手,或0.000001手吧!
closeall 平倉所有的交易單 (包括未入單的掛單)。
closeticket +
交易單號碼
以 (圖三) 的掛單欄位為例,若上面的5張交易單都還未平倉,當你下指令「closeticket 3」時,會平倉第三張交易單。
   
修改獲利、止損指令: 以下修改獲利、止損指令皆可以用於即時單(未平倉交易單)及掛單。
TP + 點數 舉例:「tp 30」表示把第一張未平倉交易單的獲利 (Take Profit) 調整到與「入單價」30點的距離。點數設 0 (或空格) 時表示不設獲利。
SL + 點數 舉例:「sl 25」表示把第一張未平倉交易單的止損 (Stop Loss) 調整到與「入單價」25點的距離。點數設 0 (或空格) 時表示不設止損。
TPC + 點數 舉例:「tpc 30」表示把第一張未平倉交易單的獲利 (Take Profit) 調整到與「現價 (Current price)」30點的距離。點數設 0 (或空格) 時表示不設獲利。
SLC + 點數 舉例:「slc 25」表示把第一張未平倉交易單的止損 (Stop Loss) 調整到與「現價(Current price)」25點的距離。點數設 0 (或空格) 時表示不設止損。
TPO + 點數 為V1.02版指令,已廢棄不用。
SLO + 點數 為V1.02版指令,已廢棄不用。
  注意到以上設定的點數都是以4位數報價的點數為準。
   
掛單交易指令:  
buy stop + 價位 舉例:「buy stop 94.23」表示掛一張buy stop 止損買單,入單價 94.23。
sell stop + 價位 舉例:「sell stop 94.23」表示掛一張sell stop 止損賣單,入單價 94.23。
buy limit + 價位 舉例:「buy limit 94.23」表示掛一張buy limit限價買單,入單價 94.23。
sell limit + 價位 舉例:「sell limit 94.23」表示掛一張sell limit限價賣單,入單價 94.23。
delete 刪除所有的掛單。
同義字:「del」、「delete pending」、「deletepending」、「delpending」、「del pending」、「cancel」。
delete + 交易單 指定刪除某張掛單。
   
其他指令參數: 以下參數為V2.0版以後新增的指令:
Lots + 手數 手數。附加於下單指令之後。同義字:「lot」。
舉例一「buylimit lots 1.5」:下止損買單,同時指定手數1.5。
舉例二「close lots 0.2」:將第一張交易單平倉0.2手,其餘留倉。
ticket + 交易單 指定交易單;同義字:「tkt」。
舉例一「delete ticket 20」:將第20張掛單的交易單刪除。
舉例二「close tkt 21」:將第21張交易單平倉;亦可使用「closeticket 21」。
舉例三「tkt 21 tp 5」:將第21張交易單獲利設為5點。
注意到這裏的「ticket」是如下圖投資策略測試 的 B 欄位,不是 A 的欄位。

TS + 點數 設定追縱止損 (Trailing Stop) 點數。點數設為0 (或空格) 表示清除追縱止損
舉例一「sell tp 20 sl 15 TS 25」:下賣單,獲利20點、止損15點、追縱止損為25點。
舉例二「ts 35」:設定第一張未平倉交易單的追縱止損為35點。
舉例三「sl 25 TS 0 tkt 6」:修正第6張交易單的一般止損25點、並清除追縱止損

  (註:以上指令皆不區分大、小寫)

<表二> 複合指令:
以上指令及指令參數可以複合使用,不拘指令或參數排列順序,如下表舉例:

buy tp 50 sl25 lots 1.2 ts 15 在現價下買單,獲利50點、止損25點、手數 1.2、追縱止損15點。
sl  TP50 sell 在現價下賣單,獲利50點、止損不設、手數依上面(圖二)的預設值。
特別注意:若止損不設,又沒有指定下單手數,程式將以(圖二)的預設手數下單;若預設手數填0,程式無法以(圖二)的Risk_Percentage幫你計算手數,將改以最小手數下單。
sell stop 94.25 sl 25 lots 2.3 在94.25掛 sell stop 止損賣單、止損25點、手數2.3、獲利點數依上面(圖二)的預設值。
SL   45   BUYLIMIT 94.25  Tp30 在94.25掛 buy limit 限價買單、獲利30點、止損45點、手數依上面(圖二)的預設值。
tp 10    tkt 20 將第20張交易單的獲利點數調整為距離「入單價」10點。
tkt 20   SLC   5 將第20張交易單的止損點數調整為距離「現價」5點。
close 0.2 ticket 5 將第5張交易單平倉0.2手,其餘手數留倉。
與「close ticket 5 lots 0.2」同義。
tkt 20 ts25   SL 將第20張交易單的一般止損清除,並設追縱止損25點。

眼花了嗎?(哈) 這是V2.0版強的地方,我花了很多時間修改的!


水平線的掛單指令

除了文字指令外,Trader_Training_BT V2.0 還增加了「水平線」的掛單指令,除了掛單價位以「水平線」的價格為準外,其餘指令的使用方法和<表二> 複合指令相同指令參考這個連結裏面<圖三>在水平線的敘述欄位插入。以下圖為例:

舉例一:水平線價位97.35「buy tp 50 SL 30 TS 35」:在97.35掛 buy stop 限價買單,獲利50點、一般止損30點、追縱止損35點。

舉例二:水平線價位96.89「Sell Stop tp 50 SL 30」:在96.89掛 Sell Stop 止損賣單,獲利50點、一般止損30點。


<表三> 複合指令的特殊處理:

V2.0版因為複合指令的組合方式有很多變化,所以我花了很多時間測試並修改程式以應付所有可能的特殊狀況,舉例:

指令 問題 程式的處理方式
closetkt 2 ticket 4
ticket 4 closetkt 2
我的程式是要平倉第2單或第4單? 以 ticket 的指定為準 (第4單)
sell limit tp5 tp  50 我的程式要把獲利設5點或50點? 以第一次的指定為準(5點)
TP5SL15SellSTOP0.12158Lots1.2345 這種全部粘在一起的指令也要處理嗎? 若指令無空格分格,照樣處理;手數依平台而異,可能在小數第2位四捨五入,改為1.23手。
SL -15 Sell  Lots -5 止損點數和手數為負數,程式要怎麼下單? 手數改以最小手數下單;
止損點數修正為最小止損
BUY Lots1000 如果帳戶資金只有3000元,可以下1000手嗎? 改以帳戶最大保證金餘額決定最大手數下單
BUY ticket 5 下單同時指定 ticket? ticket 的參數將被忽略
Lots 5 sell 3 程式要幫你下5手或3手的賣單? 以 lots 的指定為準 (5手)
sell 1.4 lots ABC ABC不是數字,要下幾手? ABC不是保留字,程式自動忽略,改以上面(圖四)的預設值決定手數
SL TP SL 之後沒有止損點數;
TP 之後沒有獲利點數
將第一張未平倉交易單的獲利、止損清除。若無未平倉交易單,程式不處理。

很多不同邏輯的例外狀況我都要思考,但不敢保證完全沒有bug。程式的測試是程式設計者應有的責任,我必須保證程式的 robustness,各位的目標是練功,沒事沒有必要做這些事,除非你們要幫我測試,但若有使用不順的地方,歡迎留言給我,可以的話我都會修改的。


在歷史盤練完後,MT4平台還可以把你所有的交易單存成報表,也可以劃出你的獲利曲線:

【附帶說明】

(1) 這個軟件在現盤是不會幫你下單的,請放心,不然不小心在真倉的圖表打上文字「buy」就幫你下買單,你不嚇死才怪!

(2) 在任何貨幣對中都可以使用。

(3) 可以在歷史盤中配合任何其他均線、指標等使用,包括我的第3號軟件:Price Alert Indicator(價格警示) (V2.0)


【後記】

我們學了下單策略後,為了快速熟練下單及看盤技巧,一定會去歷史盤練習。因為歷史盤不能手動下單,因此常常用紙作記錄,或用Excel表格統計,計算策略的贏輸比例。這有一個缺點:常常在看歷史盤時仍然會猶豫要不要下單,如果沒有下單,等盤跑過後,發現是贏單,這時候心理開始想:「剛才就是想下單但沒下,所以這單記作是贏單好了!」如果是猶豫後決定下單最後卻輸了,你又怎麼想呢:「剛才不是很想下的,果然不出我所料,我剛才的直覺是對的,不如這單當成沒下,不要作記錄好了。」最後作成的統計是欺騙自己的統計結果。

真盤不可能讓你用欺騙自己的方式贏錢的,使用這個軟件可以讓你誠實面對自己:沒有下單,歷史盤跑過了就是不能再下了;下單後也不能反悔。這可以讓一個操盤手在歷史盤就看到自己初步的心態問題,而不用在真倉虧錢後才後悔莫及。所以用這個軟件好好練習下單,絕對可以幫你省很多錢。因為你知道:連歷史盤都練不好,在真倉要獲利是不太可能的。

這是一個連我都覺得超棒的軟件,我每天至少會用它來操歷史盤二小時,練手動下單的功夫;我初步目標是:每天用它至少在歷史盤中賺20%。

建議要開真倉的人都要來用這個軟件在「歷史盤」中練一下你手動下單的功夫,可以快速增加下單的功力。

★ 為何MT4交易平台不提供歷史盤「手動」下單的功能呢?個人推測:一定是平台公司們不喜歡,所以要求MetaQuotes軟件公司不要提供這種功能。如果每個人都把功夫練好再去開真倉,那平台公司是不是少了很多錢可以賺呢?(1)少了很多點差可以賺;(2)少了很多我們在市場輸掉的錢可以賺。所以或許有一天,平台公司們會來封殺我這個軟件呢?(!想太多了)。

★ 覺得自己好像瘋了,很像一個程式狂,寫了十幾年的程式還是這樣!只要談到寫程式,就是完全的投入,只要程式有問題未解決,累到三更半夜還可以一直找答案,其他事都不做,連我老婆都受不了!V1.02 版已經很好用,因為有人提出要求,所以我又花了很多時挑戰自己把程式修得更好!


相關連結:

[外匯][程式交易] MT4程式代工 (EA、指標、腳本)

[程式交易]我的2號軟件:雙向掛 Buy Stop / Sell Stop 的交易單

⊙ [外匯][程式交易]MMACD 我的多時框MACD指標

[外匯][程式交易]MMA_ForMPeriod 我的多時框均線指標
[外匯][程式交易]MBands 我的包寧傑指標
[外匯][程式交易]MBands_S 我的包寧傑衍生指標 %b 與帶寬 (BandWidth)
[外匯][程式交易]MMoney-計算資金控管的指標
[外匯][程式交易] Sniper指標 V2.03
[外匯][程式交易]我的程式:Order2Chart 將歷史單全部拉到圖表上
[外匯][交易程式]暴倉時機計算小程式: MT4平台


HEMiDEMi 的標籤:



freeforever 發表在 痞客邦 PIXNET 留言(5) 人氣()


留言列表 (5)

發表留言
  • Rachel
  • 感恩啦~

    學長,感謝您的付出,讓大家受益良多!
  • jean8265
  • 謝謝你的軟件,但我在圖表上加入"Buy"的字樣,但在結果那裡一直都沒有顯示,打入close也是,按f12也沒反應。
    是因為我是用masterforex的平台關係嗎?
  • 不是平台的關係,程式使用前必需填入授權碼才可使用

    freeforever 於 2011/02/20 18:41 回覆

  • 悄悄話
  • 您的暱稱 ...cabu
  • 請問如何和您聯繫
  • freeforever
  • 請用email: gino.liu.tw@gmail.com
【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消