iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
SideProject30

從零開始的外匯自動程式交易系列 第 29

DAY29 ChatGPT編寫MQL4實作

  • 分享至 

  • xImage
  •  

今天我們來實際操作一下分向對ChatGPT詠唱,及要如何統整合併。要注意的是,今天我請ChatGPT下的指令皆是使用MQL4語言而非MQL5,因為我發現,MQL5對ChatGPT來說似乎還是太年輕了,要他寫MQL5,但結果寫出來的都是MQL4語法,而從MQL4轉換成MQL5的過程,雖然整體邏輯一樣,但是光是函數的差異就需要花非常久的時間去調整及查詢。所以為了方便性還有除去我們在調整可能會造成的篇幅過於冗長,就只使用他產出來的MQL4做介紹。

1.進場

https://ithelp.ithome.com.tw/upload/images/20231014/20163114P9LdCOM76F.png
OrderSend函數通常不太會出錯,而ChatGPT還給出了程式碼的講解,告訴我們每個參數代表什麼。而空單的進場則是將ASK改BID,訂單類型改成SELL就好了。

2.條件

https://ithelp.ithome.com.tw/upload/images/20231014/201631141Vzupf3tCz.png
https://ithelp.ithome.com.tw/upload/images/20231014/20163114IxFBaq145a.png
這邊使用的是蠻常見的黃金/死亡交叉,ChatGPT不僅正確算出了黃金交叉,還貼心的幫我們在圖表上畫出圖示,不過關於圖示部分的程式碼我不太熟悉,就先當他是對的好了(?

3.出場

https://ithelp.ithome.com.tw/upload/images/20231014/20163114wumcrfWUFB.png
出場的部分就很簡單了,定義一個用來平倉的函數就可以了,多單平倉根空單平倉幾乎一樣我就不再問一次了。

4.最後整合

最後我們只需要在OnTick()處理器中加入統合的部分就好。

if(cross == GoldenCross){
    CloseAllLongPositions();
    EnterLongIfNoOpenPositions();
}
if(cross == DeathCross){
    CloseAllShortPositions();
    EnterShortIfNoOpenPositions();
}

黃金交叉是多單訊號,所以下單前先平倉空單的部分,死亡交叉亦同。

結語

在條件給的足夠清楚的狀況下,要生產出一個基本的交易邏輯真的非常迅速,甚至比我打這篇文章的時間還短,但恕我對MQL4實在涉略不深,可能有不少錯誤是我沒看出來的。不過邏輯大致沒有問題,所以真出問題頂多就是參數忘記宣告之類的小問題,也不至於難以解決。
至於MQL5的部分,或許多丟一些寫好的範例程式碼給他訓練一下就可以發揮ChatGPT的完整的能力了。


上一篇
DAY28 利用ChatGPT寫策略
下一篇
DAY30 從零開始的外匯自動程式交易 第一季 完結
系列文
從零開始的外匯自動程式交易30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言