

Our Recommended Trading Platform
NinjaTrader® is our #1 recommended trading software platform preferred by traders worldwide including our clients.
Download Ninja Trader & receive immediate FREE access to:
- Real-time futures data
- Advanced charting
- Trade simulator
- Strategy development and backtesting
Get Started for FREE ! : https://ninjatraderdomesticvendor.sjv.io/xJb675
NinjaTrader’s award-winning trading platform is consistently voted an industry leader by the trading community. Featuring 1000s of Apps & Add-Ons for unlimited customization, NinjaTrader is used by over 500,000 traders for advanced market analysis, professional charting and fast order execution.
For new traders, start preparing for the live markets with a free trading simulator featuring real-time
market data.
__________________________________________________________________________________________________
Ninja Trader是甚麼?
在眾多交易平台之中,NinjaTrader是一個特別受到期貨交易者、即市交易者及程式交易開發者重視的平台。它不只是用來查看K線圖或手動買賣,而是一個把圖表分析、即時報價、落盤、模擬交易、策略回測、訂單流分析及自動交易整合在一起的完整交易環境。NinjaTrader目前把服務重點放在期貨市場,使用者可以透過其Desktop、Web及Mobile平台監察市場、管理持倉及執行交易,而不同裝置之間亦能配合使用。

對一般交易者而言,NinjaTrader最直觀的功能是它的圖表系統。使用者可以開啟不同商品及不同時間週期的圖表,例如一分鐘圖、五分鐘圖、日線圖、Tick圖或成交量圖,並加入移動平均線、RSI、MACD、布林通道等技術指標。圖表版面可以自由調整,交易者亦可以使用繪圖工具標示支持位、阻力位、趨勢線及交易區域。NinjaTrader的Desktop平台提供高度自訂的圖表功能,除了內置技術指標外,還可加入自行編寫或第三方開發的指標。
NinjaTrader的另一個重要特點,是可以直接在圖表上落盤。交易者毋須在圖表與落盤視窗之間不斷切換,可以透過Chart Trader在圖表上建立買入、沽出、止蝕及止賺訂單,並直接拖動圖表上的訂單線修改價位。這對即市交易尤其方便,因為交易者可以一邊觀察價格走勢,一邊調整風險管理。NinjaTrader Web亦提供圖表交易、訂單及持倉管理功能,並支援自訂工作空間。
除了一般圖表之外,NinjaTrader亦提供DOM,也就是Depth of Market市場深度介面。DOM會顯示不同價格水平上的買盤及賣盤數量,交易者可以觀察買一價、賣一價、市場深度,以及在不同價格掛出的限價盤。對交易期貨、短線及超短線的使用者而言,DOM的作用非常重要,因為它能夠提供K線圖以外的市場資訊,讓交易者知道目前市場的流動性集中在哪些價位,以及買賣雙方的掛盤力量是否出現變化。NinjaTrader Web的Trading Ladder亦容許使用者直接點擊價位落限價盤或止損盤,並以拖放方式調整尚未成交的訂單。
NinjaTrader另一個廣受專業交易者重視的功能是Order Flow+。傳統技術分析通常只研究開市價、最高價、最低價、收市價及成交量,但Order Flow+可以進一步分析每個價格水平上的Bid Volume及Ask Volume、成交量差值、累積Delta、成交量分布及市場深度。Volumetric Bars可以把每根K線內不同價位的主動買入與主動賣出成交量顯示出來,讓交易者觀察某個價位究竟是買方積極追價,還是賣方主動沽售。Order Flow+亦包含Cumulative Delta、Volume Profile及Market Depth Map等工具。
這些功能對交易小型標普500指數期貨、納斯達克期貨、原油、黃金等活躍期貨商品特別有用。例如價格升穿阻力位時,如果Ask成交量明顯增加,Cumulative Delta同步上升,突破的可信程度可能較高;相反,若價格創出新高,但主動買入成交量沒有增加,甚至Delta開始回落,便可能代表升勢正在減弱。當然,訂單流並不是必勝工具,但它能補充普通K線圖未必能直接顯示的市場參與情況。
NinjaTrader亦提供模擬交易功能,使用者可以先在模擬帳戶練習,不需要立即使用真實資金。平台提供交易模擬器,而部分方案亦包括即時市場數據、Market Replay及其他工具。Market Replay可以重播已記錄的市場數據,讓使用者在收市後重新練習某一個交易時段。對初學者而言,可以用它熟習落盤方式;對有經驗的交易者而言,則可以重複測試入市訊號、平倉方法及即市判斷。
在風險管理方面,NinjaTrader提供ATM Strategy,即Automated Trade Management Strategy。ATM不是完整的自動入市策略,而是一套自動管理訂單的方法。交易者可以預先設定止蝕、止賺、分注平倉、移動止損及OCO訂單。當入市訂單成交後,平台便可以按照設定自動建立止賺及止蝕訂單。OCO代表One Cancels Other,意思是當止賺成交後,相關止蝕會自動取消;若止蝕先成交,止賺亦會取消,避免平倉後留下不必要的反方向訂單。
NinjaTrader同時提供交易表現報告,使用者可以檢查總回報、勝率、平均盈利、平均虧損、最大回撤及交易次數等數據。這些資料有助交易者判斷策略的問題究竟來自入市準則、平倉方法、交易時段,還是風險設定。Web平台的Reports功能亦可查看交易歷史、帳戶餘額及表現概要。
NinjaTrader最大的優勢,是它可以由簡單逐步發展至專業用途。初學者可以只使用圖表、模擬交易及ATM Strategy;進階使用者可以研究DOM、訂單流及市場深度;程式交易者則可以編寫自訂指標、策略及自動交易系統。它並不是只有單一用途的圖表軟件,而是一個能夠陪伴交易者由手動交易發展至量化及自動交易的完整平台。
不過,使用者亦要明白,平台功能強大不代表交易自然會盈利。即時數據、Order Flow+及部分進階功能可能視乎帳戶、數據或方案而有所不同,而期貨本身具有槓桿及快速波動的風險。使用NinjaTrader之前,應先了解合約規格、每點價值、保證金、滑價及交易時間,並充分使用模擬交易測試。整體而言,NinjaTrader最適合希望深入研究期貨、即市交易、訂單流,或準備發展程式交易及自動交易的使用者。
__________________________________________________________________________________________________
如何用NinjaTrader編寫策略、指標及自動交易系統
NinjaTrader除了是一個圖表及落盤平台,更重要的是它提供了一套完整的策略開發環境。使用者可以在平台內編寫技術指標、交易策略、掃描工具及其他自訂功能,亦可以將完成的策略連接模擬或真實帳戶進行自動交易。對希望由普通技術分析進一步發展至量化交易的人而言,NinjaTrader最大的吸引力,是市場數據、程式開發、策略測試與訂單執行都集中在同一個平台內。

