تجزیه و تحلیل فنی با r

ساخت وبلاگ

برای ساده سازی ، ما ابتدا چندین قانون معاملاتی را بر اساس معاملات روز ارزیابی می کنیم:

  1. سیگنال را بر اساس قانون فیلتر ساده بخرید
  2. بر اساس قانون فیلتر ساده ، سیگنال ها را بخرید و بفروشید
  3. سیگنال را بر اساس RSI بخرید
  4. سیگنال را بر اساس EMA بخرید و بر اساس RSI سیگنال بفروشید
  5. خرید سیگنال بر اساس RSI اما اندازه معاملات بستگی به سابقه قیمت دارد

سرانجام ، ما قانونی را در نظر می گیریم که تجارت غیر روز را انجام می دهد. در این حالت ، ما باید هر دو دارایی و سهام سهام را پیگیری کنیم.

7. 7. 1 فیلتر ساده خرید

Here we create trading signal based on simple filter rule. Recall that simple filter rule suggests buying when the price increases a lot compared to the yesterday price: [x08egin ext&:frac>>1+ Delta \ پایان ]

where (P_t) is the closing price at time (t) and (delta>0 ) یک آستانه دلخواه است

ما استفاده از مایکروسافت را با Ticker MSFT نشان می دهیم.

ابتدا داده ها را با استفاده از getSymbols ("MSFT") بارگیری می کنیم.

کتابخانه(QuantMod)getSymbols("MSFT")
## [1] "MSFT"

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

اکنون ما سیگنال خرید را بر اساس قانون فیلتر تولید می کنیم:

قیمتCl(MSFT)# نزدیک قیمتقیمت/تاخیر(قیمت)- 1 # ٪ تغییر قیمتدلتا 0. 005 #آستانهسیگنال ج(0) # تاریخ اول هیچ سیگنال ندارد #LOOP در تمام روزهای معاملاتی (به جز اولین) برای(منin 2: طول(قیمت))<if(r [i]>دلتا)1> دیگرسیگنال [i]0>

توجه داشته باشید که سیگنال فقط یک بردار بدون تمبر زمان است. ما از reclass تابع برای تبدیل آن به یک شیء XTS استفاده می کنیم.

# هر داده با زمان ضمیمه نمی شود سر(علامت،n=3)
## [1] 0 0 0
# اختصاص زمان به متغیر عمل با استفاده از reclass ؛سیگنال(سیگنال ، قیمت)# هر نقطه اکنون با زمان وصل شده است دم(علامت،n=3)
## [، 1] ## 2019-04-11 0 ## 2019-04-12 1 ## 2019-04-15 0

اکنون ما آماده ترسیم شاخص های معاملاتی هستیم:

# نمودار با قانون تجارت نمودار(MSFT ،نوع = "خط", زیر مجموعه ="2009-08 :: 2009-09-15", موضوع =نمودار('سفید'))

چگالی(علامت،نوع ='s',col ='قرمز')

ما تجارت را بر اساس نشانگر دیروز در نظر می گیریم:

تجارتتاخیر(علامت،1) # تجارت بر اساس سیگنال دیروز

برای ساده نگه داشتن آن ، ما با استفاده از معاملات روز ارزیابی می کنیم:

  • خرید در باز
  • فروش نزدیک
  • اندازه معاملات: همه در

سپس نرخ سود روزانه (dailyretu = frac ) است

بازپرداخت(MSFT)*تجارتنام(ret) "فیلتر"

بر اساس بازگشت روزانه ، می توانیم خلاصه عملکرد را با استفاده از نمودارها مشاهده کنیم. Performancesummary () برای ارزیابی عملکرد.

#خلاصه عملکرد نمودارها(ret ،اصلی ="قانون خرید ساده لوح")

7. 7. 2 خرید فیتری ساده

Here we create trading signal based on simple filter rule. Recall that simple filter rule suggests buying when the price increases a lot compared to the yesterday price and selling when price decreases a lot: [x08egin ext&:frac>>1+delta \ ext&:frac><1-delta end]

where (P_t) is the closing price at time (t) and (delta>0 ) یک آستانه دلخواه است

ما ابتدا داده ها را بارگیری می کنیم:

کتابخانه(QuantMod)getSymbols("MSFT")
## [1] "MSFT"
قیمتCl(MSFT) قیمت R/تاخیر(قیمت)- 1Delta0. 005سیگنال ج(NA) # سیگنال اول NA است برای(منin 2: طول(Cl(msft)))<if(r [i]>دلتا)1> دیگر if(r [i] -دلتا)-1> دیگرسیگنال [i]0>سیگنال(علامت،Cl(MSFT)) TRADE1تاخیر(سیگنال) ret1dailyretu(MSFT)*Trade1نام(ret1) "ساده لوح" نمودارها(ret1)

ورزش

استراتژی زیر را بر اساس EMA آزمایش کنید: - سیگنال خرید/فروش را بر اساس قانون EMA.- معاملات روز بر اساس سیگنال دیروز: - در Open و - در نزدیکی همان روز بفروشید

7. 7. 3 نمونه ای با استفاده از RSI

استراتژی تجارت روزانه را بر اساس RSI 14 روزه در نظر بگیرید:

  • در صورت RSI یک واحد بخرید
  • در غیر این صورت تجارت نیست.

این را بر اساس تجارت روزانه ارزیابی کنید و آن را با قانون فیلتر ساده مقایسه کنید:

روز 14قیمتCl(MSFT) سیگنالc() #وکتور در حال حاضرRSIRSI(قیمت ، روز)#RSI تاخیر RSI استعلامت [1:روز+1] 0 #0 زیرا هیچ سیگنال تا روز+1 وجود ندارد برای(منin(روز+1): طول(قیمت))<if(RSI [i] 30)<#buy اگر RSI<30سیگنال [i]1>دیگر <#no trade all if rsi>30سیگنال [i]0>>سیگنال(علامت،Cl(msft)) trade2تاخیر(علامت)#متغیر جدید RET1ret1دلهره(MSFT)*Trade1نام(ret1) "ساده لوح" # یک متغیر جدید ret2 بسازیدرت 2دلهره(MSFT)*Trade2نام(ret2) 'RSI'

اکنون استراتژی ها را با قانون فیلتر مقایسه کنید:

دوبارهبانوشت(ret1 ، ret2)نمودارها(retall ،اصلی ="Naive V. S. RSI")

7. 7. 4 کد کارآمدتر

در کد RSI فوق ، ما آن را نوشتیم:

علامت [1:روز+1] 0 برای(منin(روز+1): طول(قیمت))<if(RSI [i] 30) 1>دیگر 0>>

یک کد کارآمدتر اما کمتر قابل خواندن برای جلوگیری از شمارش است:

برای(منin 1:طول(قیمت))0 if (درست است(RSI [i] 30)) 1>>
آموزش تحلیل گری...
ما را در سایت آموزش تحلیل گری دنبال می کنید

برچسب : نویسنده : ملیکا زارعی بازدید : 32 تاريخ : شنبه 21 مرداد 1402 ساعت: 16:51