自OpenAI 推出ChatGPT後,編寫交易策略變得比以往更加容易。過去學習編寫運用Multicharts及Amibroker編寫策略時需要先熟背大量的語法,但現在ChatGPT可以替你在短時間內完成編寫策略,而且更可用中文給它指令,甚至可直接做回測。
雖目前ChatGPT的數據只到2021年,但相信不久的將來數據會更新,而且更可以有實時數據。
現在學習Multicharts及Amibroker重點只需學習語法的基本原理,然後策略由ChatGPT編寫,有了結果後可直接Copy到Multicharts及Amibroker使用,可以做回測及優化。
但當然,ChatGPT編寫的策略仍需要有基本語法知識去驗證是否有錯誤,但學習的過程相信會比以往變得更容易。我們會將大量的策略給大家示範,除了基本運用技術指標組合,還包括波浪理論、Pair Trade方法、又或看重磅股炒期指的策略等,而且包括了港股、美股、期指、美期、槓桿ETF等。
先看看ChatGPT寫出來的策略結果,再從大量練習中學習如何驗證ChatGPT寫的結果有否錯漏。過去可能需要半年或一年的時間才能有足夠的經驗去運用程式,但現在相信只需要一個月的時間便能熟習Multicharts及Amibroker,再透過我們給學員的Plug-in便能連接SP Trader、富途牛牛、Webull(微牛證券)等進行全自動交易。
————————————————————————————————————————————————————————————————
如何免VPN及海外電話也能用ChatGPT
用ChatGPT寫Multicharts的power language確實十分方便,除了可讓新手學習得更快,當你用multicharts寫好一個策略後,更可問ChatGPT給你修改的意見,但新手註冊ChatGPT時總覺得很「麻煩」﹕因為除了需要海外電話收SMS外,又要用VPN,但其實現在已十分方便﹕因為只要download POE 這個app , 選ChatGPT 照樣可用來寫Multicharts Power language.
__________________________________________________________________________________________________________________________________________________
ChatGPT 運用外掛可使用2021年後資料
首先大家要明白,ChatGPT能夠寫Multicharts的語言其實只是因為它能在網上搜尋資料,網上有關Mulitcharts Powerlanguage的教學根本很多,ChatGPT能迅速翻譯及整合這些資料給用家答案。不過,相信不少用戶也聽過,OpenAI 刻意將 ChatGPT 的檢索資料庫限制在 2021 年以前的資料,所以大家可能會發現,Multicharts有些用法又好像有點不同。
2020年6月Multicharts 14 Beta 版(測試版)才推出,正式推出 Multicharts 14這個版本是在2021年左右,若有些交易策略是其他炒家在2021年之後在網上發佈的,則ChatGPT便有可能搜尋不到。
不過,其實是有方法突破這個限制的,我們可以透過 Chrome 或Firefox 這兩款瀏覽器的外掛程式,讓 ChatGPT 聊天機器人也可以簡單檢索整理 Google 搜尋到的最新資料內容。
首先大家要下載一個下載名為「WebChatGPT: ChatGPT with internet access」的外掛
如使用Chrome,可到以下連結下載:
如使用Firefox,則可到以下連結下載:
安裝時會像其他外掛一樣先有一個「警告」,但點擊「允許此擴充套件於隱私瀏覽視窗中執行」便可以。成功安裝後便可看到ChatGPT的底部新增了一個部份,可以看到可選「Any Time」及「Any Region」。但實測是,ChatGPT可以搜尋到部份2021年後的資料,至少在協助寫Multicharts 語法時會好一點,但若要用ChatGPT直接為策略做Backtest則仍未做到。
___________________________________________________________________________________________________________________________________________________
ChatGPT與Multicharts共同使用的竅門
筆者發現不少人最常會直接叫ChatGPT設計一個投資組合,這樣做其實根本沒有任何意思,例如大家可試試:
「請在港股、美股、日股市場中挑選5隻值得長期持有的股票」
ChatGPT選出了長和(00001)、騰訊(00700)、Apple(US:AAPL)、Amazon(US:AMZN)及住友化學(T:3401)。
再問他是用什麼準則選股,ChatGPT的答案是基本面、行業前景、投資價值及技術分析。
但若再問他技術分析的部分用了那個技術指標,其實它的答案十分含糊。而且這種選股方式應大部份炒家也不會滿意。
不過,若用ChatGPT來修改你用Multicharts或Amibroker的策略則會更好。把已寫好的策略問它意見,究竟有那個部份值得修改,它自動會給你答案,而且會用Multicharts 的語法寫出來,雖然有些語法ChatGPT會寫錯,但再自行更改也肯定比全部要自已寫更方便。
假設筆者要寫以下分三注炒期指的策略:
- 當10日平均線高於20日平均線買入1張期指
- 若入市後價格高於入市價50點會再買入1張期指(第二注)
- 若入市後價格高於入市價達100點則會再買入1張期指(第三注)
- 若最低價創最近五支陰陽燭的新低便平倉。
Multicharts 語法:
inputs: Price( Close ), FastLength( 10 ), SlowLength( 20 ) ;
variables: ma1( 0 ), ma2( 0 ) ;
ma1 = AverageFC( Price, FastLength ) ;
ma2 = AverageFC( Price, SlowLength ) ;
If marketposition = 0 and ma1 cross over ma2 then buy 1 contracts next bar at market;
If marketposition = 1 and currentcontracts = 1 then buy 1 contracts next bar at entryprice +50 stop ;
If marketposition = 1 and currentcontracts = 2 then buy 1 contracts next bar at entryprice +100 stop ;
If marketposition = 1 then sell next bar at lowest (low,5) stop ;
只是簡單的輸入整段語法,還未問任何問題,ChatGPT已立即有反應,而且立即提供解釋及教學:
再問它:「這個策略如何可改得更好?」
它確實能立即提出一些修改策略的意見,而且這些意見會比直接要它推介股票更有用,即使是較複雜的策略,它也可以給多中肯的建議。
然後可以再問它:「請用Multicharts 的Power Language寫出你的建議」
ChatGPT能直接用Multicharts 的Power Language寫一個修改後的版本:
以下便是它的修改版本:
以下是使用Multicharts的Power Language编写的一个简单的均线交易策略:
inputs:
Price(Close),
FastLength(10),
SlowLength(20),
StopLossPoints(50),
MaxContracts(2);
variables:
ma1(0),
ma2(0),
buyContracts(0);
ma1 = AverageFC(Price, FastLength);
ma2 = AverageFC(Price, SlowLength);
if marketposition = 0 and ma1 > ma2 then
begin
buyContracts = 1;
buy(buyContracts) next bar at market;
end
else if marketposition > 0 and buyContracts < MaxContracts then
begin
buyContracts = buyContracts + 1;
buy(buyContracts) next bar at entryprice + StopLossPoints stop;
end;
if marketposition > 0 then
sell next bar at lowest(low, 5) stop;
“`
而且ChatGPT還會提供中文解釋:
「該策略通過計算快速和慢速移動平均線之間的交叉來進行交易決策。
當快線上穿慢線時,產生買入信號;當已經持有頭寸時,可以通過添加止損來控制風險;當市場處於多頭狀態時,可以通過止損來保護利潤。
在代碼中,我們還添加了一些變數和參數,例如StopLossPoints表示每個合約的止損點數,MaxContracts表示最多可以持有的合約數。此外,我們還對代碼進行了一些注釋,以方便理解。需要注意的是,這只是一個簡單的交易策略,不能保證一定盈利,還需要根據實際情況進行調整和優化。建議在模擬帳戶中進行測試和驗證,以便更好地瞭解其性能和風險。」
大家會發現,用這種方法得到的答案,比直接要ChatGPT選股及提供選股準則更有效。
當日後要寫自己設計的策略時,先用ChatGPT逐小部份寫出來,若已對Multicharts的Power Language有基本認識,很容易便能察覺有那部份會寫錯,然後把每個小部份組織成整個策略。
最後便是把整個策略給ChatGPT再修改及給予意見,這樣只要你有Power Language的基本認識已能做到,比過去要背誦大量的Power Language語法方便得多。
此外,筆者曾嘗試要ChatGPT為策略進行回測(backtest),大家可以看到它確實能夠做到,但數據只在2021年前,若ChatGPT日後能運用最新的數據,相信用Power Language語法寫好策略後,根本便不需要Multicharts,直接可用ChatGPT做回測。
__________________________________________________________________________________________________________________________________
若與Multicharts 配合運用需要GPT4嗎 ?
2023年3月OpenAI正式推出了GPT-4,相信大家在網上也隨意找有關GPT-4的新功能,主要就是可以不只用文字對話,還能輸入圖片給GPT-4解讀,而且解答能力的「正確程度」會比GPT3.5為高。另外,能輸入的Token數量也大幅增加到32,768個,相當於50頁文字。
不過,GPT4與GPT3.5的訓練資料其實都只是用到2021年9月為止的開放網路資料,能力是升級了,但資料仍然未有更新,最大的特色就是可以看圖,輸入指定圖片後,GPT 4就可以用文字來解釋圖片內容。但若然想用ChatGPT來協助寫Multicharts的Power Language,其實筆者暫時認為沒有太大的幫助。
此外,GPT 4可以透過指定的設定來規限它的用語、風格、語調等條件,例如可以要求GPT4像數學課老師一樣的語調回答問題。這個功能也對寫Multicharts的Power Language完全沒有額外的幫助。
目前ChatGPT Plus付費用戶可優先排入試用GPT4,但留意即使你已用VPN登記成為Open AI的用戶,這個系統暫時仍不收香港的信用卡,變相令你想課金也沒有辨法。但我們已介紹可以利用 Poe 來使用ChatGPT,目前Poe有提供用戶使用GPT4,但每日只限問一次,自然沒有多大用處。
若你願意付每月159港元的費用,則可每日問300條問題。無論你是用iOS版本的Poe還是網頁版,都必需付月費才能使用GPT4。
若大家有興趣使用GPT,先在POE的最底部找到「Setting」,然後選擇「Subscribe to Poe」,你可選擇每月付款,也可以選擇付年費,目前年費為1599港元,變相令每月的費用降至133.25港元左右。但大家留意一點,每月訂閱自然可以下個月便除消,隨時又可再繼續,但付了年費卻不能退款的,這點像其他很多收費平台也是如此。付款方式方面,Poe接受以Apple pay付款,對本港用家來說就方便得多。
不過,是否要付款申請使用GPT4,對我們來說最重要的自然是用GPT4寫Multicharts的語法否會較好?
筆者試用一個較複雜的交易策略分別給GPT3.5及GPT4試寫Multicharts的語法,大家可看看以下的分別:
可否用Multicharts 的pOWER LANGUAGE 編寫以下策略:
交易納指三倍槓桿ETF STOCK CODE: (SQQQ):
在1分鐘圖上,當技術指標 Intraday volume weighted average price 低於某分鐘的收市價達0.2%時買入,買入後股價上升0.3%止盈,下跌0.15%止損。
另外,當 Intraday volume weighted average price 高於某分鐘的收市價0.2%時沽空,沽空後股價跌0.3%止盈,上升0.15%止損。
「ChatGPT 3.5的答案」:
Inputs:
buy_threshold(0.2), // 買入門檻百分比
sell_profit(0.3), // 賣出盈利百分比
sell_stop_loss(-0.15), // 賣出止損百分比
short_threshold(0.2), // 沽空門檻百分比
cover_profit(-0.3), // 買回盈利百分比
cover_stop_loss(0.15); // 買回止損百分比
Vars:
vwap(0), // Intraday volume weighted average price
close_price(0), // 收盤價格
buy_signal(false), // 買入信號
sell_signal(false), // 賣出信號
short_signal(false), // 沽空信號
cover_signal(false); // 買回信號
// 計算Intraday VWAP和收盤價格
vwap = IntradayVWAP(1);
close_price = Close;
// 計算買入信號和賣出信號
if vwap < close_price * (1 – buy_threshold / 100) then
buy_signal = true;
else if vwap > close_price * (1 + short_threshold / 100) then
short_signal = true;
// 計算止盈和止損價格
vars:
buy_target_price(0),
buy_stop_loss_price(0),
short_target_price(0),
short_stop_loss_price(0);
if buy_signal then
begin
buy_target_price = close_price * (1 + sell_profit / 100);
buy_stop_loss_price = close_price * (1 + sell_stop_loss / 100);
end
else if short_signal then
begin
short_target_price = close_price * (1 + cover_profit / 100);
short_stop_loss_price = close_price * (1 + cover_stop_loss / 100);
end;
// 進行交易
if buy_signal and MarketPosition = 0 then
Buy(“SQQQ_Long_Entry”) 3 shares next bar at Market;
if short_signal and MarketPosition = 0 then
SellShort(“SQQQ_Short_Entry”) 3 shares next bar at Market;
if MarketPosition > 0 then
begin
if Close >= buy_target_price then
Sell(“SQQQ_Long_Exit”) next bar at Market;
else if Close <= buy_stop_loss_price then
Sell(“SQQQ_Long_Stop_Loss”) next bar at Market;
end
else if MarketPosition < 0 then
begin
if Close <= short_target_price then
BuyToCover(“SQQQ_Short_Exit”) next bar at Market;
else if Close >= short_stop_loss_price then
BuyToCover(“SQQQ_Short_Stop_Loss”) next bar at Market;
end;
這個策略使用`IntradayVWAP`函數計算Intraday VWAP和收盤價格,並根據買入門檻和沽空門檻計算買入信號和沽空信號。當進入交易後,根據止盈和止損百分比計算止盈和止損價格。
最後,使用`Buy`和`SellShort`進行買入和沽空交易,使用`Sell`和`BuyToCover`進行賣出和買回交易。請注意,這只是一個示例,您可能需要進一步調整和優化策略以適應您的交易風格和市場環境。
我們再比較一下ChatGPT4 答案又是否不同?
「ChatGPT 4 的答案」:
Inputs:
StockCode(“SQQQ”),
PercentBuy(0.2),
PercentSell(-0.2),
TargetProfit(0.3),
StopLoss(0.15);
Vars:
IntraVWAP(0),
PositionSize(0),
EntryPrice(0);
IntraVWAP = (V * C) / V;
PositionSize = 1;
If BarStatus(1) = 2 Then Begin
If IntraVWAP < C * (1 – PercentBuy / 100) Then Begin
Buy(“Long_Entry”) PositionSize Shares Next Bar at Market;
EntryPrice = Close;
SetProfitTarget(“Long_Entry”, EntryPrice * (1 + TargetProfit / 100));
SetStopLoss(“Long_Entry”, EntryPrice * (1 – StopLoss / 100));
End;
If IntraVWAP > C * (1 + PercentSell / 100) Then Begin
SellShort(“Short_Entry”) PositionSize Shares Next Bar at Market;
EntryPrice = Close;
SetProfitTarget(“Short_Entry”, EntryPrice * (1 – TargetProfit / 100));
SetStopLoss(“Short_Entry”, EntryPrice * (1 + StopLoss / 100));
End;
End;
這個策略用到很多不同的參數,ChatGPT 能夠initialize足夠的參數供backtest, 這方面實在做得不錯。不過,大家可以看到無論是ChatGPT 3.5還是ChatGPT4都用了「IntradayVWAP」 這個Function,但其實Multicharts根本沒有內置這個functions,我們要用VWAPResettable來計算VWAP。
「正確的寫法如下」:
input:
Price(AvgPrice),
LocalHrsOffset(0),
refTime(1000),
time1(0900),
time2(0930),
time3(1129),
time4(1315),
time5(1415),
BuyThreshold(0.002),
BuyProfitTarget(0.003),
BuyStopLoss(0.0015),
ShortThreshold(0.002),
ShortProfitTarget(0.003),
ShortStopLoss(0.0015);
variables:
var0(0),priceAtRef(0);
var0 = VWAPResettable(Price,LocalHrsOffset,time1,time2,time3,time4,time5);
if time = refTime then
priceAtRef = Close;
if time <> refTime then
priceAtRef = priceAtRef[1];
if priceAtRef > 0 and var0 > 0 and Close < var0 * (1 – BuyThreshold) And MarketPosition = 0 Then
begin
buy next bar at market;
end else if marketposition > 0 then
begin
Sell (“Long SL”) next bar at entryprice * (1 – BuyStopLoss) stop;
Sell (“Long TP”) next bar at entryprice * (1 + BuyProfitTarget) limit;
end;
if priceAtRef > 0 and var0 > 0 and Close > var0 * (1 + ShortThreshold) And MarketPosition = 0 Then
Begin
SellShort next bar at market;
End else if marketposition < 0 then
begin
Buytocover (“Short SL”) next bar EntryPrice * (1 + ShortStopLoss) stop;
Buytocover (“Short TP”) next bar EntryPrice * (1 – ShortProfitTarget) limit;
end
ChatGPT確實對學習Multicharts的Power Language很有幫助,但它有時候會參考一些網上錯誤的寫法,無論是ChatGPT 3.5還是ChatGPT4都會有寫錯的時候,但我們逐步熟習Multicharts的Power Language後便會懂得自行修改,令ChatGPT真正變成協助我們寫策略的好幫手,至少不用所有都由頭寫起。
比較過ChatGPT 3.5及ChatGPT4寫Multicharts策略的結果後,筆者認大家若想運用ChatGPT來學習Multicharts的Power Language,暫時仍未需要用到ChatGPT4,或許日後有再進一步更新的版本才會更有幫助。