关闭@1x
香港:2025-04-25 17:51:13
  • 紐約:2025-04-25 04:51:13
  • 倫敦:2025-04-25 09:51:13
  • 東京:2025-04-25 18:51:13
  • 悉尼:2025-04-25 19:51:13
  • 香港:2025-04-25 17:51:13
  • 新加坡:2025-04-25 17:51:13
首頁> 資訊> 經紀商 >正文

EBC算法交易故事|全棧工程師的外彙算法交易之旅

很多交易者都想要在外彙市場建議自己的交易策略,但國際金融局勢動蕩不安,外彙世界有時也會讓人不知所措,EBC希望這篇文章爲正在做交易的您,提供了一些關于如何開始自己的外彙交易策略的思路。

很多交易者都想要在外彙市場建議自己的交易策略,但國際金融局勢動蕩不安,外彙世界會讓人不知所措,EBC希望這篇文章爲正在做交易的您,提供了一些關于如何開始自己的外彙交易策略的思路

本文的分享者是Rogelio 一位積極進取的全棧工程師,在多種語言、框架和平台方面擁有 13 年以上的工作經驗。

一開始,你可能知道,外彙市場貨币對之間的交易。但可能沒有意識到它是世界上流動性最強的市場。幾年前,在我的好奇心的驅使下,我創建一個模拟賬戶并在Meta Trader 4交易平台上進行模拟交易這是我在外彙算法交易世界踏出的第一步。

經過一周的模拟交易,我的錢幾乎翻了一番。在我自己小有成就的交易激勵下,我進行了更深入的研究注冊了一些外彙論壇。我每天幾個小時研究算法交易系統(決定你應該買入還是賣出的規則集)、自定義指标、市場情緒等等。

我的第一個客戶

巧合的是,在我研究算法交易的時候,聽說有人想找一個軟件開發人員來自動化一個簡單的交易系統。當時我正在學習Java 中的并發編程(線程、信号量和所有垃圾收集)。我認爲這個自動化系統不會比高級數據科學課程工作複雜得多,所以我接下來了這份工作。

客戶想要使用MQL4構建的算法交易軟件,MQL4是 MetaTrader 4 平台用于執行交易相關操作的函數式編程語言。MQL5目前也已經發布了。正如所料,它解決了 MQL4 的一些問題并帶有更多内置函數,這讓交易更簡單

交易平台(本例中爲 MetaTrader 4)的作用是提供與外彙經紀商的連接。然後,經紀提供一個平台,提供有關市場的實時信息并執行買/賣訂單。對于外彙交易新手,以下是是基本交易界面信息:

通過 MetaTrader 4,可以使用内部函數訪問所有這些數據,可訪問各種時間範圍:每分鍾 (M1)、每五分鍾 (M5)、M15、M30、每小時 (H1)、H4、D1、W1、MN

當前價格的變動稱爲tick。換句話說,一個tick變動是一個貨币對買入價或賣出價的變化。在活躍的市場中,每秒可能有許多ticks。在平穩的市場中,可能有幾分鍾沒有一個tick

通過這樣的平台下訂單時,買入或賣出一定數量的某種貨币。還可以設置止損和止盈限額。止損限額是指在結束交易之前,你能承受的最大點數(價格變化)的損失。獲利限制是指在兌現之前,你将積累獲利的點數。

客戶的算法交易規範很簡單:他們想要一個基于兩個指标的外彙機器人。這兩個指标需要在嘗試定義市場狀态和做出交易決策時非常有用,因爲它們基于過去的數據(例如,過去n天的最高價格)。MetaTrader 4 内置了許多指标但是,我客戶感興趣的指标來自自定義交易系統。

他們希望每次這些自定義指标中的兩個相交時進行交易,并且僅在某個角度進行交易。

着手開始做

當我着手開始做時,我了解到 MQL4 程序具有以下結構:

預處理器指令

【外部參數】

全局變量

【初始化函數】

【去初始化函數】

【啓動功能】

【自定義功能】

start 函數是每個 MQL4 程序的核心,因爲它會在每次市場變動時執行(因此,該函數将在每個價格變動時執行一次)。無論使用的時間範圍如何,都是如此。例如,可以在 H1(一小時)時間範圍内操作,但 start 函數将在每個時間範圍内執行數千次。

爲了解決這個問題,我強制函數在每個周期單位執行一次:

獲取指标的值:

決策邏輯,包括指标及其角度的交集:

發送訂單:

回測

一旦我建立了我的算法交易系統,我想知道:1)它的執行是否适當2)它使用的外彙交易策略是否有

回溯測試是在過去的事件下測試特定(自動化或非自動化)系統的過程。換句話說,使用過去數據代替現在來測試的系統。

MT4 自帶一個用于回測外彙交易策略的工具(如今,有更多專業工具提供更強大的功能)。首先,設置時間表并在模拟環境下運行你的程序;該工具将模拟每個分時,知道對于每個單位,它應該以特定價格開盤,以特定價格收盤,并達到指定的高點和低點。

