📢 用 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 語法的朋友會有非常多的幫助,也推薦你們可以去看看。
_ShowDateTime 函數
        
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 ) );



最後,範例程式如下:

達錢 Telegram 通知範例程式
        
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;


📌 結語

這是一段輕巧又實用的技術分析通知策略,讓你【不必死盯螢幕】就可以第一時間掌握技術轉折,你可以延伸整合進交易系統或自動下單模組,推薦給想提升交易效率、又希望實現自動化管理的你!