دليل Pine Script v5: برمج أول مؤشر فوركس مخصص لك

تجاوز 'سلسلة الغذاء في الفوركس' عبر بناء أدوات تناسب استراتيجيتك الخاصة. يعلمك هذا الدليل كيفية إتقان Pine Script v5 لإنشاء مؤشرات احترافية ومخصصة.

FXNX

FXNX

writer

٢٦ فبراير ٢٠٢٦
9 دقيقة للقراءة
A high-tech workspace showing a laptop with the TradingView Pine Editor open, featuring clean code on one side and a professional forex chart with a custom indicator on the other.

تخيل قضاء ساعات في التمرير عبر مكتبة TradingView العامة، لتكتشف فقط أن كل مؤشر 'الكأس المقدسة' (Holy Grail) يعاني من التأخير، أو يعيد رسم نفسه (repaints)، أو يملأ مخططك بضجيج عديم الفائدة. بالنسبة للمتداول المتوسط، تم تصميم سلسلة الغذاء في الفوركس لابتلاع أولئك الذين يعتمدون على الأدوات الجاهزة التي يستخدمها الجميع بالفعل. إن سر التنفيذ الاحترافي ليس في العثور على مؤشر أفضل؛ بل في بناء مؤشر يتحدث لغة استراتيجيتك المحددة. من خلال إتقان Pine Script v5، ستتوقف عن كونك مستهلكاً للمؤشرات المتأخرة وتبدأ في أن تكون مهندساً للعوائد القوية (Alpha). سيأخذك هذا الدليل من سكريبت فارغ إلى أداة وظيفية مخصصة تصفّي ضجيج السوق وتتماشى تماماً مع ملف المخاطر الخاص بك. هل أنت مستعد للتوقف عن 'تسوق المؤشرات' والبدء في برمجة ميزتك التنافسية؟

محرك Pine Script v5: التفكير 'شمعة بشمعة'

لماذا يعتبر الإصدار 5 هو المعيار الحديث

إذا كنت قد جربت البرمجة على TradingView من قبل، فربما رأيت سكريبتات تبدأ بـ //@version=4 أو حتى أقدم. ورغم أن هذه النسخ لا تزال تعمل، إلا أن Pine Script v5 هو المعيار الحالي في الصناعة لسبب وجيه؛ حيث قدم مساحات الأسماء (تنظيم الوظائف منطقياً)، ومكتبات أفضل، وتنفيذاً أكثر استقراراً. بالنسبة للمتداول، هذا يعني أخطاءً أقل عندما تحاول حساب إشارة دخول معقدة على زوج GBP/USD خلال افتتاح لندن عالي التقلب. تم تصميم الإصدار 5 ليكون أكثر نظافة وقابلية للقراءة، وهو أمر حيوي عندما تتطور إلى مهندس أنظمة بدلاً من مجرد متداول يدوي.

نموذج التنفيذ: Pine مقابل البرمجة التقليدية

A conceptual diagram showing the 'Bar-by-Bar' execution model: an arrow moving across a series of candles, with a 'Calculation' box above each one.
To visually explain the fundamental way Pine Script processes data.

معظم لغات البرمجة مثل Python أو C++ تنفذ الكود من الأعلى إلى الأسفل مرة واحدة. أما Pine Script فمختلفة—فهي محرك يعمل بنظام "شمعة بشمعة" (bar-by-bar). فكر في الأمر كجهاز عرض سينمائي؛ إذا كان مخططك يحتوي على 500 شمعة، فإن السكريبت الخاص بك يعمل 500 مرة، مرة واحدة لكل شمعة من اليسار إلى اليمين. وفي الشمعة الأخيرة (شمعة الوقت الفعلي)، يعمل السكريبت مع كل تحرك للسعر (tick).

فهم هذا المبدأ هو لحظة الإدراك الكبرى. أنت لا تكتب سكريبت للنظر إلى المخطط بأكمله دفعة واحدة؛ بل تكتب منطقاً لشمعة واحدة، ويتولى Pine عملية التكرار نيابة عنك. هذا هو السبب في أن الحسابات تظل خفيفة وسريعة، حتى عندما تستخدم معادلات رياضية ثقيلة على مخطط الدقيقة الواحدة.

نصيحة للمحترفين: نظراً لأن السكريبت يعاد تشغيله مع كل تحرك للسعر في الشمعة الحية، يجب عليك التمييز بين الحسابات 'العابرة' (التي تتغير مع كل حركة) والمتغيرات 'المستمرة' (التي تتذكر قيمتها من الشمعة السابقة). استخدم الكلمة المفتاحية var إذا كنت تريد أن يحتفظ المتغير بقيمته عبر الشموع.

تشريح السكريبت وقوة بيانات 'السلسلة' (Series)

تفكيك الإعلان والمنطق

يتبع كل Pine Script احترافي هيكلاً محدداً من أربعة أجزاء. أولاً هو الإعلان (Declaration)، حيث تخبر TradingView أن "هذا هو الإصدار 5" و "هذا مؤشر وليس استراتيجية". ثانياً هي المدخلات (Inputs)، التي تنشئ قائمة الإعدادات للمستخدمين. ثالثاً هو منطق الحساب (Calculation Logic)، حيث تتم العمليات الحسابية. وأخيراً المخرجات (Output)، حيث تستخدم وظائف مثل plot() للرسم على المخطط.

