برای ساده سازی ، ما ابتدا چندین قانون معاملاتی را بر اساس معاملات روز ارزیابی می کنیم:
- سیگنال را بر اساس قانون فیلتر ساده بخرید
- بر اساس قانون فیلتر ساده ، سیگنال ها را بخرید و بفروشید
- سیگنال را بر اساس RSI بخرید
- سیگنال را بر اساس EMA بخرید و بر اساس RSI سیگنال بفروشید
- خرید سیگنال بر اساس 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