請ChatGPT寫出完整交易策略,它能寫出更長的MT4程式碼嗎?【ChatGPT第二集】

ChatGPT寫MT4程式交易

讀前溫馨提醒:這是一篇充滿程式碼且偏專業的文章喔

在上一篇介紹用ChatGPT寫MT4與MT5的程式交易EA中,
艾比有測試給大家看,
目前ChatGPT只會寫MQL4的語法,而叫它寫MQL5實在是太多錯誤。

延伸閱讀:
用ChatGPT自動來寫MT4/MT5的程式交易? EA工程師即將失業?!【ChatGPT第一集】

所以今天這篇要來試試看ChatGPT能否寫出完整交易策略程式碼的文章,
會全部請它寫MT4的語言。

如果還沒看上一篇文章的小夥伴,記得先去看看喔。

 

讓ChatGPT寫程式交易策略

雙均線交叉策略

雙均線交叉,黃金交叉買進、死亡交叉賣出,
是艾比EA編寫課堂上的第一堂課,最基礎的EA編寫範例,
教大家如何去取用技術指標。

所以我們這邊也先請ChatGPT來寫看看這支最基礎的交易策略:

ChatGPT寫雙均線

如果你有上過艾比的課,取用移動平均線的值是非常簡單的寫法。
但即使你是艾比學員,來看上面這一段程式碼,
應該也會覺得霧煞煞@@

好吧,ChatGPT沒有用最簡單的iMA來直接取均線值,
反而是寫了一個看起來是自己計算來算出移動平均線,
它把30個k棒的收盤價加起來,再去除以30。
(但它寫的for迴圈放入收盤價數值不太正確,但這邊不想考究細節了)

再來看到下單條件的部分,
buy單進場條件是:短均線>長均線 && 短均前一根k棒收盤價<=長均前一根k棒收盤價,

短均前一根k棒收盤價<=長均前一根k棒收盤價???

收盤價都是一樣的啊,
所以用兩個一樣的收盤價做比較,他們一定會是相等的,
所以這個下單條件的公式就會一直成立,然後就會一直下單,
像這樣:

ChatGPT寫雙均線 2

所以在第一關,
讓ChatGPT寫出雙均線交叉的完整策略,看起來是失敗了。

不只是在前半段要去取技術指標值的部分寫得不太好,
後半段下單部分的條件也設定的不對,
所以是一支完全不能直接複製拿來使用的EA喔!不然會下爆你的倉XD

但這邊ChatGPT值得讚許的是,
它在計算均線值那邊自己寫了一個外部計算函數(程式碼中的double GetMA)。
這樣可以自己生成一個外部函數的寫法算是進階的寫法,
尤其是當要寫出很多擴充功能、或客製化功能時,都要寫成外部函數才是比較好利用的方式。

相信ChatGPT再經過成長之後,
應該可以寫出很漂亮格式的程式碼。

 

突破策略

接下來我們請ChatGPT寫也是很基礎的突破交易策略,
以下是艾比給的詠唱:

ChatGPT寫突破

如果不懂的人乍看之下可能覺得有模有樣,
但實在是超級多問題的!!

