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

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

ChatGPT能寫出程式交易嗎?

在ChatGPT系列的前兩集有講到,
目前要使用ChatGPT寫出完整的交易策略EA還是很困難的,
其中的各種錯誤太多,
而程式新手對語法的理解還不深、可能沒辦法解決所有的錯誤。

延伸閱讀:
用ChatGPT自動來寫MT4/MT5的程式交易? EA工程師即將失業?!【ChatGPT第一集】
請ChatGPT寫出完整交易策略,它能寫出更長的MT4程式碼嗎?【ChatGPT第二集】

而艾比在近期的EA教學課程當中,為了要教學員如何使用ChatGPT,
突然領悟到要使用ChatGPT這個工具的正確方式。

透過這樣正確的方式,
我自己只寫了整支EA的1%程式碼,而且是無關緊要的部分;
其他99%都完全靠「出一張嘴」的方式,命令ChatGPT寫出來的。

程式交易員接下來真的可以進入動口不動手、史上最快速寫出EA的境界了。
然後我們就可以更快的去回測到某個交易策略,
去知道一個策略賺不賺錢?能不能使用了。

 

怎樣才是完整程式交易策略?

首先,我們要先釐清的定義是:
「怎樣的策略才算是『完整的』交易策略?」

那艾比這邊的定義就是:
有「進場+出場」,就是完整的交易策略。

這是最基本的所謂的一個完整交易的兩個步驟:進場與出場,
一個交易不會只有進場沒有出場;或是沒有進場只有出場,
一進一出才能構成完整的交易循環。

那當然交易策略還會包含很多其他的內容,進而變成更完整的交易系統,
例如:
如何設定止損盈利?、如何加減碼?放在什麼商品與時區?
進一步再到策略與策略間的相關性高低?
策略與帳戶之間的資金風險控制、要多大的曝顯?等等…

但以上都不包含在本文的所謂的完整交易策略中,
今天的目標就是使用ChatGPT製作出包含「進場+出場」的EA。

先求有再求好。

 

ChatGPT寫出完整程式交易

各個擊破法

明確了「進場+出場」的概念之後,我們再去細分EA要包含的內容。
我們不會希望說只有進場+出場,也就是沒理由的進場之後,馬上又沒理由的出場。

所以實際上會是需要:
1.進場條件、2.進場的動作、
3.出場條件、4.出場的動作,以上這四個功能。

我們在這邊更加釐清了每個需要的「小區塊」,
我們接下來要做的就是讓ChatGPT寫出以上四個小區塊的程式碼,
我們再自行把它們組裝在一起。

這個概念是在演算法當中用來解決問題的方式,
英文叫做「divide and conquer」
顧名思義就是把一個大問題分割成多個較小的子問題,進行分別解決,
最終將子問題的解合併起來得到整個問題的解。
用中文來說,就是「各個擊破」。

而因為小的問題好解決,
如同我們在ChatGPT系列文章中的前兩集有講到:
ChatGPT寫一個簡單函數的正確機率非常高、幾乎可以直接使用。

所以我們就把完整EA拆分成上面提到的四個簡單函數,
就能夠用最高正確機率的ChatGPT答案,進而不用修改什麼的最快速度
生出完整的程式交易EA。

 

進場下單

首先,我們先來要求ChatGPT生出進場下單的函數,
並且為了不要一旦符合條件之後,就瘋狂的一直打單進去,
所以給它一個要求限制,
就是場上沒有多單才會進多單;場上沒有空單才會進空單。

然後ChatGPT快速給出了以下函數:

ChatGPT3 進場函數1

MT4下單的函數OrderSend是一個很簡單的函數,所以不太會有問題,
而且在ChatGPT下方的說明中,還會跟你解釋OrderSend第一個參數是交易品種、第二個參數是交易類型等等…算是還教你一些使用知識。

那在一開始判斷場上有沒有單的時候,它使用了一個函數叫做「MarketPosition()」,
說這個函數可以判斷持倉狀態,
我驚訝了一下,想說竟然還有這樣的函數我不知道嗎?

結果,我把ChatGPT的程式碼貼到編輯器之後按編譯,
哈,根本就沒有這個內建函數、MQL4或MQL5都沒有這個函數喔,
ChatGPT又在一本正經的胡說八道了!
後來google了一下才知道MarketPosition()是Multicharts的語法。

