المستندات / البدء

البدء

قم بإعداد PineBag مرة واحدة، ثم قم بإعداد اختبارك الأول في بضع دقائق.

تقرير محفظة PineBag بجوار اللوحة الجانبية الملحقة
مساحة عمل PineBag حقيقية: يقوم الامتداد بإعداد التشغيل بينما يظل التقرير الكامل مفتوحًا بجانبه.

أنت بحاجة إلى ثلاثة أشياء

تبدأ النسخة التجريبية لمدة 5 أيام تلقائيًا. أنها لا تتطلب بطاقة. يقتصر توفر التشغيل على خطة TradingView الخاصة بك.

قم بتثبيت وفتح PineBag

  1. قم بتثبيت الامتداد.
    استخدم زر تثبيت PineBag. قم بتثبيت الامتداد إذا كنت تريد الوصول السريع.
  2. افتح مخطط TradingView.
    قم بتسجيل الدخول أولاً، ثم افتح أي سوق وإطار زمني مدعومين.
  3. أعد تحميل علامة تبويب الرسم البياني.
    قم بذلك بعد تثبيت PineBag أو تحديثه حتى يتمكن المخطط من الاتصال.
  4. افتح PineBag.
    حدد أيقونة PineBag. يتحول مؤشر الاتصال إلى اللون الأخضر عندما يكون المخطط جاهزًا.

اللوحة الجانبية تحكم عن طريق التحكم

الأرقام الموجودة على الواجهة الحقيقية مطابقة للشروحات. لا شيء في هذه الصورة هو نموذج بالحجم الطبيعي.

1 2 3 4 5 6 7 8 9 10 11
  1. 1
    الاستراتيجية

    الاستراتيجية المحمّلة. انقر على البطاقة لفتحها في المحرر؛ وتزيلها سلة المهملات في عنوان القسم.

  2. 2
    تشغيل الملخص

    الإطار الزمني ورأس المال وحجم الطلب والعمولة التي سيتم استخدامها.

  3. 3
    بحث

    يفتح بحث رمز TradingView حتى تتمكن من إضافة مؤشر مؤهل للبورصة.

  4. 4
    حقيبة النسخ

    ينسخ كل شريط، واحد EXCHANGE:SYMBOL لكل سطر.

  5. 5
    كيس لصق

    يقبل الأسطر والفواصل والفواصل المنقوطة والمسافات ويتجاهل التكرارات.

  6. 6
    واضح

    يطلب نقرة ثانية، وينسخ الرموز ثم يفرغ القائمة؛ ويعيدها «لصق الرموز».

  7. 7
    علامات الشريط

    يظهر الحقيبة الحالية. استخدم × لإزالة رمز واحد؛ أضف ما يصل إلى 500.

  8. 8
    تشغيل الاختبار الرجعي

    التحقق من صحة الإعداد وبدء تشغيل المحفظة التسلسلية.

  9. 9
    التقارير

    احفظ أحدث 50 تقريرًا محليًا وقم بتصدير JSON أو CSV.

  10. 10
    الأيام المتبقية

    Active days: 05 — الأيام المتبقية.

  11. 11
    الدعم

    يتوفر الدعم للطلبات الفنية وطلبات الفوترة والترخيص والخصوصية.

قم بتحميل الإستراتيجية

محرر PineBag الحقيقي بإستراتيجية Pine Script
يستخدم المحرر المدمج أرقام الأسطر وتمييز بناء الجملة ويحفظ مصدر العمل تلقائيًا.
  1. اختر المصدر.
    إسقاط أ .pine في الإستراتيجية، أو افتح المحرر والصق الكود.
  2. إصلاح أي رسالة تحقق.
    يجب أن يحتوي النص على strategy(). يُظهر PineBag خطأً واضحًا إذا تعذر استخدامه.
  3. تحقق من الملخص.
    قم بتأكيد اسم البرنامج النصي والإطار الزمني ورأس المال وحجم الطلب الموضح أعلاه.
لا يمكن اختبار النصوص البرمجية للمؤشر. إذا كان المصدر يبدأ بـ indicator()، قم بتحويلها إلى إستراتيجية قبل تشغيل PineBag.
جاهز: الاتصال باللون الأخضر، وملخص الإستراتيجية مرئي وحقيبة الأسهم الخاصة بك ليست فارغة.

قالب الاستراتيجية

يقابل كل حقل في علامة تبويب Properties في TradingView وسيطًا في 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()

يوقف البرنامج النصي على أي إطار زمني آخر.

Pine Script® v6trend-breakout-atr-risk.pine
//@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.

Basic وما فوق

الأيام والأسابيع والأشهر.

"1D" "1W" "1M" "3M" "6M" "12M"

Essential وما فوق

الدقائق والساعات وأشرطة النطاق. لا تحمل الدقائق حرفًا؛ والساعة الواحدة هي 60.

"1" "3" "5" "15" "30" "45"
"60" "120" "180" "240"
"1R" "10R" "100R" "1000R"

Premium وما فوق

فواصل زمنية بالثواني.

"1S" "5S" "10S" "15S" "30S" "45S"

Ultimate فقط

فواصل زمنية بالتيك.

"1T" "10T" "100T" "1000T"

Pine Script® v6TIMEFRAME
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
الأسبوع هو "1W" وليس "7D". يقرأ PineBag القيمة "7D" على أنها "1W" ويرفض الفواصل المخصصة الأخرى، مثل "2M" أو "2D".

حجم الأمر: نسبة مئوية أو مبلغ أو كمية

يحمل ORDER_SIZE الرقم، ويحدد ORDER_SIZE_TYPE معناه. معًا يملآن حقل Order size في علامة التبويب Properties في TradingView.

strategy.percent_of_equity

نسبة مئوية من رأس المال الحالي. تعني 10 استخدام 10% من رأس المال في كل صفقة.

strategy.cash

مبلغ بعملة الاستراتيجية. تعني 1000 مبلغ 1,000 USD لكل صفقة.

strategy.fixed

عدد العقود أو الأسهم أو العملات. تعني 0.5 مقدار 0.5 BTC لكل صفقة.

qty = …

يُطبَّق الحجم الافتراضي فقط على الأوامر التي ليس لها qty خاص بها. يستخدم الدخول الذي يحدد qty = … تلك القيمة بدلًا منه.

Pine Script® v6ORDER SIZE
// 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() حقلاً في علامة تبويب Inputs في TradingView، فيمكنك ضبطه دون تعديل الشيفرة.

Pine Script® v6INPUT SETTINGS
// ----------------------------------------------------------------------------
// 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)
↓قم بتنزيل قالب .pine القابل للتحرير4 كيلو بايت · Pine Script v6