先來講第一個,
一般我們突破是認為是區間突破,
我們可以看到ChatGPT寫的是這一根K棒突破上一根K棒這樣而已…
而且如果是艾比學員應該可以看得出來:
high是當根K棒(第0根);lastHigh是第-1根(0-1根)???
第-1根代表是未來的K棒啊,還沒有畫出來,怎麼會有值呢?(哈哈哈

所以如果去檢查lastHigh的值的話,它會一直都是0,
造成下單條件就會一直成立。

第二個,
它應該是用 ticket == -1 來當作控制場上不要重複下單的功能,
在下完單之後,ticket的值變成單號,就會>0,不會再下單的意思

但這部分也有點亂寫,因為即使下完單之後,
程式碼再次由上往下run時,run到 ticket = -1時.
ticket的值又再次變成-1,又可以再次下單,就也會造成下爆你的倉的狀況。
ChatGPT寫突破 2

第三個問題比較顯而易見,就是沒有「出場」。
所以是一支只會進場,但沒有任何出場的交易策略,就不算是完整的策略。

目前看起來如果你想要用ChatGPT直接生成EA拿來使用,
那有非常大的機率你會被它下爆倉,哈哈哈。

 

那這邊或許是艾比「詠唱」不夠清楚,
所以決定把條件描述得更清楚一些來試試看:

ChatGPT寫突破 6

哦哦,這邊看到了iHighest跟iLowest兩個函數,真是開心,
取區間最高價與最低價的部分沒問題了。
而且還有OrderClose,出場平倉也有寫出來了。

那你把整份程式碼複製貼到MQL4編輯器,然後按編譯,會沒辦法編過。
ChatGPT 突破 8

那這些error其實還好,就只是沒有宣告的問題而已,
我們可以手動幫它寫一下宣告就好。
但如果你是程式小白,連宣告是什麼都不知道,那這邊你就沒辦法使用了。

這次ChatGPT給的答案整體還不錯,
尤其是在下單條件部分使用 ticket < 0;
在平倉條件使用 ticket >= 0,並平倉完再把 ticket = -1,
來去控制場上只會有一張單的狀況,就不會下爆你的倉了。
(空單進場那邊它寫錯了,應該也是要ticket < 0)

但是這支程式碼會有問題是出在「止損價格」,
它把往上突破的buy單止損設定在最高價;往下跌破的sell單止損設定在最低價。
會造成止損設定的離進場價格太近,一進場幾乎馬上就會被止損出場的狀況。

看得出來,雖然整體邏輯還可以,
但整個程式碼中間有許許多多的小問題,
如果你不是懂得mql4的語法的人,大概也是沒辦法解決的。

 

寫壓縮型態

目前為止看起來,讓ChatGPT寫出能夠直接上的EA還是有點勉強的,
所以我們可以退而求其次,我們只請ChatGPT發想一些交易策略的寫法就好,
其他的下單平倉等細節,我們自己寫。

那以下是艾比請ChatGPT寫壓縮型態的策略程式碼:

ChatGPT 壓縮

 

在艾比自己的程式交易課堂上,也有提供壓縮型態的程式碼範例,
那艾比是透過觀察很多個指標,後來覺得使用布林通道最直觀,
我們來看看ChatGPT是如何「定義」壓縮的呢?

首先它在EA啟動前創造出一個陣列,
然後把前100根K棒的收盤價放進去(參數len = 100),
EA開始執行後,每當生成新的K棒時,就會去更新這個陣列,
維持在取前100根K棒的收盤價數值。

mean這個參數就是把這100根K棒的收盤價加起來,再除以100的平均值。

因為艾比的統計學沒有很好,所以中間那段
把每個價格與平均值的差,取平方後加總,再除以100這邊不知道在幹嘛,
但還好ChatGPT寫的程式碼大部分註釋都給得很清楚,它說這邊是在計算「標準差」。

艾比去查了一下標準差的算法,
對,沒錯,就是這樣算的。
最後我們可以看到,ChatGPT把這個標準差去跟一個閾值(threshold)做比較,
如果小於閾值,那就算是壓縮。

聽起來是一個滿 make sense 的交易策略耶!
用到很多數學、統計學,看起來就是高大上。
(其實只是因為艾比數學統計學很弱而已XD)

複製到mql4編輯器之後,
艾比把ChatGPT符合擠壓後是用Print打印在日誌的部分,
改成是一個bool的條件參數,如果擠壓成立,
那「擠壓」參數變成true;反之。

ChatGPT 壓縮2

那在下單的部分,
艾比使用的是跟課程布林通道擠壓的範例一樣,使用雙邊掛單的方式,
也就是行情產生壓縮之後,往哪邊噴出,就會進到該方向的單,同時取消另一邊掛單。
掛單價格放在20根K棒(隨便設定的)的區間高低點。
並與課程範例一樣,使用追蹤止損

ChatGPT 壓縮3

ChatGPT 壓縮4

隨手抓個USDJPY從近年2022開始回測,跑出來很可以!
而且只是調整了一下閾值(threshold)的數值而已,完全沒有經過優化。
也有測試了一些其他艾比常用的商品,就普普通通了,不過畢竟沒有優化過。

 

如果你看到這裡你很興奮,準備馬上拿程式碼直接去使用了,
請先等等。
這個策略程式碼它是從當根K棒(K棒第0根)下去做運算的,
而更穩定的策略會比較建議使用前一根K棒,也就是最新有確定收盤價格開始運算,
如此的回測結果也會更可靠。
所以要使用的同學,建議還是先在這個部分做修改再使用。

後續還可以修改成去看多根K棒的標準差,
如果都連續小於閾值,再符合為擠壓型態也會更make sense,
就像艾比的布林通道也不是只看一根K棒,而是連續看好幾根。

 

ChatGPT可以生成完整交易程式嗎?

從上面的兩個例子,雙均線交叉與突破範例來看,
要ChatGPT寫出完整EA的目前是不太可能的,
因為這兩個都是很簡單、很基礎的交易策略,但ChatGPT寫起來還是太多錯誤部分。

所以更好的方式是,在上一集文章中提到的,
我們可以請ChatGPT寫功能性的「函數」,來幫助我們更快的寫EA程式。

上一集我們測試ChatGPT寫MT4的函數幾乎可以百戰百勝,沒有錯誤,可以直接拿來使用。

延伸閱讀:
用ChatGPT自動來寫MT4/MT5的程式交易? EA工程師即將失業?!【ChatGPT第一集】

所以目前對於EA的工程師來說,
可以將發想到的部分功能請ChatGPT來寫出來,
再把答案套用回自己熟悉的程式碼版型中,來加快策略開發效率。

 

因為mql4(與mql5)是專門使用在MT4(與MT5)交易軟體的程式語法,
在世界上與網路上,算是比較小眾的程式語言,
所以ChatGPT在利用網路資料學習時,
自然沒有熱門語言(python、java、c語言等等)來得熟練,
所以給出的答案只能是比較簡單的,而較複雜或長度太長的程式碼就會有錯誤在其中。

但這是因為目前ChatGPT是封閉沒有聯網的,
相信如果在未來不久,ChatGPT可以再次公開的在網路上學習,
這種程式碼答案的錯誤會逐漸被攻克。

 

如果你有用ChatGPT玩出什麼有趣好笑的對話,
歡迎在下方留給艾比笑一下XD

延伸閱讀:
我找到讓ChatGPT寫出完整程式交易策略的方法了!各個擊破法【ChatGPT第三集】

 

👇投資自己的腦袋:

外匯保證金MT4/MT5新手村全修班(線上課程)

MT4/MT5程式交易(EA)語法撰寫實戰班(兩日實體+線上)

2 thoughts on “請ChatGPT寫出完整交易策略,它能寫出更長的MT4程式碼嗎?【ChatGPT第二集】

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *