مثال QuantStrat در استراتژی R - RSI

ساخت وبلاگ

در این مطالعه موردی QuantStrat ، ما با شاخص شاخص قدرت نسبی (RSI) یک استراتژی ایجاد خواهیم کرد که سیگنال های مربوط به رژیم های بیش از حد و بیش از حد را ارائه می دهد.

سیگنال های ورود و خروج استراتژی RSI

در استراتژی ما ، ما با سیگنال RSI کار خواهیم کرد تا فقط موقعیت های طولانی ایجاد کنیم. ما استراتژی را با 2 شرایط خروج مختلف در کل دوره تجزیه و تحلیل خواهیم کرد.

اولین شرط خروج زمانی است که RSI بیشتر از 70 است. در این حالت ما با فروش دارایی موقعیت طولانی خود را نقدینگی می کنیم. این نقطه خروج در بعضی مواقع تأثیر خوبی دارد اما مشکلی دارد که مانع از سقوط بزرگ قیمت ها نمی شود که می تواند باعث کاهش زیاد استراتژی شود.

شرط خروج دوم اضافه کردن از دست دادن توقف است. استفاده از ضرر توقف محافظه کارتر است زیرا قیمت می تواند به ضرر توقف برسد و سپس دوباره شروع به افزایش می کند ، اما ما اطمینان می دهیم که سرمایه ما زیر سطح مشخصی که با ضرر توقف تعریف می شود پایین نمی رود.

مرحله بعدی شامل کدگذاری استراتژی با بسته QuantStrat با اولین نقطه خروج (نقطه خروج آستانه RSI) است ، عملکرد و معیارهای ریسک را برای این استراتژی نشان می دهد و سپس همان استراتژی را با ترتیب از دست دادن توقف اجرا می کند و عملکرد و معیارهای ریسک را بدست می آورد. بشرسرانجام ما هر دو نتیجه را مقایسه خواهیم کرد.

یک جلسه R جدید را شروع کنید و اطمینان حاصل کنید که کتابخانه های Quantsstrat و GGPLOT2 بارگیری شده اند.

اولیه کردن ارز و ابزارها

  • جریان اولیه (USD)
  • ایجاد متغیر نماد (ما از سهام اپل استفاده خواهیم کرد - AAPL)
  • منطقه زمانی تنظیم شده
  • ابرداده سهام را با استفاده از عملکرد سهام () تعریف کنید
نماد ارز ("USD")

تاریخ ها را تعریف کنید و داده های تاریخی را بارگیری کنید

# ابتکار در اولیه سازی نمونه کارها و اشیاء سفارشات استفاده می شود و باید کمتر از StartDate باشد که تاریخ داده ها است. شروع کردن

پرتفوی ، حساب و اشیاء سفارش را اولیه کنید

# استراتژی ، نمونه کارها و حساب را با همین نام با نام PortName نامگذاری کنید

اولیه سازی و ذخیره استراتژی

# استراتژی را اولیه و ذخیره کنید (Stratname ، Store = True) 

افزودن شاخص ها

# تعریف شاخص RSI add. indicator (استراتژی = stratname ، name = "rsi" ، آرگومان = لیست (قیمت = نقل قول (cl (mktdata)) ، matype = "ema") ، label = "rsi") # عملکرد ApplyIndicators اجازه می دهدبرای مشاهده شاخص ها برای یک نماد خاص ضمن پیشرفت در ساخت تست استراتژی

سیگنال ها را اضافه کنید

سیگنال ها را برای ورود و خروج اضافه خواهیم کرد. سیگنال RSI برای ایجاد موقعیت های طولانی هنگام عبور از RSI از 30 و سیگنال خروج در هنگام رسیدن به 70.

add. signal (استراتژی = stratname ، name = "sigthreshold" ، آرگومان = لیست (آستانه = 30 ، ستون = "rsi" ، رابطه = "lt" ، cross = true) ، label = "longentry") add. Signal (استراتژی= stratname ، name = "sigthreshold" ، آرگومان = لیست (آستانه = 70 ، ستون = "rsi" ، رابطه = "gt" ، cross = true) ، label = "longexit") # با Applicationsignal () ، امکان پذیر استستون های سیگنال و همچنین اطلاعات باقیمانده شیء Mktdata را رعایت کنید. غوغا

قوانین استراتژی را اضافه کنید