所以這邊就再指定給它說請不要使用MarketPosition(),
請它在重寫一個:

ChatGPT3 進場函數2

第二次寫出來的程式碼就很好了,
直接貼入編輯器當中,可以直接編譯成功。

細看語法也沒有問題,
就是標準的用迴圈掃描場上、再用OrderSelect來選擇交易單,
如果沒有單,它的自創函數hasPosition就會是false,進而才能夠下單。

所以,在這邊我們請ChatGPT寫出「進場的動作」的任務成功!
多單進場跟空單進場的動作兩個函數都完成!

接下來我們就往下一步,進出場的條件來邁進。

 

交易條件

這次的交易條件使用的是近期的EA教學實體課當中,
有學員問我的一個寫法,
其實就是著名的K線組合的「酒田戰法」,當中的三連陽。

那對於程式邏輯概念不熟悉的新熟來說,
要學會for迴圈怎麼使用,是要花一些時間理解的,
而艾比其實一直提倡的是程式交易應該著重在交易上面,而不是程式功力多強大。

所以對於你只想把連續三根K棒上漲寫出來的新手,
最快的方式就是一根一根K棒寫收盤價>開盤價即可,也用不了5分鐘。

可是今天我們有了ChatGPT(握拳),寫個迴圈出來只要出一張嘴就可以了~

那就給了咒語,請ChatGPT使用迴圈寫出連續三根K棒收盤價都>開盤價的函數,
這邊沒有特別指定用MQL4,是因為前面有要求過了,它會繼續記得你的需求。

ChatGPT3 連續三根K棒

ChatGPT使用for迴圈去算前1~3根K棒的收盤價與開盤價,
如果收盤價>開盤價,記數的count就+1,
所以如果count等於3,就代表連續三根K棒都是上漲的K棒,
此函數就會回傳true、代表成立;否則就會是false。

真的是10秒鐘就完成了多單進場條件的函數,
沒寫到一個程式碼、沒有學怎麼使用for迴圈結構,
就完成了以往新手可能要花好幾天才能學會寫得出來的功能。

ChatGPT的魅力此時真是不可限量。

連續三根K棒上漲作為多單的進場條件,
反過來我們使用連續三根K棒下跌當作空單的條件。
這個很簡單,
我們只要將上面ChatGPT給出的函數當中的「close > open」
改為「close < open」就完事了。

所以在這一趴,我們輕鬆得到了多空單的進場條件,
那出場條件呢?

這支EA我們使用「反向出場」的方式,也就是「多空對翻」,
意思就是連續三根K棒上漲不只是多單的進場,同時也是空單的出場條件;
反之,連續三根K棒下跌是空單進場條件,也是多單的出場條件。

這邊我們就完成了「進場條件」+「出場條件」的設定囉。

 

出場平倉

最後一個部分,出場的動作,也就是平倉,
基本上咒語跟程式碼的結構都與進場類似。
所以我們這邊直接請他寫多單平倉與空單平倉的函數,
並提醒它不要使用MarketPosition():

ChatGPT3 平倉函數

ChatGPT只用了幾秒快速地完成,
複製程式碼貼入編輯器編譯,也可以成功通過,沒有error。

基本上編譯沒有問題,就可以進入回測了,
回測時我們才會知道到底實際的「功能」是否能正確執行,
如果回測發現功能有誤、或是跟預期策略動作不同,
會再回來檢查程式碼的細部內容。

在這一部分,我們透過ChatGPT得到了多單與空單出場的動作。

所以我們四個功能的程式碼都有了:
1.進場條件、2.進場的動作、
3.出場條件、4.出場的動作。
接下來就只要把它們組裝起來就形成一隻完整的交易程式EA了。

 

最後組裝

最後我們回到程式執行區OnTick當中,
使用簡單的if語法,也就是如果…就…的方式來組裝起來我們的所有函數。

如果[連續三根K棒上漲],就執行[進場多單]與[空單平倉];
如果[連續三根K棒下跌],就執行[進場空單]與[多單平倉]。

ChatGPT3 組合ontick

你沒有看錯,就這樣簡單的兩行,就寫完了我們的EA。
基本上我們就只有寫兩個if而已,
其他的所有功能,都是由ChatGPT產生出來的。