NinjaTrader的程式開發語言稱為NinjaScript。它以C#為基礎,使用者可以透過NinjaScript Editor編寫程式。C#是一種功能完整的程式語言,因此NinjaScript的自由度通常高於只用簡單公式寫指標的平台。使用者不但可以計算移動平均線、RSI及MACD,也可以建立多商品、多時間週期、訂單流、成交量、市場深度、動態風險控制及複雜訂單管理系統。
在NinjaTrader中,指標與策略是兩種不同的程式。Indicator主要負責計算及顯示數值,例如在K線圖上繪畫趨勢線、移動平均線、買賣箭頭、背景顏色或獨立副圖。Strategy則除了可以計算指標條件外,還可以發出買入、沽出、平倉、止蝕及止賺指令。因此,同一套邏輯可以先寫成指標,用來觀察訊號是否合理,之後再改成策略,進行回測及自動交易。
對完全不懂C#的使用者,NinjaTrader提供Strategy Builder。這是一個以選單及條件設定為主的視覺化工具,使用者可以選擇「收市價升穿移動平均線」、「RSI低於30」、「時間在指定交易時段內」等條件,然後設定買入、沽出或平倉動作。Strategy Builder會產生以NinjaScript為基礎的策略,適合作為非程式開發者的入門工具。官方亦指出,Strategy Builder可以建立用於自動系統交易的NinjaScript策略,而Builder亦可作為日後進一步編寫自訂程式的基礎。
當策略完成後,使用者可以利用Strategy Analyzer進行歷史回測。回測會根據過去的價格數據模擬入市及平倉,並產生總回報、Profit Factor、勝率、平均交易回報及最大回撤等資料。使用者亦可以比較不同參數,例如改變移動平均線週期、止損距離或交易時段,找出策略在歷史數據上的表現。不過,回測結果仍然受到數據精度、滑價、佣金及訂單成交假設影響,因此不能只根據最高回報選擇參數。
NinjaTrader策略其中一個重要設定是Calculate。策略可以設定為OnBarClose、OnEachTick或OnPriceChange。OnBarClose只會在每根K線完成時執行一次,適合以收市價確認訊號的策略;OnEachTick會在每一個Tick到達時重新執行,適合需要即時反應的短線策略;OnPriceChange則會在價格出現變化時執行,如果連續兩個Tick價格相同,第二個Tick不會再次觸發,能在部分情況下減少不必要的計算。
這種事件驅動方式,是NinjaTrader在即市及訂單流策略上的重要優勢。例如策略不必等一分鐘K線完成,才知道Bid或Ask是否出現變化。只要使用OnEachTick、MarketData事件或MarketDepth事件,程式便可以在即時數據更新時進行判斷。對研究市場微結構、Bid/Ask、買賣盤差距及流動性的策略而言,這種架構比只依靠K線收市價的程式平台更加直接。

