TradingView का webhook payload
जब कोई TradingView अलर्ट TheConnector तक पहुँचता है, तब WebhookIngress जिन फ़ील्ड को पढ़ता है उनकी सटीक सूची।
उद्देश्य
यह पृष्ठ TradingView अलर्ट के लिए सार्वजनिक WebhookIngress अनुबंध का दस्तावेज़ है। यह dashboard के मैनुअल ऑर्डर payload के बारे में नहीं है।
पहुँच का रास्ता
- क्लाइंट workspace में:
My accounts> कोई ट्रेडिंग खाता खोलें > access key कॉपी करें। - TradingView में:
Alert>Notifications>Webhook URLमेंhttps://webhook.theconnector.fr/YOUR_ACCESS_KEYचिपकाएँ। - TradingView के
Messageफ़ील्ड में संदेश चिपकाएँ: JSON या एक पंक्ति, जैसा आप चाहें।
दो फ़ॉर्मेट, एक ही नतीजा
WebhookIngress संदेश के दो फ़ॉर्मेट पढ़ता है और दोनों को बिल्कुल एक ही तरह से संसाधित करता है: एक JSON object, या टेक्स्ट की एक पंक्ति। जो आपको पसंद हो, वही इस्तेमाल करें। एक पंक्ति में पहले action और symbol आते हैं, फिर बाकी फ़ील्ड name=value के रूप में, अल्पविराम से अलग करके।
न्यूनतम JSON
{
"action": "buy",
"symbol": "EURUSD",
"risk": 1,
"sl": 0.2,
"tp": 0.4,
"priceMode": "percent"
}
priceMode अलर्ट में ही sl, tp और price की इकाई बताता है: price, pips या percent। यहाँ स्टॉप एंट्री से 0.2% और लक्ष्य 0.4% दूर है, खाते का मूल्य मोड चाहे जो हो; priceMode के बिना खाते का मूल्य मोड लागू होता है।
WebhookIngress जिन फ़ील्ड को पढ़ता है
actionअनिवार्य है। स्वीकृत उपनाम, JSON में भी और एक पंक्ति वाले संदेश में भी:side,type,command,msgtype।typeकमांड का नाम बताता है, ऑर्डर का प्रकार नहीं:buyके साथtype=limitदो अलग-अलग कमांड हैं, और अलर्ट अस्वीकार हो जाता है — पेंडिंग ऑर्डर की अपनी कमांड होती है,buylimit,selllimit,buystopयाsellstop, और उसकी एंट्री कीमतpriceमें लिखी जाती है।- ट्रेडिंग कमांड के लिए
symbolअनिवार्य है। स्वीकृत उपनाम:pair,ticker,instrument,market,asset। riskएक संख्यात्मक जोखिम मान के रूप में आगे भेजा जाता है। स्पष्ट lot size के लिएvolume,lot,lots,fixedVolumeयाsizeका उपयोग करें।slऔरtpstop loss / take profit के मौजूदा नाम हैं। स्वीकृत उपनाम:stoploss,stop_loss,takeprofit,take_profit।priceकेवल pending ऑर्डर के लिए उपयोग होता है:buystop,buylimit,sellstop,selllimit।expiration(उपनामexpiry) किसी pending ऑर्डर को मिनटों में जीवन-अवधि देता है: अगर तब तक ऑर्डर ट्रिगर नहीं होता, तो broker उसे हटा देता है, रोबोट बंद होने पर भी। उदाहरण:"expiration": 60। market ऑर्डर पर इसे अनदेखा किया जाता है। इसके लिए रोबोट 0.0.30 या नया चाहिए: पुराने रोबोट के साथ ऑर्डर को अनिश्चित काल तक pending छोड़ने के बजाय अलर्ट अस्वीकार कर दिया जाता है। अगर broker उस symbol पर समाप्ति स्वीकार नहीं करता, तो ऑर्डर अस्वीकार हो जाता है, उसके बिना कभी नहीं रखा जाता।priceModeइस अलर्ट के लिएsl,tpऔरpriceकी इकाई तय करता है:price,pipsयाpercent। इसके बिना खाते का मूल्य मोड लागू होता है।ticket,orderId,order_id,positionIdयाposition_idकेवल तब उपयोग होते हैं जब निर्देश किसी ज्ञात ऑर्डर या position को लक्ष्य बनाता है।- खाते के URL के साथ
account/accountCodeऔरplatformवैकल्पिक हैं; ये केवल साझा रूटिंग व्यवस्थाओं में उपयोगी हैं। - ट्रैकिंग के लिए
streamIdयाidभेजा जा सकता है। सर्वर इसे अपने ट्रैकिंग id मेंTV-के बाद रखता है (अधिकतम 17 अक्षर,-को_में बदलकर), उसके बाद_और 8 अक्षर जोड़ता है। इसलिए एक ही id के साथ भेजे गए दो अलर्ट दो अलग अलर्ट हैं: दूसरे को कभी डुप्लिकेट नहीं माना जाता। न भेजने पर सर्वर स्वयं एक ट्रैकिंग id बनाता है। tag(उपनामcomment) बताता है कि अलर्ट किस रणनीति का है। entry पर यह position के broker comment में लिखा जाता है; close पर यह बंद करने को केवल उसी नाम वाली positions तक सीमित करता है, जिससे कई रणनीतियाँ एक ही खाते और एक ही symbol को साझा कर सकती हैं। इसे lowercase किया जाता है और 12 अक्षरों पर काटा जाता है, और यह robot 0.0.21 से ही माना जाता है — उससे पुराने संस्करण में tag वाला close किसी दूसरी रणनीति की position पर चलाने के बजाय अस्वीकार कर दिया जाता है। यदि आप अपनाstreamIdभेजते हैं तो बनाया गया id बदल जाता है और tag कभी position के comment तक नहीं पहुँचता: tag का उपयोग करते समयstreamIdन भेजें।clientRequestedAtUtc,requestedAtUtcयाrequestedAtको सूचनात्मक UTC टाइमस्टैम्प के रूप में भेजा जा सकता है।
वही संदेश एक पंक्ति में
ऊपर वाला वही ऑर्डर, एक ही पंक्ति में लिखा हुआ:
buy,EURUSD,risk=1,sl=0.2,tp=0.4,priceMode=percent
क्या न भेजें
ttl_ms पर निर्भर न रहें: WebhookIngress का मौजूदा पार्सर इसे नहीं पढ़ता। vol_lots को volume के रूप में पढ़ा जाता है। हर कीमत उसी इकाई में रहती है जिसमें वह लिखी गई है: प्रत्यय केवल उसी मान की इकाई तय करता है (sl_pips, sl_price, sl_pct, tp_pips, tp_price, tp_pct, और पेंडिंग ऑर्डर की एंट्री के लिए entry_pips, entry_price, entry_pct); बिना प्रत्यय वाले sl, tp और price अलर्ट में लिखा priceMode (या unit) लेते हैं, वरना खाते का मूल्य मोड। रोबोट पूरे ऑर्डर पर एक ही इकाई लागू करता है, इसलिए जिस अलर्ट की कीमतों को दो इकाइयाँ चाहिए, वह अस्वीकार हो जाता है, और कभी भी अपने स्टॉप-लॉस या टेक-प्रॉफ़िट के बिना नहीं भेजा जाता: tp_price के साथ sl_pips, या tp_pips के बगल में बिना प्रत्यय वाला sl (pips पर सेट खाते पर भी; priceMode=pips जोड़ें)। सभी कीमतों पर प्रत्यय लगाएँ, या किसी पर नहीं। जो अलर्ट एक ही फ़ील्ड को दो अलग-अलग मानों के साथ दो बार लिखता है, वह भी अस्वीकार होता है (sl=10 फिर sl=20, या "action":"buy" के साथ "type":"sell"); एक ही मान दो बार हो तो उसे एक बार गिना जाता है।
WebhookTrade के लिए लिखे गए अलर्ट
WebhookTrade फ़ॉर्मेट वाला अलर्ट symbol, action (buy_limit, sell_stop…), price, stop_loss, take_profit, size (lots) और expiration (मिनट) के लिए ज्यों का त्यों पढ़ा जाता है; comment रणनीति का नाम देता है, tag की तरह; username, api_key, broker और account_type अनदेखे किए जाते हैं। उसके बंद करने वाले actions में close_all को closeall की तरह पढ़ा जाता है; close_buy, close_sell और close_pending की जगह closelong, closeshort, या cancellong और cancelshort भेजें। उसके बाकी stop, लक्ष्य, आकार, trailing और break-even पैरामीटर — sl_percentage, tp_percentage, sl_distance, tp_distance, sl_distance_price, tp_distance_price, stop_amount, profit_amount, size_percentage, risk_percentage, size_multiplier, ts_…, breakeven_… — अलर्ट को अस्वीकार करा देते हैं, ऐसे संदेश के साथ जो उनका नाम बताता है: उनके बिना चलाने पर ऑर्डर अपने stop के बिना या किसी दूसरे आकार में जाता। उन्हें sl / tp और priceMode, volume या risk, और betrigger / trailtrig / traildist से लिखें।
पहले से अलर्ट हैं? उन्हें रखें
अपने अलर्ट दोबारा लिखने की ज़रूरत नहीं है। एक पंक्ति वाला संदेश जैसा है वैसा ही काम करता है, भले ही वह किसी लाइसेंस ID से शुरू हो: हर TradingView अलर्ट में केवल webhook URL को अपने URL से बदलें, यानी उस URL से जो आपकी access key पर समाप्त होता है। तब कमांड से पहले रखा मान अनदेखा कर दिया जाता है, और sl_pips, tp_price या vol_lots जैसे पैरामीटर नाम अपने-आप अनुवादित हो जाते हैं। एक अपवाद: जो अलर्ट मूल्य इकाइयाँ मिलाता है (जैसे tp_price के साथ sl_pips), वह अब अस्वीकार हो जाता है: सभी कीमतें एक ही इकाई में लिखें।