完成EA之後,我們要做的就是去回測看看,
看交易單的進出場,是不是按照我們預想的交易策略在執行?

ChatGPT3 回測

透過視覺化的複盤顯示,我們可以看到:
多單的進場都是在連續三根K棒上漲,同時空單平倉出場;
然後出場在連續三根K棒下跌時,並同時進場空單,
與艾比一開始要求的交易策略吻合。

那這裡我們只有規定連續三根K棒上漲或下跌,
沒有去限定K棒的身體多長?、上下影線多長?等等…
那這些條件,你只要能夠明確的寫給ChatGPT,讓它寫出來絕不是問題。

 

ChatGPT正確用法總結

很多人覺得ChatGPT沒有用,是因為一次要它做出從頭到尾的完整事情,
但AI目前還沒有那麼聰明到能夠取代人類,所以許多回答比較鬆散,相對有漏洞。

但絕對是非常好用的「工具」與「幫手」,
我們請AI幫我們生出各個小零件,再由人類去組裝,
就能大幅提升我們的工作效率。

所以要使用「ChatGPT正確用法」的人,
他要能夠知道:「如何把一個大的問題,去切割成一個一個的小問題」,
這件事就會是各個擊破方法的關鍵。

那這樣的能力除了平時自身多訓練自己的獨立思考能力之外,
還有「稍微擁有」某個專業領域的知識,
你可以不用厲害到專業領域中的執行技能,但你必須對該領域「有概念」。

所以老實說,ChatGPT能夠發揮最大效益的是在「半吊子」的身上
因為專業技能很強的人,他其實不需要ChatGPT的協助就可以做出專業的事情;
完全不懂專業技能的人,也不知道如何正確使用ChatGPT。

而半吊子,他沒有投入很多時間在研究專業,但卻可以受到ChatGPT很大幫助,
就是CP值最高的使用者!

「divide and conquer」

 

延伸閱讀:
用ChatGPT自動來寫MT4/MT5的程式交易? EA工程師即將失業?!【ChatGPT第一集】
請ChatGPT寫出完整交易策略,它能寫出更長的MT4程式碼嗎?【ChatGPT第二集】

 

👇投資自己的腦袋:

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

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

艾比曾經有一段時間對交易很迷茫
因為聽到了一個說法
說做投資交易的人是對社會「沒有貢獻」的

的確

因為靠投資交易賺來的錢
並不是靠勞動或是付出什麼而得到的
而是靠著在市場當中別人的輸錢而得來的

為什麼要做著對世界沒有幫助的事情
「我是不是應該轉行?」
「我是不是應該去找一份能對社會有貢獻的職業?」

在那段時間艾比一直在思考交易的意義
面對跟交易有關的一切事情
都快樂不起來
因為我覺得自己竟然成為了一個「沒用的人」

後來在一本書當中
學習到了金融的本質,也了解到了金融的意義

--------

人都會生老死,因此有了和其他人做跨期交換的需求
➡金融的本質就是「價值的跨期交換」

人活著的基本行為是在做👉「規避風險」

從東西方早期的文化可以看出規避風險的兩個極端

【東方-儒家文化】

使用「人」當作規避風險的手段
「養兒防老」是儒家文化的出發點

重男輕女
因為男生娶老婆進門,才會是自己家的人
為這個家能夠付出勞力,長輩老了之後照顧長輩

家族婚姻
兒女沒有自由選擇婚姻的權利
因為情感的自由遠不及家族的利益來得重要

傳統社會沒有個人自由 → 自由選擇和養兒防老是不相容的

一個社會越是以「人」為金融、避險工具
就越依戀血緣這種原始因素

【西方-資本主義】

金融市場發達、有豐富的金融工具
透過保險、投資等規劃
不需用養兒防老當作生老病死風險的唯一安排

👉人們可以更自由的安排想要的生活方式

(在中國受儒家文化影響越深的地區,買保險的人口比就越低)

相較於華人重視血緣、傳子不傳賢
歐美更多願意領養小孩
在政府與公司等也能夠讓真正有能力的人來做事

--------

艾比以前剛踏入交易市場時
跟大部分的人一樣
只想要多增加一些收入來讓自己的生活過得更好

但後來開始開設課程收學生
全部的生活都是跟交易相關的
專職從事這些工作

讓我開始思考在賺錢之外,做這些事情的意義

