📢 用 MultiCharts 打造 Telegram 自動通知系統
2025/07/15 - MultiCharts, Telegram 自動通知, 自動化交易, 策略交易, 程式交易, PowerLanguage, 自動推播, 期貨選擇權提醒
捕捉技術轉折點、免盯盤也能精準掌握時機
MultiCharts 是台灣程式交易主流,自動交易者愛用的程式交易軟體。
你可能不知道!其實,MultiCharts 的圖表與繪圖功能也是相當强大, 是很多【手單】的交易者【愛用】的交易工具!
不過【長時間】的看盤除了需要體力,更是耗費【眼力】,很多成功的手單交易者,雖然賺到了錢卻【賠】了健康。
其實我們仔細的想想,説真的行情也不是天天有,所以把大把的時間花費在看盤找交易機會,似乎不是那麽的划算。
達錢提供的 Telegram 通知功能,除了幫助程式交易的用戶監控系統外,也可以幫助手動交易的用戶,今天我們使用在技術分析的世界裡,KD 指標一直是交易者熟悉的老朋友。它能幫助我們追蹤價格的高低動能,判斷超買超賣情況,進而捕捉轉折契機。
但若你還在「盯盤」等待 KD 黃金交叉/死亡交叉,那未免也太辛苦了。
這篇教你如何在 MultiCharts 環境下結合 KD 指標與 Telegram Bot,自動推送技術訊號到你的手機,讓你不盯盤也能第一時間掌握轉折!
🧪 行前準備
本篇文章使用達錢提供的 MultiCharts Telegram 通知功能來實現,TGNotify 是達錢提供給 MultiCharts 行情用戶的 Telegram 即時通知服務,只要你是達錢的行情付費會員就可以【免費使用】。
* MultiCharts 中英文專業版,支援 12,14,15 版本。
* 達錢會員(免費試用 14 天)》立即加入。
* 下載並安裝達錢》立即下載。
* 下載并且匯入達錢提供的 TGNotify 函數,立即下載。
如何設定達錢提供的 Telegram 通知,請參考:【教學】Telegram Notify 如何設定 ,設定完成後畫面如下:
其中 s01 就是我們範例程式發送的指定代號,你可以設定你自己的。請務必確認你要發送的【 用戶id/群組id】與【機器人權杖】設定正確,才能順利發送。
📌 策略目的與應用場景
✅ KD 黃金交叉時通知:可能是買進訊號
✅ KD 死亡交叉時通知:可能是賣出訊號
✅ 適用於期貨、個股、ETF 等盤中監控
✅ 整合 Telegram 機器人,推播即時提醒
* 小提醒:MultiCharts 的 KD 指標名稱為 Stochastic Slow,不要選錯。
* 測試時,建議圖表不要開太長,如果你沒寫好程式不小心就會得到【收不完】的 Tg 訊息。


我們今天的範例使用【台指期貨 1 分K】,加上改造 MultiCharts 的内建指標後,將黃金交叉與死叉的結果透過 Telegram 的機器人來發送通知。
開始前,我們先來學習一下 IntraBarPersist 與 LastBarOnChart
IntraBarPersist
MultiCharts(PowerLanguage / EasyLanguage) 中的關鍵字 IntraBarPersist 的用途
Used in variable and array declaration statements, before a variable or array name, to specify that the value of the variable or array elements are to be updated on every tick.
👉 意思是:只要有新的成交或價格變動,變數的值就會立即更新。
If IntraBarPersist is not specified, the value will be updated at the close of each bar.
如果沒有加上 IntraBarPersist,那這個變數的值只會在「每根 K 棒收盤」時才更新一次。
爲什麽要特別説明 IntraBarPersist ? 因爲你想要【記憶】已經送過的通知,就可以在價格變動時立刻變動變數值的内容,這樣就能避免即時行情上上下下重複發送通知的問題。
LastBarOnChart
我們不想將歷史數據中的通知發送出來,因此只用 LastBarOnChart 來進一步限定 Telegram 的通知只會在圖表的【最後一根】Bar 發送。
* 程式中使用到的 _ShowDateTime 函數,是從阿政老師的部落格【永政的投機生活】取得,裏面還有很多珍貴的範例程式,相信對初學 MultiCharts 語法的朋友會有非常多的幫助,也推薦你們可以去看看。
input: theDate(Numeric), theTime(Numeric);
if StrLen( NumToStr( theTime, 0 ) )>4 then
value1= eltimetodatetime_s(theTime)
else
value1= eltimetodatetime(theTime);
if StrLen( NumToStr( theTime, 0 ) )>4 then
_ShowDateTime= text( FormatDate( "yyyy/MM/dd", datetojulian(theDate) ), " ", FormatTime( "HH:mm:ss", value1 ) )
else
_ShowDateTime= text( FormatDate( "yyyy/MM/dd", datetojulian(theDate) ), " ", FormatTime( "HH:mm", value1 ) );
最後,範例程式如下:
inputs:
PriceH( High ),
PriceL( Low ),
PriceC( Close ),
StochLength( 14 ),
SmoothingLength1( 3 ),
SmoothingLength2( 3 ),
SmoothingType( 1 ),
OverSold( 20 ),
OverBought( 80 ) ;
variables:
var0( 0 ),
var1( 0 ),
var2( 0 ),
var3( 0 );
Value1 = Stochastic( PriceH, PriceL, PriceC, StochLength, SmoothingLength1,
SmoothingLength2, SmoothingType, var0, var1, var2, var3 ) ;
Plot1( var2, "SlowK" ) ;
Plot2( var3, "SlowD") ;
Plot3( OverBought, "OverBot" ) ;
Plot4( OverSold, "OverSld" ) ;
vars:
intrabarpersist alert_text(""),
intrabarpersist cross_time(0),
intrabarpersist prev_cross_time(0);
once cleardebug;
if CurrentBar > 2 then
begin
//condition1 = var2 crosses over var3 and var2 < OverSold ;
condition1 = var2 crosses over var3 ;
if condition1 then begin
Alert( "SlowK crossing over SlowD" );
alert_text = _ShowDateTime(currentDate, currentTime_s) + " > SlowK crossing over SlowD";
cross_time = date+time_s;
end;
//condition1 = var2 crosses under var3 and var2 > OverBought ;
condition1 = var2 crosses under var3 ;
if condition1 then begin
Alert( "SlowK crossing under SlowD" ) ;
alert_text = _ShowDateTime(currentDate, currentTime_s) + " > SlowK crossing under SlowD";
cross_time = date+time_s;
end;
if LastBarOnChart and prev_cross_time <> cross_time then begin
_TGN( "s01", alert_text );
print("---");
print("prev_cross_time :", prev_cross_time , " cross_time :", cross_time, " at:", alert_text );
prev_cross_time = cross_time ;
end;
end;
📌 結語
這是一段輕巧又實用的技術分析通知策略,讓你【不必死盯螢幕】就可以第一時間掌握技術轉折,你可以延伸整合進交易系統或自動下單模組,推薦給想提升交易效率、又希望實現自動化管理的你!