QuantStrat: نحوه ایجاد چندین شاخص ، قوانین سیگنال

ساخت وبلاگ

I want to add multiple rules based on different signals like SMA50> SMA10 and MACD>0با این حال ، من با استفاده از SigComparision خطایی می کنم. آیا کسی می تواند راه بهتری برای انجام آن پیشنهاد دهد؟

دنبال کردن 6،621 3 3 نشان های طلا 38 38 نشان نقره 67 67 نشان برنز از 14 آوریل 2018 در 1:53 پرسید رجات رجات 37 4 4 نشان های برنز

2 پاسخ 2

مرتب شده توسط: تنظیم مجدد به طور پیش فرض

دو رویکرد واضح وجود دارد که می توانید از آنها استفاده کنید: می توانید یک عملکرد سیگنال کامپوزیت را در قوانین اضافه کنید ، یا می توانید از SigFormula استفاده کنید. دومی شناخته شده است که کند است. به عنوان مثال این موضوع را ببینید:

من یک بخش کلیدی را در اینجا برجسته می کنم:

SigFormula از یک ویژگی S Syntax استفاده می کند که به شما امکان می دهد از نام ستون ها مستقیماً به عنوان متغیرها در یک فرمول استفاده کنید. این هیچ تطبیق جزئی ندارد ، زیرا ستون ها به متغیرهای فرمول تبدیل می شوند.

.

من به شما هشدار خواهم داد که در حالی که Sigformula بسیار انعطاف پذیر است ، R با استفاده از این روش خیلی سریع نیست. به نظر می رسد این یک اثر جانبی از نحوه داده ها است. فریم ها به عنوان لیست ذخیره می شوند ، و از روشی که Eval (تجزیه (متن = فرمول) ، x) نحو در داخل توسط R. مدیریت می شود.

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

در مثال زیر (مبتنی بر نسخه ی نمایشی MACD. R در بسته QuantStrat) می توانید با هر دو رویکرد آزمایش کنید:

require(quantstrat) suppressWaings(rm("order_book.macd",pos=.strategy)) suppressWaings(rm("account.macd","portfolio.macd",pos=.blotter)) suppressWaings(rm("account.st","portfolio.st","stock.str","stratMACD","startDate","initEq",'start_t','end_t')) stock.str='AAPL' # what are we trying it on fastMA = 12 slowMA = 26 signalMA = 8 maType="EMA" currency('USD') stock(stock.str,currency='USD',multiplier=1) startDate='2006-12-31' initEq=1000000 portfolio.st='macd' account.st='macd' getSymbols(stock.str,from=startDate) initPortf(portfolio.st,symbols=stock.str) initAcct(account.st,portfolios=portfolio.st) initOrders(portfolio=portfolio.st) strat.st data[, "SMA.SMA10"] & data[, "macd._"]> 0 colnames(sig) # Activate (uncomment) only ONE of the following signals. Both do the same thing: #OPTION 1 for entry signal based on combining signals: add.signal(strat.st,name="macdSMAsig", arguments = list(data = quote(mktdata)), label="enterSig" ) #OPTION 2 for entry signal based on combining signals: # add.signal(strat.st, name = "sigFormula", # arguments = list(data = quote(mktdata), # formula = "SMA.SMA50> SMA.SMA10 & macd._>0 ") ، # label =" upsig. entersig " #) add. signal (strat. st ، name =" sigthreshold "، آرگومان = لیست (ستون =" سیگنال . _ "، رابطه =" lt "، آستانه = 0 ،Cross = true) ، label = "signal. lt. zero") #### # افزودن قوانین # ورود add. rule (stru. st ، name = 'rulesignal' ، # مراقب باشید که برچسب ستون سیگنال را صحیح دریافت کنید: آرگومان = لیست (sigcol = "upsig. entersig" ، sigval = true ، orderqty = 100 ، ordertype = 'market' ، ordrside = 'long' ، treshold = null) ، type = 'enter' ، label = 'enter' ،Storefun = false) # Exit add. rule (Strat. ST ، name = 'Rulesignal' ، Argument = لیست (sigcol = "signal. lt. zero" ، sigval = true ، orderqty = 'all' ، ordeType = 'Market' ،orderside = 'long' ، آستانه = null ، ordert = 'exit2') ، type = 'خروج' ، label = 'خروج') #end قوانین #### out 
آموزش تحلیل گری...
ما را در سایت آموزش تحلیل گری دنبال می کنید

برچسب : نویسنده : ملیکا زارعی بازدید : 33 تاريخ : سه شنبه 6 تير 1402 ساعت: 15:32