add. rule (استراتژی = stratname ، name = 'rulleignal' ، آرگومان = لیست (sigcol = "longentry" ، sigval = true ، orderqty = 100 ، ordertype = "market" ، ordrside = "طولانی" ، جایگزین = false) ، برچسب= "longenter" ، فعال = true ، type = "enter") add. rule (استراتژی = stratname ، name = 'rulleignal' ، argument = لیست (sigcol = "longexit" ، sigval = true ، orderqty = "all" ، ordertype= "بازار" ، سفارش = "طولانی" ، جایگزین = غلط) ، برچسب = "longexit" ، فعال = درست ، نوع = "خروج") 

استراتژی را در نمونه کارها اعمال کنید

اکنون ما این استراتژی را برای نمونه کارها اعمال خواهیم کرد و سپس نمونه کارها ، حساب و سهام را به روز می کنیم.

# استراتژی را برای نمونه کارها T1 اعمال کنید

بازده سهام نمونه کارها

TSTATS

بازده سهام عدالت پرتفوی - اولین استراتژی RSI

این استراتژی در کل دوره بازده مثبت دارد. با این حال ، ما می توانیم در پایان سال 2018 یک کاهش عظیم مشاهده کنیم. همانطور که در بخش مدیریت ریسک بیان کردیم ، ضرر توقف مانع از دست دادن سهام بالا در هنگام کاهش بازار می شود و مورد سهام AAPL در پایان سال 2018 است.

بیایید برخی از معیارهای عملکرد و ریسک این استراتژی را ببینیم.

آمار استراتژی

tab.profit % select(Net.Trading.PL, Gross.Profits, Gross.Losses, Profit.Factor) t(tab.profit) AAPL Net.Trading.PL 23699.883948 Gross.Profits 27293.575028 Gross.Losses -3593.691080 Profit.Factor 7.594858 tab.wins % select(Avg.Trade.PL, Avg.Win.Trade, Avg.Losing.Trade, Avg.WinLoss.Ratio) t(tab.wins) AAPL Avg.Trade.PL 1184.994197 Avg.Win.Trade 1605.504413 Avg.Losing.Trade -1197.897027 Avg.WinLoss.Ratio 1.340269 # Note: The pipe operator ( %>٪) برای انتخاب ستون های خاص در بخشی از بسته dplyr. 

معیارهای خطر را بدست آورید

بازپرداخت

حداکثر کاهش 14 ٪ از حقوق صاحبان سهام است. این نشان دهنده یک سقوط بزرگ است و در برخی شرایط قابل قبول نیست. برخی از استراتژی ها محدود به حداکثر کاهش پایین تر از آستانه هستند. به همین دلیل برای اجرای همان استراتژی و مشاهده اثر از دست دادن توقف برای جلوگیری از خسارات بزرگ مهم است.

RSI متوقف کردن سفارش از دست دادن

ما استراتژی خود را برای اضافه کردن سیگنال از دست دادن توقف تجدید نظر خواهیم کرد. این برای جلوگیری از کاهش زیاد است.

متغیرها و اشیاء را اولیه کنید

. تعداد سفارش

شاخص های استراتژی را اضافه کنید

# تعریف شاخص RSI add. indicator (استراتژی = stratname ، name = "rsi" ، آرگومان = لیست (قیمت = نقل قول (cl (mktdata)) ، matype = "ema") ، label = "rsi") 

سیگنال ها را اضافه کنید

# افزودن سیگنال ها اضافه کنید. signal (استراتژی = stratname ، name = "sigrhreshold" ، آرگومان = لیست (آستانه = 30 ، ستون = "rsi" ، رابطه = "lt" ، cross = true) ، label = "longentry") اضافه کنید. سیگنال (استراتژی = stratname ، name = "sigthreshold" ، آرگومان = لیست (آستانه = 70 ، ستون = "rsi" ، رابطه = "gt" ، cross = true) ، label = "longexit") 

قوانین استراتژی را اضافه کنید