إتقان مصفوفات OHLC بدون حلقات تكرار معقدة

في معظم اللغات، إذا كنت تريد العثور على متوسط آخر 14 سعر إغلاق، فسيتعين عليك كتابة حلقة تكرار 'for' للمرور عبر مصفوفة. لكن Pine Script يجعل هذا الأمر سهلاً للغاية من خلال بيانات السلسلة (Series).

في Pine، لا يعتبر close مجرد رقم؛ بل هو سلسلة (قائمة) لكل سعر إغلاق في التاريخ. للنظر إلى الوراء، تستخدم عامل مرجع التاريخ [].

مثال: close[0] هو السعر الحالي. close[1] هو إغلاق الشمعة السابقة. إذا كنت تتداول اختراقاً على EUR/USD، فإن التحقق مما إذا كان high[0] > high[1] هو مهمة من سطر واحد، وليس حلقة تكرار من 10 أسطر.

هذا التعامل المدمج مع سجل الأسعار هو ما يجعل Pine Script اللغة الأكثر كفاءة للتحليل الفني. يمكنك العثور على مزيد من التفاصيل حول أنواع البيانات هذه في وثائق TradingView الرسمية.

A split-screen comparison: One side showing raw price action, the other showing the same chart with a custom color-coded momentum indicator.
To demonstrate the power of visual logic and conditional coloring.

بناء الواجهة: إنشاء مدخلات مستخدم ديناميكية

جعل مؤشرك قابلاً للتعديل

كتابة الأرقام بشكل ثابت (Hard-coding) هي أسرع طريقة لإفشال الاستراتيجية. إذا قمت بتثبيت متوسط متحرك لفترة 20، فستضطر إلى إعادة كتابة الكود في كل مرة يتحول فيها السوق من بيئة اتجاهية إلى نطاق عرضي. بدلاً من ذلك، نستخدم مكتبة input. يتيح لك هذا تغيير المعلمات من أيقونة "الإعدادات" دون الحاجة للنظر إلى الكود مرة أخرى.

أنواع المدخلات: int و float و source

لبناء واجهة مستخدم احترافية، تحتاج إلى استخدام أنواع المدخلات الصحيحة:

  1. input.int: يستخدم للأعداد الصحيحة مثل الأطوال (مثلاً: فترة RSI بقيمة 14).
  2. input.float: يستخدم للأرقام العشرية (مثلاً: مضاعف ATR بقيمة 1.5).
  3. input.source: هذا مدخل قوي، يتيح للمستخدم اختيار بيانات السعر التي سيتم استخدامها—سواء كانت close أو hl2 (الوسيط)، أو حتى مخرجات مؤشر آخر.

تحذير: امنح مدخلاتك دائماً عناوين واضحة و 'تلميحات' (tooltips). بعد عام من الآن، لن تتذكر ما يفعله "Var1"، لكنك ستفهم "Trend Filter Sensitivity". الاحترافية في واجهة المستخدم تؤدي إلى أخطاء تنفيذ أقل في التداول الحي.

عند اختيار مدخلاتك، فكر في استخدام المؤشرات التكيفية التي تتغير بناءً على سياق السوق بدلاً من الأرقام الثابتة.

المنطق البصري: برمجة الزخم والألوان الشرطية

A screenshot of the TradingView 'Settings' menu showing custom inputs (integer sliders, dropdowns, and color pickers) created via code.
To show the reader what the end-user interface looks like.

تنفيذ جمل 'If' لظروف السوق

الآن نصل إلى جوهر السكريبت: المنطق. لنفترض أنك تريد تحديد إعداد شراء عالي الاحتمالية. قد ترغب في رؤية السعر فوق EMA لـ 200 يوم، بينما يكون RSI تحت 30 (تشبع بيعي). في Pine، يبدو هذا كفحص منطقي بسيط:

isLong = price > ema200 and rsiValue < 30

يمكن بعد ذلك استخدام هذا المتغير المنطقي (صواب/خطأ) لإحداث تغييرات بصرية على مخططك. هذه هي الطريقة التي تتقن بها التقلبات—عبر إنشاء فلاتر لا تظهر الإشارات إلا عند استيفاء شروط محددة.

مرئيات ديناميكية مع color.new و plot()

الخطوط الثابتة مملة. تستخدم الأدوات الاحترافية التلوين الشرطي. يمكنك إخبار Pine بتلوين الخط باللون الأخضر عندما يكون الزخم صعودياً وباللون الأحمر عندما يكون هبوطياً.

plotColor = isLong ? color.green : color.red
plot(ema20, color=plotColor, linewidth=2)

هذا ينشئ حلقة تغذية بصرية فورية. بدلاً من التدقيق في الأرقام، يعالج دماغك تحول اللون فوراً، مما يقلل من العبء المعرفي خلال الجلسات سريعة الوتيرة مثل تداخل بورصتي لندن ونيويورك.

