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

ChatGPT簡介

ChatGPT是什麼?

ChatGPT是由OpenAI公司所開發的一個人工智能系統(AI),
是一個可以讓使用者輸入問題,他來回答的聊天機器人。

那聊天機器人在過去幾年中,網路上也都時不時都有,
但跟以往的聊天機器人不同,
他是專門依照人類語言溝通的方式訓練的AI(自然語言處理)
所以你跟他對話起來,對話的體驗感是大幅上升一個維度的。

而他學習了在公開網路上成千上萬的知識,
所以幾乎可以面對任何領域的使用者,所提出的問題都能夠回答。
當然一些比較敏感或爭議性的問題有被OpenAI公司刻意屏蔽。

從去年底,2022年11月30日公開發布起,就造成全網轟動,
網路上許多大神用ChatGPT來創作出賺錢的文案、完整劇情的短影片等等,都讓人驚艷。

而我們在電影中看到鋼鐵人跟他的AI語音助理Jarvis那樣自然的對話,
並且可以幫鋼鐵人處理各式各樣的問題,
ChatGPT就是Jarvis的雛型,
艾比相信在未來幾年內,我們每個人都會有一位像Jarvis的私人虛擬助理。

如果你還沒開始用ChatGPT,那一定要開一個帳號去體驗看看。

https://openai.com/blog/chatgpt/

ChatGPT使用

順帶一提, OpenAI的創始人是伊隆·馬斯克,
那個超狂的男人。

 

聊天機器人有什麼新功能?

你一定會納悶說:
不就一個聊天機器人,能有多厲害?怎麼網路上講得好像要顛覆世界一樣?

因為他的功能遠遠超過聊天。

以下艾比就示範幾個常見的功能:

1.寫文章、寫小說、寫詩、寫歌詞

ChatGPT1

 

請ChatGPT寫比較長的文章時,
常常會遇到寫一半斷掉、他人消失的狀況,
此時請他繼續就可以了。

 

ChatGPT1 1

 

ChatGPT1 2

 

