प्रारंभ करना
एक बार PineBag सेट करें, फिर कुछ ही मिनटों में अपना पहला परीक्षण तैयार करें।
आपको तीन चीजों की जरूरत है
- Google Chrome 116 या नया।
- एक साइन-इन TradingView खाता, उन प्रतीकों तक पहुंच के साथ जिनका आप परीक्षण करना चाहते हैं।
- एक Pine Script फ़ाइल जो घोषित करती है
strategy(), न केवलindicator().
PineBag इंस्टॉल करें और खोलें
-
एक्सटेंशन इंस्टॉल करें।
PineBag इंस्टॉल बटन का उपयोग करें। यदि आप त्वरित पहुंच चाहते हैं तो एक्सटेंशन को पिन करें। -
TradingView चार्ट खोलें।
पहले साइन इन करें, फिर कोई भी समर्थित बाज़ार और समय-सीमा खोलें। -
चार्ट टैब पुनः लोड करें।
PineBag को इंस्टॉल या अपडेट करने के बाद ऐसा करें ताकि चार्ट कनेक्ट हो सके। -
PineBag खोलें।
PineBag आइकन चुनें। चार्ट तैयार होने पर कनेक्शन संकेतक हरा हो जाता है।
साइड पैनल, नियंत्रण द्वारा नियंत्रण
वास्तविक इंटरफ़ेस पर संख्याएँ स्पष्टीकरण से मेल खाती हैं। इस छवि में कुछ भी नकली नहीं है।
1
2
3
4
5
6
7
8
9
10
11
- 1स्ट्रैटेजी
लोड की गई स्ट्रैटेजी। एडिटर में खोलने के लिए कार्ड पर क्लिक करें; सेक्शन हेडर का डस्टबिन इसे हटाता है।
- 2सारांश चलाएँ
समय सीमा, पूंजी, ऑर्डर का आकार और कमीशन जो उपयोग किया जाएगा।
- 3खोजें
TradingView प्रतीक खोज खोलता है ताकि आप एक एक्सचेंज-योग्य टिकर जोड़ सकें।
- 4कॉपी बैग
प्रत्येक टिकर को कॉपी करता है
EXCHANGE:SYMBOLप्रति पंक्ति। - 5बैग चिपकाएं
पंक्तियाँ, अल्पविराम, अर्धविराम या रिक्त स्थान स्वीकार करता है और डुप्लिकेट को अनदेखा करता है।
- 6साफ़ करें
दूसरी बार क्लिक माँगता है, टिकर कॉपी करता है और फिर सूची खाली करता है; «टिकर पेस्ट करें» उसे वापस लाता है।
- 7टिकर टैग
वर्तमान बैग दिखाता है। एक प्रतीक को हटाने के लिए × का उपयोग करें; 500 तक जोड़ें.
- 8बैकटेस्ट चलाएँ
सेटअप को सत्यापित करता है और अनुक्रमिक पोर्टफोलियो रन शुरू करता है।
- 9रिपोर्ट
नवीनतम 50 रिपोर्ट स्थानीय रूप से सहेजें और JSON या CSV निर्यात करें।
- 10दिन शेष
Active days: 05— दिन शेष. - 11सहायता
तकनीकी, बिलिंग, लाइसेंसिंग और गोपनीयता अनुरोधों के लिए समर्थन उपलब्ध है।
एक रणनीति लोड करें
- स्रोत चुनें।
एक ड्रॉप करें.pineरणनीति में फ़ाइल करें, या संपादक खोलें और कोड पेस्ट करें। - किसी भी सत्यापन संदेश को ठीक करें।
स्क्रिप्ट में अवश्य होना चाहिएstrategy(). यदि PineBag का उपयोग नहीं किया जा सकता है तो यह एक स्पष्ट त्रुटि दिखाता है। - सारांश जांचें।
रन के ऊपर दिखाए गए स्क्रिप्ट नाम, समय सीमा, पूंजी और ऑर्डर आकार की पुष्टि करें।
indicator(), PineBag चलाने से पहले इसे एक रणनीति में बदलें।रणनीति टेम्पलेट
TradingView के Properties टैब का हर फ़ील्ड strategy() के एक आर्ग्युमेंट से मेल खाता है। मानों को स्क्रिप्ट की शुरुआत में नामित कॉन्स्टेंट के रूप में रखें: स्क्रिप्ट प्राथमिकता के साथ हर टिकर एक जैसी मान्यताओं पर परखा जाता है।
TIMEFRAMEटाइमफ़्रेम
INITIAL_CAPITAL · CURRENCYप्रारंभिक पूंजी
ORDER_SIZE · ORDER_SIZE_TYPEडिफ़ॉल्ट ऑर्डर आकार
PYRAMIDINGपिरामिडिंग
BAR_MAGNIFIERबार का विवरण स्तर
CALC_EVERY_TICK · CALC_ON_FILLSस्क्रिप्ट निष्पादन
COMMISSION · COMMISSION_TYPEकमीशन
MARGIN_LONG · MARGIN_SHORTलॉन्ग और शॉर्ट लीवरेज
SLIPPAGEस्लिपेज
LIMIT_FILL_TICKSलिमिट ऑर्डर निष्पादन
FILL_ON_BAR_CLOSEऑर्डर निष्पादन में देरी
runtime.error()किसी भी दूसरे टाइमफ्रेम पर स्क्रिप्ट को रोकता है।
//@version=6
// ============================================================================
// Trend breakout · ATR risk — PineBag strategy template
// ============================================================================
// ----------------------------------------------------------------------------
// STRATEGY PROPERTIES (TradingView: Settings → Properties)
// ----------------------------------------------------------------------------
// TIMEFRAME takes a standard TradingView interval. Paste one of these, by the
// lowest TradingView plan that has it (tradingview.com/pricing, Charts):
// Basic days "1D" "1W" "1M" "3M" "6M" "12M"
// Essential minutes "1" "3" "5" "15" "30" "45"
// hours "60" "120" "180" "240"
// ranges "1R" "10R" "100R" "1000R"
// Premium seconds "1S" "5S" "10S" "15S" "30S" "45S"
// Ultimate ticks "1T" "10T" "100T" "1000T"
// Other intervals are custom and not used: a week is "1W", not "7D".
const string TIMEFRAME = "1D" // Chart timeframe
const float INITIAL_CAPITAL = 100000 // Initial capital
const string CURRENCY = currency.USD // Initial capital currency
const float ORDER_SIZE = 100 // Default order size
const string ORDER_SIZE_TYPE = strategy.percent_of_equity // Order size: % of equity
const int PYRAMIDING = 1 // Pyramiding
const bool BAR_MAGNIFIER = false // Bar detalization: Default (4 ticks per bar)
const bool CALC_EVERY_TICK = false // Script execution: On bar close
const bool CALC_ON_FILLS = false // Script execution: no recalculation after fills
const float COMMISSION = 0 // Commission
const string COMMISSION_TYPE = strategy.commission.percent // Commission: Percent
const float MARGIN_LONG = 100 // Long leverage 1x (leverage = 100 / margin)
const float MARGIN_SHORT = 100 // Short leverage 1x
const int SLIPPAGE = 0 // Slippage, ticks
const int LIMIT_FILL_TICKS = 0 // Limit order execution: Requested price
const bool FILL_ON_BAR_CLOSE = false // Order execution delay: One tick
strategy("Trend breakout · ATR risk", overlay = true,
initial_capital = INITIAL_CAPITAL,
currency = CURRENCY,
default_qty_type = ORDER_SIZE_TYPE,
default_qty_value = ORDER_SIZE,
pyramiding = PYRAMIDING,
use_bar_magnifier = BAR_MAGNIFIER,
calc_on_every_tick = CALC_EVERY_TICK,
calc_on_order_fills = CALC_ON_FILLS,
commission_type = COMMISSION_TYPE,
commission_value = COMMISSION,
margin_long = MARGIN_LONG,
margin_short = MARGIN_SHORT,
slippage = SLIPPAGE,
backtest_fill_limits_assumption = LIMIT_FILL_TICKS,
process_orders_on_close = FILL_ON_BAR_CLOSE)
// Stops with a clear message on any other timeframe; PineBag reads TIMEFRAME
// and selects it for the run.
if timeframe.period != TIMEFRAME
runtime.error("Switch the chart to the " + TIMEFRAME + " timeframe.")
// ----------------------------------------------------------------------------
// INPUT SETTINGS (TradingView: Settings → Inputs)
// ----------------------------------------------------------------------------
fastLength = input.int(20, "Fast EMA", minval = 1)
slowLength = input.int(50, "Slow EMA", minval = 2)
breakoutLength = input.int(20, "Breakout lookback", minval = 2)
atrLength = input.int(14, "ATR length", minval = 1)
atrStop = input.float(2.0, "ATR stop multiplier", minval = 0.1, step = 0.1)
// ----------------------------------------------------------------------------
// CALCULATIONS
// ----------------------------------------------------------------------------
fast = ta.ema(close, fastLength)
slow = ta.ema(close, slowLength)
atr = ta.atr(atrLength)
highestBefore = ta.highest(high, breakoutLength)[1]
// ----------------------------------------------------------------------------
// ENTRIES AND EXITS
// ----------------------------------------------------------------------------
longSignal = fast > slow and close > highestBefore
if longSignal and strategy.position_size == 0
strategy.entry("Long", strategy.long)
stopPrice = strategy.position_avg_price - atr * atrStop
strategy.exit("ATR stop", "Long", stop = stopPrice)
// ----------------------------------------------------------------------------
// PLOTS
// ----------------------------------------------------------------------------
plot(fast, "Fast EMA", color = color.rgb(0, 153, 255))
plot(slow, "Slow EMA", color = color.rgb(123, 97, 255))
TIMEFRAME के मान
उद्धरण चिह्नों में TradingView का कोई मानक इंटरवल लिखें। कौन-से लोड होंगे, यह आपके TradingView प्लान पर निर्भर करता है, जैसा tradingview.com/pricing पर बताया गया है।
दिन, सप्ताह और महीने।
"1D" "1W" "1M" "3M" "6M" "12M"
मिनट, घंटे और रेंज बार। मिनट के साथ कोई अक्षर नहीं होता; एक घंटा 60 है।
"1" "3" "5" "15" "30" "45""60" "120" "180" "240""1R" "10R" "100R" "1000R"
सेकंड-आधारित इंटरवल।
"1S" "5S" "10S" "15S" "30S" "45S"
टिक-आधारित इंटरवल।
"1T" "10T" "100T" "1000T"
const string TIMEFRAME = "1D" // 1 day
// const string TIMEFRAME = "1W" // 1 week
// const string TIMEFRAME = "240" // 4 hours
// const string TIMEFRAME = "15" // 15 minutes
// const string TIMEFRAME = "30S" // 30 seconds, Premium and higher
ऑर्डर साइज़: प्रतिशत, राशि या मात्रा
ORDER_SIZE संख्या रखता है और ORDER_SIZE_TYPE बताता है कि उसका क्या अर्थ है। दोनों मिलकर TradingView के Properties टैब का Order size फ़ील्ड भरते हैं।
strategy.percent_of_equity
मौजूदा इक्विटी का प्रतिशत। 10 का अर्थ है हर ट्रेड पर इक्विटी का 10%।
strategy.cash
स्ट्रैटेजी की मुद्रा में राशि। 1000 का अर्थ है हर ट्रेड पर 1,000 USD।
strategy.fixed
कॉन्ट्रैक्ट, शेयर या कॉइन की संख्या। 0.5 का अर्थ है हर ट्रेड पर 0.5 BTC।
qty = …
डिफ़ॉल्ट साइज़ केवल उन ऑर्डर पर लागू होता है जिनका अपना qty नहीं है। qty = … वाली एंट्री उसी मान का उपयोग करती है।
// 10% of equity per trade
const float ORDER_SIZE = 10
const string ORDER_SIZE_TYPE = strategy.percent_of_equity
// 1,000 USD per trade (CURRENCY = currency.USD)
// const float ORDER_SIZE = 1000
// const string ORDER_SIZE_TYPE = strategy.cash
// 0.5 contracts, shares or coins per trade
// const float ORDER_SIZE = 0.5
// const string ORDER_SIZE_TYPE = strategy.fixed
आपके अपने वेरिएबल
अपनी रणनीति के लॉजिक की सेटिंग्स को अलग INPUT SETTINGS ब्लॉक में रखें। हर input.int(), input.float() या input.bool() कॉल TradingView के Inputs टैब में एक फ़ील्ड बन जाती है, इसलिए आप कोड बदले बिना उसे समायोजित कर सकते हैं।
// ----------------------------------------------------------------------------
// INPUT SETTINGS (TradingView: Settings → Inputs)
// ----------------------------------------------------------------------------
fastLength = input.int(20, "Fast EMA", minval = 1)
slowLength = input.int(50, "Slow EMA", minval = 2)
breakoutLength = input.int(20, "Breakout lookback", minval = 2)
atrLength = input.int(14, "ATR length", minval = 1)
atrStop = input.float(2.0, "ATR stop multiplier", minval = 0.1, step = 0.1)