add. rule (استراتژی = stratname ، name = 'rulleignal' ، آرگومان = لیست (sigcol = "longentry" ، sigval = true ، orderqty = 100 ، ordertype = "market" ، ordrside = "طولانی" ، جایگزین = false) ، برچسب= "longenter" ، فعال = true ، type = "enter") add. rule (استراتژی = stratname ، name = 'rulleignal' ، argument = لیست (sigcol = "longexit" ، sigval = true ، orderqty = "all" ، ordertype= "بازار" ، سفارش = "طولانی" ، جایگزینی = غلط) ، برچسب = "longexit" ، فعال = true ، type = "خروج") # این قانون سوم اضافه می کند شرایط ضرر توقف اضافه می کند. rule (stratname ، name = "Rulesignal "، Argument = لیست (sigcol =" longentry "، sigval = true ، جایگزین = false ، orderside =" طولانی "، orderType =" Stoplimit "، tmult = true ، آستانه = نقل قول (. stoploss) ، txnfees = -10 ،orderqty = "all") ، type = "chain" ، parent = "longenter" ، label = "stoplosslong" ، فعال = false) 

با این قوانین ، نقاط خروج می توانند در دو حالت ایجاد شوند. ابتدا وقتی RSI به 70 آستانه رسید در حالی که ما در بازار هستیم و ثانیاً وقتی قیمت AAPL به 5 ٪ از قیمت دست از دست داد.

قانون برای از دست دادن توقف نیاز به یک پارامتر آستانه با درصد قیمت پر شده که از دست دادن توقف نشان می دهد ، نیاز داریم و ما باید مقدار "زنجیره" را به پارامتر نوع اضافه کنیم و از دستور والدین دستور از دست دادن توقف استفاده کنیم که همان است. سفارش Longenter.

برای (نماد در نمادها)

ما ترتیب از دست دادن توقف را با پارامتر فعال شده روی False تعریف کرده ایم ، بنابراین در اینجا ما سفارش از دست دادن توقف را فعال می کنیم:

Enable. rule (Stratname ، Type = "Chain" ، Label = "Stoploss") 

استراتژی را اعمال کنید

#استراتژی Apply T1

نمونه کارها ، حساب و سهام را به روز کنید

#Set Up Analytics UpdatePortf (نام PortName) daterange

معیارهای عملکرد جدید

TSTATS

بازده سهام Appl Portfolio - استراتژی RSI دوم

برداشت اول در حالی است که این استراتژی دوم در پایان دوره در مقایسه با استراتژی اول بازده کمتری دارد ، در این حالت ما از این استراتژی جلوگیری می کنیم. با پارامتر شدن از دست دادن توقف ، ما از خسارات بزرگ جلوگیری کرده ایم.

# معیارهای عملکرد و ریسک # سود Tab. Profit ٪ SELECT (net. trading. pl ، gross. profits ، gross. losses ، profit. factor) t (tab. profit) aapl net. pl. pl 10340. 877309 gross. profits 18134. 854581 gross. زیا ن-7793. 977272 سود. فاکتور 2. 326778 TAB. WINS ٪ SELECT (AVG. TRADE. PL ، AVG. WIN. TRADE ، AVG. LOSING. TRADE ، AVG. WINLOSS. RATIO) T (TAB. WINS) AAPL AVG. TRRADE. PL 304. 14345050avg. win. trade 906. 742729 avg. losing. trad e-556. 712662 avg. winloss. ratio 1. 628745 RETS

آمار خطر

# tab statistics Risk. Risk

حداکثر کاهش وقتی که ما از دست دادن توقف در استراتژی RSI 3. 28 ٪ است در حالی که در اولین استراتژی RSI (بدون از دست دادن توقف) ، حداکثر کاهش 14 ٪ بود. استراتژی RSI بدون از دست دادن توقف بازده بهتری را در پایان دوره نشان می دهد ، اما وقتی ضرر توقف را اضافه می کنیم ، وقتی افت بازار و هر دو نسبت شارپ و نسبت Calmar بهبود می یابد ، از ضررهای زیادی جلوگیری می کنیم. برای نتیجه گیری ، اگر تصمیم ما در مورد انتخاب استراتژی ، مبتنی بر نسبت شارپ (مانند بسیاری از استراتژی ها) باشد ، ما باید RSI را با ترتیب از دست دادن توقف انتخاب کنیم زیرا نسبت شارپ بالاتر از استراتژی RSI بدون از دست دادن توقف دارد.

اخبار رمز ارزها...
ما را در سایت اخبار رمز ارزها دنبال می کنید

برچسب : نویسنده : منیژه سلیمی بازدید : <-PostHit-> تاريخ : چهارشنبه 15 شهريور 1402 ساعت: 14:13