NinjaScript提供GetCurrentBid()及GetCurrentAsk()方法,分別取得目前即時買入價及賣出價。使用者可以計算Bid/Ask Spread,例如以Ask減去Bid,判斷市場目前的買賣差價是否過闊。策略亦可以設定只有當Spread低於某個水平時才入市,避免在流動性不足或波動突然擴大時使用市價盤。官方文件同時提醒,在歷史狀態下,GetCurrentBid()及GetCurrentAsk()可能以相應K線的Close代替;若要研究歷史Bid及Ask,便需要使用更合適的歷史數據或Tick Replay方式。
除了最佳Bid及Ask,NinjaTrader亦能處理市場深度及訂單流資料。透過MarketDepth事件,策略可以接收限價盤簿的增加、修改及取消,研究不同價格層上的掛盤數量。例如,策略可以計算買方首五層掛盤量與賣方首五層掛盤量的比例,建立Order Book Imbalance。如果買方掛盤突然大幅增加,可能代表下方承接力增強;如果大量掛盤在價格接近時迅速取消,也可能代表原本看到的支持並不可靠。
使用Volumetric Bars時,程式亦可以研究每個價位的Bid Volume及Ask Volume。Bid Volume通常代表成交在Bid一方,而Ask Volume代表成交在Ask一方。當大量成交在Ask發生,一般表示主動買方願意以賣方叫價成交;大量成交在Bid發生,則代表主動賣方願意擊中買方報價。這些數據可以用來建立Delta、Imbalance、Absorption及Exhaustion等訂單流概念。NinjaTrader的Order Flow+本身亦提供Volumetric Bars、Cumulative Delta、Market Depth Map及Volume Profile。
例如,一個普通突破策略可能只判斷收市價是否升穿過去20根K線的最高位。改用NinjaTrader的訂單流數據後,可以增加條件:價格升穿阻力位時,Ask成交量必須高於Bid成交量、Cumulative Delta必須同步創出新高,而且Bid/Ask Spread不能突然擴大。這樣的策略不再只是研究價格結果,而是嘗試分析突破背後是否真的有主動買盤支持。
完成測試後,NinjaScript Strategy可以在圖表或Control Center的Strategies分頁運行,並連接模擬或真實帳戶。官方文件說明,自動NinjaScript策略可以在圖表內啟動,而策略亦可在模擬或真實帳戶執行。需要特別注意的是,真實帳戶中的策略訂單是真正的市場訂單,不是虛擬記錄;若策略運行期間人手取消訂單,可能破壞原本的策略狀態,因此通常應先停止策略,再作人工修改。
NinjaTrader同時提供Managed及較進階的訂單處理方法。普通策略可使用EnterLong、EnterShort、ExitLong及ExitShort等方式落盤;有經驗的程式員則可以進一步自行提交、修改及取消訂單,控制訂單生命週期。官方亦提醒,進階訂單處理適合有經驗的開發者,因為程式必須正確處理訂單狀態、部分成交、拒絕訂單及連線問題。
由此可見,NinjaTrader特別適合開發Bid/Ask及訂單流策略,並不是因為其他平台完全不能處理這些資料,而是因為它把即時行情事件、DOM、市場深度、Volumetric Bars、策略程式、回測及落盤整合在同一個環境。程式可以直接對市場數據作出反應,不必先把所有資料轉換成普通K線,對即市、剝頭皮及市場微結構研究更加方便。
不過,越精細的數據亦代表越高的開發難度。Tick策略、Bid/Ask策略及DOM策略的回測,必須考慮歷史數據是否完整、Tick Replay是否適合、排隊位置、滑價及實際成交機制。看到Bid出現大量掛盤,不代表自己的限價盤一定能成交;策略在歷史回測中盈利,也不代表真實市場能以相同價位成交。因此,正確做法應是先做歷史測試,再用Market Replay及模擬帳戶測試,最後才以較小風險進行真實交易。
總括而言,NinjaTrader不只是讓使用者寫幾條技術指標公式,而是一個完整的程式交易開發平台。它可以編寫自訂指標、建立交易策略、回測及優化參數、接收Tick、Bid、Ask及市場深度數據,並把策略連接至模擬或真實帳戶自動執行。對希望由普通K線策略發展至訂單流、量化及專業自動交易的使用者而言,這正是NinjaTrader最具價值的地方。
Risk Disclosure: Futures and forex trading contains substantial risk and is not for every investor. An investor could potentially lose all or more than the initial investment. Risk capital is money that can be lost without jeopardizing one’s financial security or lifestyle. Only risk capital should be used for trading and only those with sufficient risk capital should consider trading. Past performance is not necessarily indicative of future results.
Hypothetical Performance Disclosure: Hypothetical performance results have many inherent limitations, some of which are described below. No representation is being made that any account will or is likely to achieve profits or losses similar to those shown; in fact, there are frequently sharp differences between hypothetical performance results and the actual results subsequently achieved by any particular trading program. One of the limitations of hypothetical performance results is that they are generally prepared with the benefit of hindsight. In addition, hypothetical trading does not involve financial risk, and no hypothetical trading record can completely account for the impact of financial risk of actual trading. for example, the ability to withstand losses or to adhere to a particular trading program despite trading losses are material points that can also adversely affect actual trading results. There are numerous other factors related to the markets in general or to the implementation of any specific trading program that cannot be fully accounted for in the preparation of hypothetical performance results and all which can adversely affect trading results.