将程序的操作與曆史價格進行比較後,将對它是否正确執行有一個很好的了解。

通過回溯測試,我檢查了外彙機器人在一些随機時間間隔内的回報率;毫無疑問,我知道我的客戶不會賺錢——他選擇的指标以及決策邏輯都沒有盈利。作爲示例,以下是在 M15 窗口上運行程序進行 164 次操作的結果:

請注意,我們的餘額(藍線)在其起點以下視爲結束。

提示:說一個系統“有利可圖”或“無利可圖”并不總是正确的。通常,系統會根據市場的“情緒”在一段時間内有利/無利可圖,這可以遵循許多不同的圖表模式:

參數優化

盡管回溯測試讓我對這個 FX 機器人的實用性産生了懷疑但當我開始嘗試使用它的外部參數并注意到整體回報率産生巨大差異時就産生好奇這門特殊的科學被稱爲參數優化。

我做了一些粗略的測試,試圖推斷外部參數對回報率的重要性,并得出了這樣的結論:

或者,清理數據後

可能認爲(正如我所做的那樣)應該使用參數 A。但是這個決定并不像看起來那麽簡單。具體來說,請注意參數 A的不可預測性:對于小錯誤值,其返回值會發生巨大變化。換句話說,參數 A 很可能會高估未來的結果,因爲任何不确定性、任何變化都會導緻更差的性能。

但确實,未來是不可控的,所以參數A的返回也是不确定的。事實上,最好的選擇是依靠不可預測性。通常,最大回報較低但可預測性較好(波動較小)的參數比具有高回報但可預測性較差的參數更可取。

唯一可以确定的是,不知道市場的未來,并且根據過去的數據認爲知道市場的表現,這種判定是錯誤的。反過來,必須在外彙交易中承認這種不可預測性。

這并不一定意味着我們應該使用參數 B,因爲即使參數 A 具有較低回報,但也比參數 B 表現更好;這隻是爲了向展示優化參數可能會導緻測試誇大未來可能的結果

外彙算法交易注意事項

自從有了第一次算法外彙交易經驗以來,我已經爲客戶構建了幾個自動交易系統,我可以告訴你,總有探索的空間和進一步的優化分析要做。例如,我最近建立了一個基于尋找所謂Big fish”運動的系統;也就是說,在微小的時間單位内,巨大的點數變化。這是一個讓我着迷的研究

構建自己的外彙模拟系統是了解更多外彙市場交易的最佳選擇,而且可能性是無窮盡的。例如,可以嘗試将價格變化的概率分布解讀爲一個市場(例如歐元/美元)中波動率的函數,并且可能使用每個波動率狀态的分布創建蒙特卡羅模拟模型,使用任何你想要的精确程度

進一步閱讀

如今,有大量工具可用于構建、測試和改進交易系統自動化:用于測試的Trading Blox、用于交易的NinjaTrader、用于編程的OCaml,僅舉幾例。

以下是我向程序員和熱心交易者推薦的一些文章:

BabyPips:如果不了解外彙交易,這就是起點。

海龜之道,由 Curtis Faith 撰寫:在我看來,這就是外彙聖經。一旦有一些交易經驗并了解一些外彙策略,那就可以閱讀它

Technical Analysis for the Trading Professional — Strategies and Techniques for Today’s Turbulent Global Financial Markets作者:Constance M. Brown

智能交易編程系統– 在 MQL 中爲 MetaTrader 4 創建自動交易系統,作者:Andrew R. Young

交易系統 – 系統開發和投資組合優化的新方法,Trading Systems – A New Approach to System Development and Portfolio Optimisation

作者 Urban Jeckle 和 Emilio Tomasini:技術性很強,非常專注于外彙測試。

A Step-By-Step Implementation of a Multi-Agent Currency Trading System作者:Rui Pedro Barbosa 和 Orlando Belo:這個非常專業,描述了您可以如何創建交易系統和測試平台。

【免責聲明】123财經導航所發布的信息内容僅供交易投資者參考,并不構成投資建議“據此操作,風險自擔”。網站上部分信息内容及圖片來自于網絡/注冊作者/投稿人,版權歸原作者所有,如有侵權,請您與我們聯系關閉,郵箱:938123@qq.com。
hhhhhhh
热门评论
最新评论
还没有评论快来抢沙发吧!
第三方賬号登錄
第三方賬号登錄
第三方賬号登錄
  • *站點:
  • *網址:
  • 類型:
  • 聯系方式:
  • 簡介:

  • RRH123歡迎您的加入!如有問題請添加咨詢管理員【微信号:938123】
  • *類型:
  • *問題:
  • 圖片說明:
  • 聯系方式:

  • RRH123感謝您的反饋!如有問題請添加咨詢管理員【微信号:938123】