أدوات المحترفين: تصحيح الأخطاء وفخ إعادة الرسم (Repainting)

استخدام نافذة البيانات كمنصة تشخيص

أحد أكبر الإحباطات للمبرمجين الجدد هو عندما لا يبدو أن المؤشر يحسب بشكل صحيح. وظيفة plot() هي أفضل صديق لك هنا. حتى لو كنت لا تريد رؤية قيمة على المخطط، يمكنك رسمها والتحقق من نافذة البيانات (Data Window) في الشريط الجانبي لـ TradingView. إذا كانت حساباتك تقول أن ATR يجب أن يكون 0.0015 ولكن نافذة البيانات تظهر 150.0، فستعرف أن لديك خطأ في وضع العلامة العشرية قبل أن تخاطر بدولار واحد.

An infographic summarizing the 4 parts of a script: Declaration, Inputs, Logic, and Output.
To provide a quick-reference summary of the article's core technical lesson.

لماذا تبدو المؤشرات مثالية في الماضي (وكيفية إصلاح ذلك)

هذا هو "فخ إعادة الرسم" (Repainting Trap). بعض الوظائف، وخاصة request.security (المستخدمة لتحليل الأطر الزمنية المتعددة)، يمكن أن تنظر بالخطأ إلى المستقبل أثناء اختبار الاستراتيجية (backtesting).

تخيل سكريبت يتحقق من إغلاق اليوم بينما تتداول أنت على مخطط 5 دقائق. إذا لم يتم برمجته بشكل صحيح، فإن السكريبت "سيعرف" إغلاق اليوم قبل انتهاء اليوم فعلياً. ينتج عن هذا اختبارات تبدو كخط مستقيم للأعلى، لكنها تفشل فشلاً ذريعاً في الوقت الفعلي.

نصيحة للمحترفين: استخدم دائماً lookahead = barmerge.lookahead_off عند جلب البيانات من أطر زمنية أعلى. يضمن ذلك أن السكريبت الخاص بك يستخدم فقط البيانات التي كانت متاحة بالفعل في تلك اللحظة المحددة من الزمن. تجنب هذه الفخاخ أمر ضروري للقضاء على الانزلاق السعري وأخطاء التنفيذ.

الخاتمة

إتقان Pine Script هو الخطوة الأهم للانتقال من مجرد 'متسوق مؤشرات' بالتجزئة إلى متداول منهجي. لقد غطينا الانتقال من فهم محرك v5 إلى بناء أداة بصرية ديناميكية تصفّي ضجيج 'سلسلة الغذاء في الفوركس'. من خلال برمجة أدواتك الخاصة، تضمن أن تحليلك الفني هو انعكاس مباشر لملف المخاطر الفريد الخاص بك، وليس مجرد قالب عام. بينما تستمر في تحسين السكريبت الخاص بك، تذكر أن أقوى المؤشرات غالباً ما تكون أبسطها والتي تفهمها بعمق. في FXNX، نؤمن بتمكين المتداولين بالبيانات والأدوات اللازمة للدقة—وسكريبتك المخصص الأول هو حجر الزاوية لتلك الدقة.

خطوتك التالية: افتح محرر Pine في TradingView الآن وحاول برمجة مؤشر تقاطع EMA بسيط يغير لونه عندما يكون التقلب (ATR) أعلى من متوسطه لـ 14 يوماً. بمجرد بنائه، شارك نتائجك مع مجتمع FXNX!

الأسئلة الشائعة

فيما تستخدم Pine Script v5؟

Pine Script v5 هي لغة البرمجة الخاصة بـ TradingView لإنشاء مؤشرات فنية مخصصة، واستراتيجيات اختبار رجعي (backtesting)، وتنبيهات مؤتمتة للأسواق المالية مثل الفوركس والأسهم.

هل يمكنني استخدام Pine Script لأتمتة تداولات الفوركس الخاصة بي؟

نعم، بينما يعمل Pine Script نفسه على TradingView، يمكنك ربط السكريبتات الخاصة بك بالوسطاء أو استخدام الـ webhooks لإرسال إشارات إلى منصات التنفيذ الآلي، مما يسمح بنهج تداول آلي بالكامل.

كيف يمكنني إصلاح مؤشر يعيد الرسم (repainting) في Pine Script v5؟

لإصلاح إعادة الرسم، تأكد من عدم استخدام بيانات مستقبلية في حساباتك. عند استخدام وظائف الأطر الزمنية المتعددة مثل request.security، اضبط دائماً معلمة lookahead على barmerge.lookahead_off لضمان استخدام السكريبت للبيانات التاريخية المؤكدة فقط.

مستعد للتداول؟

انضم لآلاف المتداولين على NX One. سبريد ٠.٠، أكثر من 500 أداة.

Share

عن الكاتب

FXNX

FXNX

كاتب المحتوى
المواضيع:
  • دليل Pine Script v5
  • مؤشر فوركس مخصص
  • برمجة TradingView
  • تداول الفوركس الخوارزمي
  • التحليل الفني للفوركس