之前大家一直認為機器人會取代社會中的勞力工作,
但目前看起來,可能連創作工作都會不保(哈哈。

 

2. 想主題、列大綱

ChatGPT2

這根本就是靈感量產機,
如果創作者在創作時遇到沒靈感不知道要做什麼內容,
就可以請ChatGPT幫你列出幾十幾百個。

雖然他給出的答案都很中規中矩,而現在的創作者很要求個人特色,
但實在是不失為一個發想靈感的輕鬆方式。
如果你有創作需求,不妨來奴役他看看(邪惡的笑

 

3. 寫功能信件

ChatGPT3 1

ChatGPT3 2

 

ChatGPT很強的是你還可以要求他的寫作風格,
這是以往傳統聊天機器人辦不到的,
同樣的內容,你可以叫他用各種不同風格寫一次給你。

當然你還可以請他幫你寫情書,
你提供ChatGPT一些對方的特質,讓他幫你寫出符合對方口味的情書。

 

4. 虛擬助理、虛擬客服、虛擬情人

ChatGPT4

 

你可以問他各種問題,
有必要可以進一步訓練他,讓他能客製化回答你公司的問題,
串接在你自己的用戶窗口,就直接化身虛擬客服。

也可以化身為你的虛擬秘密情人…哇!超宅的!

ChatGPT4 1

 

小心未來網路上的情感詐騙,
真面目也不是一個肥宅,而只是一隻程式了。
(我寧願選程式)

 

5. 寫Excel公式

ChatGPT5

ChatGPT5 1

 

眾所周知,Excel中可以使用各種公式跟VBA的程式語法,
但是像艾比這樣對於VBA不熟悉的人,要自己寫出來就很困難,
而ChatGPT超方便的是,你只要提供給他你想要達成的功能,
他就能馬上幫你生出來公式的程式碼。

所以從這邊開始我們可以看到,
ChatGPT對於寫「功能性」的程式碼,是非常在行的,
接著我們就來看看,他有多厲害、能夠寫那些語言的程式碼。

 

6. 寫程式碼

以下是請ChatGPT寫Python程式碼。
直接叫他寫一個猜拳遊戲,
猜拳遊戲是Python初學者應該都會練習到的一個基本功,
使用者可以透過終端輸入數字(分別代表剪刀、石頭、布),
然後程式會隨機從三個數字中生成一個,來跟使用者猜拳。

ChatGPT6 1

ChatGPT6 2

 

把程式碼直接複製到Python的IDE當中去跑,
跑出來超完美。

接下來試試看寫java程式碼:

ChatGPT6 3-java

 

不過艾比不會寫java語法,也沒有IDE去執行,
不確定他寫的功能會不會正常運作,
但大致看起來沒什麼問題。

 

下面這個是期貨程式交易MultiCharts 的語法,
給ChatGPT一個策略,讓他直接寫出來:

ChatGPT6 4

 

到這裡,大家應該看得出來,
ChatGPT寫程式碼真的是一流,
只要給他短短的一段敘述、加上使用哪種語法,
幾乎沒有寫不出來的程式。

那這樣一個超酷的功能,
到底是會擊落工程師?還是幫助工程師裝上一對翅膀呢?
這個部分我們在底下再來討論。

那我們這個部落格的是針對MT4與MT5的EA程式交易,
使用的是mql4與mql5的語法,
接下來我們就來試試看,請ChatGPT來寫EA,寫起來是如何呢?

 

ChatGPT寫EA

在寫程式的時候,大部分的「功能」都可以寫成函數,
在主程式碼中呼叫這個函數就可以使用該功能。

所以其實我們可以請ChatGPT把我們想要的每個小功能函數寫出來,
再去呼叫使用。

當然我們也會來對ChatGPT做壓力測試,
看看他能不能直接寫出完整能交易的EA。

寫MQL4

首先,請ChatGPT寫一個計算場上現在有幾張多單的函數:

ChatGPT MT4 1

 

以上ChatGPT回答的程式碼是完全正確的,
你複製到你的MQL4編輯器當中是就可以直接使用的。

其實艾比測試過ChatGPT這個相同的問題不只一次,
雖然之前也會寫出完整的程式碼給我,但整體比較簡短,

而這一次測試時,很驚豔的是他不只寫出程式碼,
還告訴我在主程式碼當中要如何呼叫這個函數,並且跟我解釋範例中12345的意思,
真的發自內心的覺得好厲害!

 

再來我們看一下,請ChatGPT寫一個時間到下午四點時平倉的函數:

ChatGPT MT4 2

 

他寫出的這串代碼,一樣直接複製到MQL4編輯器中編譯後回測,
也是完全可以使用的。
ChatGPT MT4 2 2

 

那以上示範都是功能性的函數,並且是屬於比較簡單的,
接下來我們來看一下,
如果請ChatGPT發想一些交易策略,他會回答什麼:

ChatGPT MT4 3

 

請ChatGPT幫我們想一個策略來區分盤整跟趨勢行情,
他給出的是用「兩條均線」來判斷上升趨勢或下降趨勢,
然後兩條均線相等時是盤整。

自己有在開發交易策略的就知道,
要兩條均線相等是多麼困難的事情好不好!
盤整時均線的表現就是糾纏而已啦,不可能會到相等。

所以如同他最後說的:「這只是一個示範性的程式碼」,
能不能使用還是要看交易員的sense。

不過像這種開放性的問題,
其實在ChatGPT裡面,你不同時間點問他可能都會得到不同答案,
甚至不同人問也會得到不同答案(笑。

像艾比有位學員也是問ChatGPT這個問題,
可是他的ChatGPT回答他的答案,就是艾比自己有使用的高低點加上ATR的濾網,
這個答案就超有sense,得到這種回答完全就是賺到了。

高低點加上ATR的濾網,之前文章也有分享過。
延伸閱讀:
KD鈍化舊策略加上新濾網變得更神奇了!

 

寫MQL5

ChatGPT在寫MQL4的語法時,基本上都是正確的,
所以可以直接通過編譯使用在MT4當中。

可是MT5使用的語法是MQL5,它雖然邏輯跟MT4是99.9%一樣,
但在很多內建語法使用時,名稱寫法跟MT4就完全不一樣。

 

那我們接下來來看看ChatGPT是否也能寫出MT5的語法:

ChatGPT MT5 1

 

如果你直接複製ChatGPT給的程式碼到MT5的EA編輯器的話,
你會發現內建函數它都沒有變色(所以不是MQL5的內建函數),
按編譯後根本全部都是錯誤,沒辦法通過編譯。

ChatGPT MT5 2

第一個,MT5的場上訂單應該是PositionsTotal()而不是OrdersTotal(),
OrdersTotal()是MT4的寫法;

第二個,MT4當中才需要先用OrderSelect來選擇訂單,MT5不用,
所以也不存在後面的SELECT_BY_POS, MODE_TRADES等的語法。

再來,選擇交易訂單的屬性也不是簡單的OrderMagicNumber這樣的寫法,
而是全部都換成PositionGetInteger這樣的抓取訂單特性寫法。

總之看起來就是ChatGPT只會寫MT4哈哈哈。

但可怕的是,我指定他幫我寫MQL5的寫法,
他卻一本正經的提供我MQL4,
我跟他說他寫的是錯的,他承認錯誤後立刻給我一個新的寫法,
但是依然是MQL4啊啊啊啊。

 

好,那我們來換個題目讓ChatGPT再寫看看MQL5的語法,
一樣我們請他寫一個時間到下午四點時平倉的函數:

ChatGPT MT5 3

 

他又很一本正經的跟我說,MQL5程式碼如下….

我們可以看到,在for迴圈中跟剛剛提到的問題一樣,
他依然使用OrdersTotal()、OrderSelect、OrderMagicNumber等這些只能用在MT4的語法。

除此之外MQL5在調用時間的語法,也不能直接寫Hour()跟Minute(),
所以這次ChatGPT提供的答案,依然無法直接使用在MT5的EA當中。

 

這樣看起來,對MT5的使用者來說可能就沒MT4使用者高興了,
ChatGPT幾乎可以提供正確的MT4語法,
但使用MT5的同學目前可能還是要靠自己(或是靠艾比哈哈)。

原因可能是因為在網路上還是以MQL4的資料居多,
並且ChatGPT目前沒有聯網,他學習的資料只有到2021年第四季,
所以也沒辦法為使用者即時的去線上查詢MQL5的語法。

但相信未來會推出能夠聯網的ChatGPT(或類似的),
到時請ChatGPT幫忙寫MT5程式碼應該也沒問題的。

 

ChatGPT目前可以取代工程師嗎?

目前(2023/2)是沒辦法的。原因有二:

一,ChatGPT會用肯定語氣給出錯誤答案

其實透過上面的幾個請ChatGPT寫程式的例子我們就可得知,
如果使用者是不懂程式碼的人,直接使用ChatGPT給出的答案程式碼是有風險的。
即使他的正確率很高,
但一旦有錯誤時,還是要靠工程師才能揪出錯誤,並去人工修改,
所以懂程式碼的工程師還是需要的。

二,內行人才能講出好咒語

從畫圖AI到語言AI(ChatGPT),都是透過使用者輸入特定文字當作指令,
而要精準的寫出該功能的程式碼,也是要懂得人才能下出指令,
不懂的人應該連要請ChatGPT寫什麼功能都講不出來,
所以目前還沒有簡單到可以讓外行小白來直接讓ChatGPT變出能用的程式。

 

所以目前ChatGPT還不會擊落工程師,反而是幫助工程師裝上一對翅膀!

懂程式碼的工程師可以大幅減少coding時間,
可以直接把想要的功能請ChatGPT幾秒鐘來寫出來,
再檢查看有沒有錯誤、或是去IDE編譯後看有沒有error。

或是像艾比這樣非理工背景出生的寫程式者,
很多時候燒腦的是去想程式碼的邏輯要怎麼呈現,例如迴圈、陣列等…
現在有了ChatGPT,我就不用在慢慢去想邏輯怎麼寫,直接請他寫就好,
在這部分,不得不說ChatGPT是更輕鬆的。

應該所有工程師都要去跟ChatGPT當好朋友!

 

ChatGPT寫出完整的EA

在這一篇我們已經看過很多ChatGPT寫出的程式碼,
相信大家都更想知道,
ChatGPT是否可以透過對他講出需求,他就直接幫我們寫出完整EA?

下一篇文章,艾比將來測試看看,
用ChatGPT寫出有完整進出場的EA,並且來回測看看結果如何!

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

或是也可以直接跳到ChatGPT系列的第三集,
看看艾比找到的,正確使用ChatGPT寫出完整交易程式的方法。

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

 

👇投資自己的腦袋:

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

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

 

發佈留言

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