開始去了解為什麼世界會發展出金融?
金融市場帶給世界的幫助又是什麼?

從早期發展出的證券市場
到期貨、選擇權這些衍伸性金融商品
股市、房市、匯市等等
不只是投資者在其中可以獲取財富
而都是有其存在的價值與意義的

理解了之後
艾比對於交易是對社會「沒有貢獻」的這個觀念
就徹底改觀了

這本書是「**耶魯最受歡迎的金融通識課**」
作者陳志武是耶魯大學管理學院金融學教授
雖然是中國湖南人
但對於東西方金融市場分析的非常精闢在理

是一本艾比非常推薦、值得一讀的好書

💬IG留言「金融」
艾比就私訊送給你超過萬字的讀書心得整理
看完覺得收穫滿滿

讓你即使沒有時間看完整本
也可以快速吸收到精華喔

🔔關注@mt4mt5 學習更多交易知識
艾比曾經有一段時間對交易很迷茫 因為聽到了一個說法 說做投資交易的人是對社會「沒有貢獻」的 的確 因為靠投資交易賺來的錢 並不是靠勞動或是付出什麼而得到的 而是靠著在市場當中別人的輸錢而得來的 為什麼要做著對世界沒有幫助的事情 「我是不是應該轉行?」 「我是不是應該去找一份能對社會有貢獻的職業?」 在那段時間艾比一直在思考交易的意義 面對跟交易有關的一切事情 都快樂不起來 因為我覺得自己竟然成為了一個「沒用的人」 後來在一本書當中 學習到了金融的本質,也了解到了金融的意義 -------- 人都會生老死,因此有了和其他人做跨期交換的需求 ➡金融的本質就是「價值的跨期交換」 人活著的基本行為是在做👉「規避風險」 從東西方早期的文化可以看出規避風險的兩個極端 【東方-儒家文化】 使用「人」當作規避風險的手段 「養兒防老」是儒家文化的出發點 重男輕女 因為男生娶老婆進門,才會是自己家的人 為這個家能夠付出勞力,長輩老了之後照顧長輩 家族婚姻 兒女沒有自由選擇婚姻的權利 因為情感的自由遠不及家族的利益來得重要 傳統社會沒有個人自由 → 自由選擇和養兒防老是不相容的 一個社會越是以「人」為金融、避險工具 就越依戀血緣這種原始因素 【西方-資本主義】 金融市場發達、有豐富的金融工具 透過保險、投資等規劃 不需用養兒防老當作生老病死風險的唯一安排 👉人們可以更自由的安排想要的生活方式 (在中國受儒家文化影響越深的地區,買保險的人口比就越低) 相較於華人重視血緣、傳子不傳賢 歐美更多願意領養小孩 在政府與公司等也能夠讓真正有能力的人來做事 -------- 艾比以前剛踏入交易市場時 跟大部分的人一樣 只想要多增加一些收入來讓自己的生活過得更好 但後來開始開設課程收學生 全部的生活都是跟交易相關的 專職從事這些工作 讓我開始思考在賺錢之外,做這些事情的意義 開始去了解為什麼世界會發展出金融? 金融市場帶給世界的幫助又是什麼? 從早期發展出的證券市場 到期貨、選擇權這些衍伸性金融商品 股市、房市、匯市等等 不只是投資者在其中可以獲取財富 而都是有其存在的價值與意義的 理解了之後 艾比對於交易是對社會「沒有貢獻」的這個觀念 就徹底改觀了 這本書是「**耶魯最受歡迎的金融通識課**」 作者陳志武是耶魯大學管理學院金融學教授 雖然是中國湖南人 但對於東西方金融市場分析的非常精闢在理 是一本艾比非常推薦、值得一讀的好書 💬IG留言「金融」 艾比就私訊送給你超過萬字的讀書心得整理 看完覺得收穫滿滿 讓你即使沒有時間看完整本 也可以快速吸收到精華喔 🔔關注@mt4mt5 學習更多交易知識

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

  1. Edi 說:

    有收到謝謝 艾比, 想再請教在第三集這篇的內容按照你1.進場條件、2.進場的動作、3.出場條件、4.出場的動作四個動作的代碼去跑回測卻沒有做出開單動作,能用郵件交流我這邊遇到的問題嗎?

發佈留言

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