أي شخص كان مهتمًا بأسواق الأوراق المالية أو العملات المشفرة قد شاهد هذه الخطوط الإضافية. وربما سمعت آراء المتداولين المخضرمين بأنهم لا يعملون وكيف لا يستخدمون أي شيء. لكنهم يساعدون كثيرًا وتبدو محطة التداول الخاصة بي ، والتي أراها بتكاسل مرة واحدة في اليوم ، شيئًا مثل الصورة أدناه.
كيف يتم ترتيبهم جميعًا؟ ولمن يمكن أن يكون هذا مفيدًا؟ يجب عليك بالتأكيد التعرف على هذا إذا:
- يمكنك استخدامها في تجارتك
- هل تخطط لكتابة روبوت تجاري
- هل تريد تنفيذ استراتيجية تداول بنفسك

غالبًا ما يكون المؤشر الفني عبارة عن نافذة ، أو وزن ، أو وظيفة تكرار للأسعار والأحجام التي تأتي من التبادل في شكل مجموعة من شموع TOHLCV (وقت يونكس ، مفتوح ، مرتفع ، منخفض ، مغلق ، حجم). يمكن أيضًا استخدام العديد من عوامل التصفية أو الحدود الدنيا أو المؤشرات الأخرى كأساس للحسابات اللاحقة.
المتوسط المتحرك (SMA)عند تنفيذ المؤشرات ، من الملائم للغاية استخدام نهج البرمجة الوظيفية. على سبيل المثال ، المتوسط المتحرك ، هذا هو مجرد متوسط كل قيمة لوظيفة النافذة المتحركة بسعر الإغلاق
function sma($close, window) { return rolling(x => mean(x), window, $close); }
حيث تكون دالة الوسط () هي متوسط القيمة ، ومعلمة النافذة هي حجم النافذة ، والدحرجة () هي مزيج من وظيفة النافذة ، والتي تنتج لكل خلية حالية في المصفوفة مصفوفة من عناصر n الأخيرة ، والعملية التي تقلل من النافذة إلى رقم.
function rolling(operation, window, array) { let result = []; for (let i = 0; i < array.length; i++) { if (i + 1 < window) { result.push(NaN); } else { result.push(operation(array.slice(i + 1 - window, i + 1))); } } return result; }
المتوسط المتحرك هو مؤشر متأخر ويساعد على تحديد الاتجاه. يتم رسمها على سطح الرسم البياني للسعر وعادة ما يتم تجاهل القيم الأولى.

عادة ، يتم النظر في زوج من المؤشرات ، والنقطة عندما يعبر مؤشر ذو نافذة قصيرة مؤشرًا مع نافذة طويلة يعتبر نقطة دخول محتملة من الأسفل ونقطة خروج من الأعلى. من الناحية العملية ، غالبًا ما يتم استخدام المتوسط المتحرك المرجح بشكل كبير ، باستخدام وظيفة النافذة الموزونة لتقليل تأثير التأخير.
الانحراف المعياري (STDEV)إذا استبدلنا دالة mean () في الإصدار السابق بالجذر من التباين sd () ، فسوف نحصل على انحراف معياري متحرك.
function stdev($close, window) { return rolling(x => sd(x), window, $close); }
يعتبر التشتت أمرًا معتادًا بالطريقة المعتادة ، غالبًا بدون تصحيح Bessel. يتم استخدام جذر التباين أيضًا ، حيث يتم قياس التباين نفسه بالروبل / الدولار.
البولنجر باند (BB)وبالتالي ، فقد تلقينا بالفعل مؤشرين أساسيين يمكن دمجهما بالفعل وتلقي مؤشرين جديدين. على سبيل المثال ، إذا أضفنا نقطة متحرك ونقطة انحراف معيارية نقطة ، أثناء الضرب في 2 ، نحصل على الجزء العلوي من شريط بولينجر ، وإذا طرحنا الجزء السفلي.

في الكود ، سيبدو مثل هذا
function bb($close, window, mult) { let middle = sma($close, window); let upper = pointwise((a, b) => a + b * mult, middle, stdev($close, window)); let lower = pointwise((a, b) => a - b * mult, middle, stdev($close, window)); return { lower : lower, upper : upper}; }
حيث لا تقوم الدالة النقطية بأي شيء آخر ولكنها تجمع عنصرًا واحدًا من صفيفين باستخدام العملية المعطاة لها.
يساعد البولنجر باند على تحديد الهدوء قبل حركة سعر كبيرة ، ويتم استخدامه كأداة لعرض التقلبات بشكل ملائم على الرسم البياني ؛ لا يمكن عرض الانحراف المعياري كتراكب على نفس الرسم البياني للسعر ، لذلك من المناسب تأجيله من المتوسط المتحرك.
ملاحظةيحتوي هذا المؤشر على عيب واحد - فهو يستخدم وظائف مرجحة أسيًا. كتمرين ، يمكنك محاولة تحويله بنفسك ، ولا تنس أن تأخذ في الاعتبار أن الانحراف المعياري يحتاج أيضًا إلى حسابه بشكل متوازن.
المتوسط المتحرك المرجح بشكل كبير (EMA)كيف يمكن تقليل تأخر المتوسط المتحرك؟ نظرًا لأنه عند حسابه ، تتم إضافة آخر أسعار إغلاق ، يمكنك أن تفهم أنه يمكنك إضافة بعض الوزن ، مما يقلل من مساهمة الأسعار القديمة. وهكذا نأتي إلى صيغة وظيفة نافذة مرجحة.
barx= frac sumxiN= frac sum1 cdotxi sum1 quad Rightarrow quad widetildex= frac sumxiwi sumwi
إذا
wi=qi واختيار نوع ثابت
q أقل من واحد ، ثم نحصل على وزن متناهي لانهائي ، إذا جمعنا الأسعار في نفس الوقت بدءًا من الأحدث.

