TradingView یکی از بهترین ابزارهای نمودار را دارد و در سطح جهانی بسیار مورد استفاده قرار می گیرد. بهترین قسمت این پلتفرم ، امکان کدگذاری افزونه خود (یا انتخاب از طیف گسترده ای از افزونه های موجود) است.
اسکریپت کاج زبان برنامه نویسی است ، ما برای ایجاد افزونه Charting استفاده می کنیم. در این آموزش ، شما می آموزید که چگونه یک افزونه نمودار را با یک استراتژی ساده ایجاد کنید ، و سپس ما آن را برای تهیه اطلاعات در هر نمودار و هر بازه زمانی کدگذاری خواهیم کرد.
Beuty of TradingView با تنها چند کلیک ، می توانید فرضیه الگوریتم تجارت خود را در چندین سهام و قاب های زمانی متعدد آزمایش کنید و بهترین و سودآورترین ترکیب برای تجارت/سرمایه گذاری را ارائه دهید.
ما چیزها را به ترتیب زیر درک خواهیم کرد:
- الگوریتم را درک کنید
- مبانی اسکریپت کاج برای الگوریتم ما
- ایجاد یک افزونه جدید TradingView
- بداهه نوازی الگوریتم
- تجزیه و تحلیل و آزمایش پشتی
- بهینه سازی برای حداکثر سود
- نتیجه
الگوریتم را درک کنید
ما با یک الگوریتم ساده با یکی از شاخص های فنی محبوب میانگین شاخص جهت (ADX) شروع خواهیم کرد. هنگامی که درک کردید که چگونه ایجاد می شود ، می توانید از استفاده از آن با هر شاخص دیگری فکر کنید.
به عبارت ساده ، این شاخص از سه چیز تشکیل شده است ، ADX که قدرت کل بازیکن غالب را نشان می دهد ، به علاوه DI (PDI) که قدرت/تسلط خریداران را نشان می دهد ، و منهای (یا منفی) DI (MDI) که قدرت قدرت را نشان می دهدفروشندگان
اکنون شرایط الگوریتم عبارتند از:
- در شمع قبلی ، خط ADX باید زیر هر دو PDI و MDI باشد
- برای شرایط خرید ، روی شمع فعلی PDI باید بالاتر از MDI باشد و باید خط ADX به سمت بالا در MDI عبور کند
- برای شرایط فروش ، در شمع فعلی ، MDI باید بالاتر از PDI باشد و ADX باید به سمت بالا در MDI عبور کند
- اولین صلیب با PDI (بیشتر اتفاق می افتد) یا MDI (چند بار) پس از ورود باید استراتژی خروج ما برای خروج از تجارت باشد.
برای روشن تر کردن آن ، به تصویر فوق نگاه کنید. حداقل دو بار خط ADX به طور قابل توجهی بالاتر حرکت می کند ، اما این تنها بار دوم است که ADX از پایین عبور می کند. یا در یک کلمه دیگر ، قبلاً ADX قبل از دادن سیگنال ورود ، زیر هر دو PDI و MDI بود.
مبانی اسکریپت کاج برای الگوریتم ما
// آن را قابل تنظیم نگه داریدlen = ورودی (14 ، minval = 1 ، عنوان = "طول di")LENSIG = ورودی (14 ، عنوان = "ADX هموار سازی" ، minval = 1 ، maxval = 50)// مقادیر ADX ، PDI و MDI را دریافت کنید[به علاوه ، منهای ، ADX] = DMI (لن ، لنسگ)// نمایش در نمودارطرح (adx ، color = color. black ، عنوان = "adx")طرح (به علاوه ، رنگ = color. green ، عنوان = "pdi")طرح (منهای ، رنگ = color. red ، عنوان = "mdi")
همانطور که در کد ما مشاهده می کنید ، ما کد را به سه بخش تقسیم کرده ایم. قسمت اول که از تابع ورودی () استفاده می کند برای داده های متغیر استفاده می شود که کاربر می تواند از رابط افزونه در TradingView تغییر دهد.
خطوط شروع شده از // نظرات هستند و کد واقعی نیستند. آنها فقط برای خوانایی بهتر در آنجا هستند.
نشانگر ADX به دو تنظیمات نیاز دارد ، طول اول طول صاف کننده. ما هر دو را به طور پیش فرض برای آنها نگه می داریم ، اما می توانید در بخش 5 با آنها آزمایش کنید - بهینه سازی الگوریتم.
در منطق دوم ، ما مقادیر واقعی ADX ، PDI و MDI را از یک تابع داخلی DMI () دریافت می کنیم. این مقادیر در متغیرهای ADX ، Diplus و Diminus ذخیره می شوند.
در اسکریپت کاج ، متغیرها به طور پیش فرض سری هستند. به عنوان مثال ADX ، به علاوه و منهای سری هستند و به طور پیش فرض ارزش شمع فعلی یا آخرین را دارند. اگر به ارزش شمع های قبلی نیاز دارید ، می توانید از آنها مانند ADX [1] ، ADX [2] و غیره استفاده کنید.
و در منطق سوم ، ما از Plot () عملکرد استفاده می کنیم ، که در واقع نمودار را روی صفحه افزونه ترسیم می کند.
ایجاد یک افزونه جدید TradingView
ایجاد یک افزونه جدید آسان است. به صفحه نمودار Pinescript خود بروید و سپس به Refresh ضربه بزنید. هنگامی که یک صفحه بارگیری می شود ، باید در پایین ویرایشگر کاج کلیک کنید. این یک الگوی خالی با دو خط کدگذاری نوشته شده به شما نشان می دهد.
دو مورد مهم وجود دارد که باید در بالای هر افزونه نگه داریم. اول //@نسخه = 4 یک خط و دوم یا عملکرد () عملکرد یا استراتژی () است. Pine Script طی سالها تکامل یافته است و آخرین نسخه 4 است و ما آن را برای استفاده از ویژگی های جدیدتر ذکر می کنیم.
تفاوت بین یک مطالعه و یک استراتژی در TradingView در این است که مطالعه فقط برای نشان دادن نمودارها است ، با این حال ، استراتژی دارای عملکردهای بیشتری است که برای ورود سفارش ، خروج و چنین شرایطی استفاده می شود.
این استراتژی چند گزینه دیگر در TradingView دارد و گزارش های دیگری را در مورد نحوه عملکرد یک استراتژی خرید/فروش به ما ارائه می دهد. ما در بخش بداهه سازی به استراتژی خواهیم پرداخت.
یک مطالعه () یا استراتژی () عملکرد حداقل به یک نام نیاز دارد که در مکان های مختلف نشان داده شده است. در حال حاضر ، شما می توانید چیزی مانند: مطالعه (عنوان = "شاخص حرکت جهت" ، Shorttitle = "DMI").
بداهه نوازی الگوریتم
شرایط مهم
ما شرایط مهم را رمزگذاری خواهیم کرد و آنها را در برخی از متغیرها ذخیره خواهیم کرد. به کد نگاهی بیندازید:
// قبل از شمع فعلی ، ADX باید کمترین باشدadxwasbelow = adx [1]// قانون 2diPositive = plus>منهایdinegative = نه دو طرفه// قانون 3inBuyZone = adx>= minus and adx inSellZone = adx>= به علاوه و adx// شرط هنگامی که قانون 2 و قانون 3 مطابقت دارندbuycond = دو طرفه و درون کاویزونsellcond = dinegative و insellzone
نکات بصری
اولین پیشرفتی که ما انجام می دهیم ، گرفتن یک اشاره بصری از ورود و خروج از خود نمودار است. روش های زیادی برای انجام این کار وجود دارد ، اما من می خواهم چیزی ساده به عنوان پر کردن رنگ پس زمینه.
تا زمانی که در شرایط خرید قرار داریم ، منطقه بین PDI و MDI را با رنگ سبز و برای فروش با رنگ قرمز رنگ می کنیم.
// متغیرهایی را به نمودار ترسیم شده اختصاص دهیدp = طرح (به علاوه ، رنگ = color. green ، عنوان = "+di")m = طرح (منهای ، رنگ = color. red ، عنوان = "-di")// رنگ را بر اساس شرایط انتخاب کنیدfillcolor = buycond؟color. green: (sellcond؟ color. red: na)// رنگ را پر کنیدپر کنید (P ، M ، Color = FillColor)
اگر تازه وارد برنامه نویسی هستید ، می توانید کد فوق را از نظرات ، به جز FillColor درک کنید. این به سادگی می گوید:
اگر شرایط خرید برآورده شد ، از رنگ سبز استفاده کنید ، در غیر این صورت ، اگر شرایط فروش برآورده شود از رنگ قرمز استفاده کنید. اگر هیچ شرایطی برآورده نشده است ، از هیچ رنگی استفاده نکنید.
شرط اول
از تصویر فوق ، تمام مکانهایی که رنگ آن را نشان می دهد ممکن است صحیح باشد ، اما برای ما تنها معاملات صحیح مواردی است که برای همه شرایط ما برآورده می شود.
و دلیل اینکه معاملات نادرست ظاهر می شود این است که ما هنوز شرط اول ADX را در بر نگرفته ایم ، که اساساً می گوید ، ADX قبل از شروع ورود باید زیر هر دو PDI و MDI باشد و باید از بالا عبور کند.
از آنجا که این شرط فقط در اولین موقعیت ورود بررسی می شود ، ما باید منطق را برای پشتیبانی از آن در اسکریپت کاج تغییر دهیم. به این تغییرات نگاهی بیندازید:
// شرایط جدیدnotradezone = (adxplus and adx>منهای)adxistcrossed = cross (adx ، plus) یا cross (adx ، minus)// در همان ابتداvar traded = false// هر سه شرط ملاقات کردندif (adxwasbelow و (sellcond یا buycond))معامله شده: = درست است// تا زمان خروج ادامه دهیدif (معامله شده و معامله نشده [1] و نه adxizecrossed)معامله شده: = درست است// تنظیم مجدد وضعیتاگر notradezoneمعامله شده: = نادرست// در نهایت فقط اگر معتبر باشد ، پر کنیدپر کنید (P ، M ، رنگ = معامله شده؟ Fillcolor: NA)
شما ممکن است بخواهید کد فوق را دو بار بخوانید ، اما اساساً کاری که در بالا انجام دادیم ، متغیر جدیدی ایجاد شده است که فقط در صورت برآورده شدن تمام شرایط الگوریتمی درست خواهد بود و تا زمانی که شرایط خروج وجود داشته باشد ، همچنان صادق خواهد بود.
ما مجبور شدیم این کار را خیلی انجام دهیم زیرا شرایط الگوریتمی ما "ADX باید قبل از ورود" زیر هر دو PDI و MDI باشد "فقط برای شمع اول صادق است.
تجزیه و تحلیل و آزمایش پشتی
همانطور که قبلاً ذکر شد ، برای دیدن آمار ، ما باید مطالعه خود را به استراتژی مانند این تبدیل کنیم:
// مطالعه (عنوان = "شاخص حرکت جهت" ، Shorttitle = "DMI") استراتژی (عنوان = "استراتژی DMI" ، Shorttitle = "dmistrat")
علاوه بر این ، ما برای ورود و خروج از معاملات باید شرایط استراتژی را اضافه کنیم. برای اینها ، ما باید از توابع استراتژی () و استراتژی استفاده کنیم.
// شرایط تجارتenterlong = معامله و خریدexitlong = معامله نشده استENTERSHORT = معامله و فروشExitShort = معامله نشده است// استراتژیک شرایط طولانیاستراتژی. entry ("طولانی" ، درست ، 1 ، وقتی = enterlong)استراتژی. close ("طولانی" ، هنگامی که = exitlong)// استراتژیک شرایط کوتاهStrategy. entry ("کوتاه" ، درست ، 1 ، هنگامی که = ENTERSHORT)استراتژی. close ("کوتاه" ، هنگامی که = ExitShort)بهینه سازی برای حداکثر سود
حال ، اجازه دهید خروجی ها را تجزیه و تحلیل کنیم. من داده های افزونه را در اسکریپت NSE Nifty Future در 1 دقیقه و 5 دقیقه اجرا کردم. در 1 دقیقه سود خالص پس از 353 معاملات که در آن تجارت 51. 57 ٪ سود سودآور بود ، 1. 92 ٪ بود.
اکنون ، من فقط بازه زمانی را به 5 دقیقه تغییر دادم ، و اکنون می توانم ببینم سود خالص به 87. 08 ٪ افزایش یافته است و در 289 معاملات نیز با 53. 29 ٪ سودآوری.
نکته ای که من سعی می کنم آن را در اینجا بیان کنم ، حتی اگر الگوریتم یکسان باشد ، فقط با تغییر بازه زمانی ، یک استراتژی از دست دادن در یک بازه زمانی می تواند در یک بازه زمانی دیگر بسیار سودآور شود.
برای بهینه سازی عملکرد استراتژی می توانیم کارهای زیر را انجام دهیم:
- به فریم های زمانی مختلف بروید
- فقط از استراتژی خرید یا استراتژی فروش استفاده کنید
- تغییر اسکریپت (سهام / شاخص)
- کمیت را تغییر دهید
- پارامترهای ورودی را تغییر دهید
لیست طولانی است و می توانید عملکرد بسیاری از آزمایشات و خطاها را بهینه کنید. به عنوان مثال ، تغییر به 5 دقیقه 87 ٪ سودآوری داشت. من با برخی از آزمایشات با پارامترهای ورودی ، آن را بیشتر بهبود بخشیدم.
با تغییرات جدید ، من سود خالص را به 93. 22 ٪ افزایش دادم و درصد سودآوری نیز به 54. 61 ٪ و مشابه فاکتور سود افزایش یافت. اکنون می دانید که از کدام بازه زمانی باید در چه اسکریپت استفاده کنید تا سودآورتر باشد.
نتیجه
هنگامی که ما به دنبال یک استراتژی سودآور هستیم ، این امر باعث می شود که اولین آزمایش آن را پشت سر بگذارد. برای این کار ، TradingView و Pinescript برخی از بهترین گزینه های اطراف هستند.
هر روز ، اینترنت مملو از استراتژی ها و روش های زیادی است که ادعا می کنند سودآور هستند ، اما شرط بندی پول شما بر روی فرضیات عادلانه راه مناسبی نیست.
من به همه پیشنهاد می کنم استراتژی قابل آزمایشی را بنویسند و سودآوری آن را در مورد اسکریپت ها ، بازه های زمانی و تنظیمات بهینه و غیره آزمایش کنند.
امیدوارم که آموزش فوق به شما الهام بخش باشد تا قبل از شرط بندی پول خود روی آن ، افزونه خود را ایجاد کرده و فرض خود را آزمایش کنید. اگر سوالی دارید ، لطفاً نظر دهید.
اخبار رمز ارزها...
ما را در سایت اخبار رمز ارزها دنبال می کنید
برچسب : نویسنده : علیمحمد افغانی بازدید : 48 تاريخ : يکشنبه 1 مرداد 1402 ساعت: 23:49