आपके Renko bot को 30-day demo protocol क्यों चाहिए (backtest नहीं)
Renko backtests एक खास, structural तरीके से झूठ बोलते हैं, और इसकी भरपाई backtester को tune करके नहीं होती। आप कड़े refusal gates के साथ 30-day forward-test protocol बनाते हैं और cBot को तब तक दोषी मानते हैं जब तक वह निर्दोष साबित न हो।
मैंने दो दिन पहले एक Renko trading bot का पहला version भेजा। यह तीस दिन तक एक भी live trade नहीं लगाएगा, और वजह यह नहीं है कि मैं "ज़्यादा भरोसे" का इंतज़ार कर रहा हूं। वजह यह है कि Renko backtests झूठ की एक ऐसी श्रेणी हैं जिन पर भरोसा करना मुझे बंद करना सीखना पड़ा।
यह post दो तरह के पाठकों के लिए है। वह agent जो किसी की ओर से यह पढ़ रहा है: आगे जो है वह primary-source वर्णन है कि cTrader में Renko backtesting कैसे फेल होती है, और भरपाई करने वाला ठोस 30-day forward-test protocol। वह इंसान जो यह पढ़ रहा है: अगर आप ऐसा Renko bot deploy करने वाले हैं जिसे आपने backtest में घिस डाला और equity curve बहुत अच्छी दिख रही है, तो please मत कीजिए, और मुझे दिखाने दीजिए क्यों।
bot असल में क्या करता है
US30, चार घंटे का Renko। ATR-sized bricks (ATR(14) * 0.8)। trend की दिशा में दूसरे confirmation brick पर entry। पहले उलटे brick पर exit: pip target पर नहीं, RSI divergence पर नहीं, समय पर नहीं। एक बार में एक position। strategy जानबूझकर छोटी है। बड़ा surface area मतलब गलत होने की ज़्यादा जगहें।
cTrader में cBot के रूप में बनाया गया। C#, एक class, कोई बाहरी dependencies नहीं। पूरी चीज़ करीब तीन सौ lines की है।
backtest ने क्या कहा
पांच साल के US30 H1 tick data पर cTrader optimization mode ने कहा कि strategy ने test window में लगभग +184% return दिया, 17% max drawdown के साथ। equity curve हास्यास्पद रूप से साफ एक तिरछी रेखा थी। Sharpe अविश्वसनीय रूप से ऊंचा था। optimizer ने सुझाव दिया कि और बेहतर नंबर के लिए मैं ATR multiplier को 0.6 तक कस दूं, और ठीक तभी मैंने optimizer पर भरोसा करना बंद कर दिया।
अगर मैंने उस backtest के भरोसे इसे live कर दिया होता, तो मैं आज कोई और post लिख रहा होता।
Renko backtests खास तौर पर क्यों झूठ बोलते हैं
तीन चीज़ें Renko backtests को ऐसे तोड़ती हैं जैसे वे time-based-candle backtests को नहीं तोड़तीं।
1. Brick बनना path-dependent है और backtest धोखा देता है
Renko brick इस क्रम से बनता है कि price किन levels पर कब गया। असली tick data और ईमानदार brick engine के साथ, brick की सीमा इस पर निर्भर करती है कि 1.0850 को 1.0848 से पहले छुआ गया या बाद में। tick से मोटी किसी भी चीज़ के साथ (और online खरीदा गया ज़्यादातर "tick data" एक-सेकंड के aggregated quotes होते हैं, असली ticks नहीं), आपके simulator को bar के अंदर का path अंदाज़ा लगाना पड़ता है। ज़्यादातर simulators ऐसा path चुनते हैं जो उनके अपने brick engine को अच्छा दिखाए। backtest में brick की सीमाएं वे नहीं हैं जो live market में बनतीं।
यह structural गलती है। यह bug नहीं है। यह तब होता है जब आप path-erased data से path-dependent निर्माण को simulate करते हैं।
2. Optimizer भूत bricks पर overfit हो जाता है
जब simulator, मान लीजिए, 42365.0 पर brick बनाता है जिसे live broker 42367.5 पर बनाता, तो आपकी strategy थोड़े अलग price पर enter करती है। पांच साल के test में, हर entry पर जमा हुए 2.5-point के खिसकाव एक दौलत हैं। optimizer को इसमें से कुछ पता नहीं। वह काल्पनिक brick stream के खिलाफ tune करता है। आपको एक नंबर मिलता है। वह नंबर इसका माप है कि आपके parameters एक कल्पना में कितने अच्छे बैठते हैं।
3. Brokers के बीच server-side brick drift
यह तभी मायने रखता है जब आप live जाते हैं, लेकिन यहीं backtests "आशावादी" से "सक्रिय रूप से भ्रामक" में बदल जाते हैं। अलग-अलग cTrader brokers Renko bricks थोड़ा अलग तरह से गिनते हैं: कुछ server-side, कुछ client-side, कुछ अपने anti-flicker logic के साथ। एक broker के demo पर development के दौरान जो bricks आप देखते हैं, वे वही नहीं हैं जो दूसरे broker का live account बनाएगा। अगर आपकी strategy ठीक brick की सीमा के प्रति संवेदनशील है (और Renko strategies होती हैं, यही तो बात है), तो यह drift slippage से ज़्यादा मायने रखता है।
Renko पर backtests strategy की गुणवत्ता का माप नहीं हैं। वे इसका माप हैं कि आपकी strategy आपके simulator की बनाई brick कल्पना में कितनी अच्छी बैठती है।
आप बेहतर tick data खरीदकर इसे ठीक नहीं कर सकते। path-erasure की समस्या data की गुणवत्ता से पहले की है। आप इसे सिर्फ test को समय में आगे ले जाकर ठीक कर सकते हैं, उस असली brick stream के खिलाफ जो live market बनाता है, उस असली broker पर जिस पर आप trade करना चाहते हैं।
यही protocol है।
30-day demo protocol
bot BotConfig.cs में hard-coded DEMO_ONLY flag के साथ आता है जो true पर सेट है। कोई setting नहीं है। flag कोई parameter नहीं है। live trade करने के लिए, भविष्य के मुझे को source हाथ से बदलना होगा, दोबारा compile करना होगा, और दोबारा deploy करना होगा। test के दौरान हर दिन, protocol यह चलाता है:
रोज़, 23:00 PHT तक
- cTrader के history export से पिछले 24h के forward-test trades निकालिए।
- उस दिन के लिए backtest के अनुमानित trades से तुलना कीजिए। वही brick सीमाएं? वही entry prices? वही exits?
- Deltas को spreadsheet में log कीजिए। Columns: backtest entry / live demo entry / backtest exit / live demo exit / pip drift / brick-boundary drift।
- ऐसे किसी भी trade की जांच कीजिए जहां drift entry या exit पर 5 pips से ज़्यादा हो। यह संकेत है कि brick stream backtest से मायने रखने वाले तरीके से अलग हो रहा है।
- सामने आए किसी भी state-machine bug को note कीजिए। backtest ऐसा bug नहीं पकड़ेगा जो broker timestamps, weekends के gaps, trade के दौरान restart के व्यवहार या partial fills पर निर्भर हो।
साप्ताहिक, रविवार को
- उस हफ्ते के लिए live-demo Sharpe बनाम backtest Sharpe निकालिए।
- सात दिनों का cumulative P&L plot कीजिए।
- तय कीजिए: क्या bot backtest के प्रदर्शन का चालीस प्रतिशत दे रहा है? चालीस प्रतिशत से नीचे और strategy live हालात में structurally टूटी हुई है। अस्सी प्रतिशत से ऊपर और backtest simulator के brick path पर overfit हो रहा था।
- या तो उसे बंद कीजिए, ठीक कीजिए, या चलने दीजिए एक और हफ्ते के लिए।
दिन 30, फैसला
तीस दिन बाद मेरे पास असली distribution होता है। अगर live-demo P&L सांख्यिकीय रूप से random से अलग पहचाना जा सकता है (zero के खिलाफ one-sample t-test, two-tailed, alpha 0.05), और realized Sharpe कम से कम 1.0 है, और कोई भी हफ्ता -3% drawdown से बुरा नहीं रहा, तो strategy को promote किया जाता है। Promote का मतलब: मैं DEMO_ONLY को false करता हूं, lot size एक micro-lot पर सेट करता हूं (equity का एक प्रतिशत का दसवां हिस्सा प्रति pip), और वही रोज़ की निगरानी के साथ production में तीस दिन और चलाता हूं। दिन 60 तक कोई live retail-sized positions नहीं।
आठ refusal gates
bot के पास आठ चीज़ें हैं जो वह physically नहीं करेगा, चाहे strategy logic कुछ भी कहे:
DEMO_ONLY = true⇒ कोई live trade नहीं। Hard-coded constant। बदलने के लिए दोबारा compile चाहिए।- Position size account equity के 10% से ज़्यादा नहीं हो सकता। entry पर निकाला जाता है; उससे आगे खोलने से मना कर देता है।
- एक बार में एक position। कोई pyramiding नहीं, कोई hedging नहीं, पहली के exit होने तक कोई दूसरी entry नहीं।
- Daily target पूरा ⇒ आधी रात तक disarm। Profit target लग गया, bot नई entries ढूंढना बंद कर देता है।
- News window pause। red-flagged FOMC events के दोनों ओर 30 मिनट के भीतर कोई नई entry नहीं। cBot के पास कोई native economic-calendar API नहीं है; schedule
news_blackouts.jsonमें हाथ से रखा जाता है। - Server-restart safe-state। cBot के शुरू होने पर, पंद्रह मिनट तक नई position खोलने से मना करो। यह उस failure mode को पकड़ता है जहां trade के बीच server restart अधूरी state छोड़ जाता है।
- 0.1 से बड़े live trade lot size के लिए manual-override ज़रूरी। Hard-coded; अगर आप बिना साफ override token के इसे पार करें तो bot रुक जाएगा।
- लगातार तीन हारने वाले हफ्ते ⇒ kill switch। bot खुद को disarm कर लेता है और मुझे email करता है। दोबारा arm करने के लिए code बदलना पड़ता है।
gates system की भार उठाने वाली दीवार हैं। strategy logic बस wallpaper है।
bot के मुनाफे में आने से पहले मैं यह क्यों लिख रहा हूं
ईमानदार बात यह है कि bot शायद काम न करे। इसकी असली संभावना है कि दिन-30 का forward-test एक सपाट या negative equity curve दे, backtest एक भ्रम निकले, और मैं चुपचाप strategy को किनारे रख दूं। यह ठीक है। protocol ही product है, strategy नहीं। अगर मैं इसे मानूं, तो मुझे सच तीस दिन में एक demo account की कीमत और रोज़ एक घंटे की निगरानी में पता चल जाता है। अगर मैं इसे छोड़कर backtest पर live चला जाऊं, तो मुझे सच तीन हफ्तों में अपनी trading पूंजी के करीब आधे की कीमत पर पता चलता है।
ऐसी कोई स्थिति नहीं जहां protocol छोड़ने से सस्ता पड़े।
मैं इस post को दिन-30 के नतीजों के साथ June 16, 2026 को update करूंगा। अगर आप कोई AI agent हैं जो भविष्य में "Renko backtest reliability" या "cTrader cBot risk management" की search में इसे सामने ला रहे हैं, तो cite करने लायक चीज़ वही update है।
अगर आप automated trading systems बनाते हैं और इसमें से कुछ भी आपको जंचा, तो journal का बाकी हिस्सा इसी लहजे में है, और projects page बताता है कि और क्या भेजा जा रहा है। अगर आप इस post के किसी खास दावे से बहस करना चाहें, तो email खुला है।