يمكن تبسيط الحسابات إلى حد كبير إذا لم تؤخذ مساهمة الأطراف في الاعتبار. من خلال توسيع حجم النافذة إلى الطول الكامل ، يمكنك الحصول على تعريف تعاودي.
1+q+q2+...+qn undersetn to infty undersetq<0 تقريبا frac11−q mathrmEMAcurr= frac sumxiqi sumqi تقريبا(1−q) sumxiqi mathrmEMAالتالي= fracxnext+q cdot sumxiqi1+q cdot sumqi=(1−q) cdot left[xnext+q cdot sumxiqi right] mathrmEMAnext=(1−q) cdotxnext+q cdot mathrmEMAcurr
نتيجة لذلك ، نحتاج إلى اختيار بعض القيمة
alpha=1−q كثابت تنعيم.
يمكن أن يظهر أنه إذا أخذت
alpha=2/(N+1) يصبح مركز كتلة أوزان EMA و SMA أعلاه هو نفسه. في الكود ، يبدو كل شيء أسهل بكثير.
function ema($close, window, weight = null) { weight = weight ? weight : 2 / (window + 1); let ema = [ mean($close.slice(0, window)) ]; for (let i = 1; i < $close.length; i++) { ema.push($close[i] * weight + ema[i - 1] * (1 - weight)); }; return ema; }
بشكل عام ، هذا هو نفس المتوسط المتحرك ، ولكنه أكثر حساسية.

تعتمد كفاءة الاستخدام على خبرتك والإعدادات المستخدمة. على سبيل المثال ، في
هذا الموقع يتم اختيار المعلمات بشكل جيد.
تقارب / تقارب المتوسط المتحرك (MACD)جاء جيرالد أبيل في عام 1979 بواحد من أبسط مؤشرات التذبذب والنقاط الفعالة في الوقت نفسه. يحول مؤشرين اتجاه EMA إلى مؤشر لحظة ، مع أخذ الأفضل من عالمين. أي أنه ، تقريبًا ، يجد مشتقًا. يتم رسمه في نافذة منفصلة مع خطين ومخطط بياني ، وليس تراكب ، مثل السطور السابقة. في الواقع ، هناك الكثير من المؤشرات التي يتم رسمها في نافذة منفصلة ، ولكن قد يكون هذا في وقت آخر.

صيغة الحساب بسيطة للغاية ، خذ إيما مع نافذة قصيرة وقصيرة ، على سبيل المثال ، 26 و 12 وحدة ، وطرح ، سيكون الخط الناتج هو المؤشر المطلوب. بأخذ ema آخر من هذا الاختلاف بخطوة من 3 وحدات ، نحصل على خط إشارة. الرسم البياني الذي أضافه جيرالد لاحقًا يتم حسابه بالفرق بين النتيجتين السابقتين وهو في الأساس متوسط مرجح مشتق.
function macd($close, wshort, wlong, wsig) { let line = pointwise((a, b) => a - b, ema($close, wshort), ema($close, wlong)); let signal = ema(line, wsig); let hist = pointwise((a, b) => a - b, line, signal); return { line : line, signal : signal, hist : hist }; }
اختبار المؤشر ، الخطأ المعياري المقيّسباستخدام جداول دقيقة مع معنى المؤشرات ، يمكنك اختبار حساباتك نوعيًا. هناك طرق مختلفة لتحديد قياس الخطأ بين دالتين ، لكن الممارسة أظهرت أن متوسط الخطأ التربيعي المعياري ، والذي يعتبر
mathrmNRMSE= اليسار. sqrt frac sum( hatxi−xi)2N middle/( maxxi− minxi) right.
يعمل بشكل أفضل لكل من الأحجام الصغيرة والكبيرة. على سبيل المثال ، يمكن أن تكلف البيتكوين بالدولار 20000 دولار والفرق 10 دولارات ليس حرجًا ، وفي الوقت نفسه ، يمكن حساب عملة Altcoin واحدة في عدة ساتوشي.
function nrmse(f, g) { let sqrDiff = pointwise((a, b) => (a - b) * (a - b), f, g); return Math.sqrt(mean(sqrDiff)) / (Math.max(...f) - Math.min(...f)); }
الخلاصةلذلك ، في بضعة أسطر ، يمكنك التعبير عن المؤشرات الأساسية ، إذا كنت تخطط لإجراء تحليلها عن طريق التعلم الآلي ، ثم لتحديد نقاط الدخول المثالية ، أنصحك بالاهتمام بمؤشر ZigZag ، وهو غير مفيد للتداول ، ولكنه مفيد للغاية كمدرس. يجب أن يوضع في الاعتبار أيضًا أنه للتداول تحتاج إلى اختيار المؤشرات الأكثر اختلافًا ومحاولة تغيير معلمات الإدخال الخاصة بها. يمكنك محاولة تغييرها تلقائيًا بمرور الوقت ، حيث تميل المعلمات الأكثر فاعلية إلى التغيير.
المصادر المستخدمة1.
StockCharts - قائمة الخوارزميات مع بيانات التحقق في الجداول
2.
Cryptowatch - معلمات المؤشر
المضبوطة بشكل جيد
3.
جيثب - كود المصدر