نحوه ایجاد یک استراتژی تجاری ساده با TradingView

ساخت وبلاگ

آخرین مطالب

امکانات وب

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

بیایید به این روند شیرجه بزنیم ، ابتدا باید یک حساب کاربری با TradingView داشته باشید. سپس یک طرح نمودار جدید ایجاد کنید. در این پروژه از بازه زمانی "2H" و جفت cryptocurrency "Bitmex: XBTUSD" استفاده خواهم کرد.

روش های زیادی برای ایجاد یک استراتژی وجود دارد ، معدن با یک ایده منطقی شروع می شود. در این حالت ، من به یاد می آورم که یک بار مقاله ای را خواندم که در مورد روند بازار صحبت می کرد وقتی که قیمت بالاتر از VWAP بود و برعکس وقتی که در آن قرار داشت. برای اطلاعات بیشتر در مورد VWAP ، اینجا را کلیک کنید.

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

پس از ایده ، "ویرایشگر کاج" را باز می کنیم. در مورد من به یاد آوردم که این اصطلاحی بود که حرف "W" را داشت و از 4 حرف تشکیل شده بود و این همان ایده بسیار مبهم بود و پیدا کردن راه حل بسیار جالب شد.

یکی از بهترین ویژگی های TradingView "کتابچه راهنمای مرجع زبان کاج Pine" آن است ، در صورت شناختن هر یک از اپراتورهای آن ، یا متغیرها/عملکردهای داخلی. در این حالت ، کلمه "نزدیک" که قیمت بسته شدن فعلی یک امنیت را برای شمع یا نوار مشخص شده نگه می دارد ، می توانید ببینید که کدام کلیدها برای باز کردن آن بر اساس سیستم عامل خود فشار می آورند.

در آنجا می توانید یک اصطلاح خاص را جستجو کنید یا همه آن را بخوانید و آزمایش کنید. به همین مناسبت در جستجوی "W" بودم ، در حالی که روی آن "SWMA" پیدا کردم. بعد از خواندن آنچه که من می دانستم آن چیزی نیست که من به دنبال آن بودم ، اما از آنجاسر و صدا بلکه تاخیر بیشتر) فکر کردم که امتحان می کنم. پس از کدگذاری ، باید در زیر به نظر برسد.

توجه کنید که من فقط متغیری به نام "swmaclose" ایجاد کردم و مقدار "SWMA (نزدیک)" را دادم. برای کسانی که برای برنامه نویسی تازه کار هستند ، فکر می کنم یکی از ترسناک ترین چیزها این است که کدگذاری بیش از حد از تصویر بزرگتر است که وقتی تمام کد انجام می شود و خطوط زیادی وجود دارد. یک مورد که من آموخته ام این است که هر چقدر هم که یک برنامه پیچیده باشد ، همه با یک خط کد شروع می شود. بنابراین وقتی صحبت از برنامه نویسی می شود ، تنها چیزی که باید روی آن تمرکز کنید ، خطی است که به آن خیره شده اید.

برای مشاهده آنچه کد در نمودار انجام می دهد ، روی "افزودن به نمودار" کلیک کنید.

در آنجا خواهید دید که کد فوق چه کاری انجام می دهد.

دقیقاً همان چیزی که ما در ذهن داشتیم ، کاری که می خواهیم کد در این زمان انجام دهد ، چاپ "swmaclose" در نزدیکی قیمت است. برای انجام این کار ، ما باید چند تغییر اضافه کنیم."کتابچه راهنمای مرجع زبان اسکریپت کاج" را به خاطر دارید؟

برای اینکه اسکریپت نزدیک به قیمت نشان داده شود ، باید ارزش "روکش" را به ارزش "واقعی" تغییر دهیم.

برای تهیه اسکریپت مقدار "Swmaclose" ، باید "Close" را با آن در عملکرد "Plot ()" جایگزین کنیم.

اکنون کد ما به این شکل است.

بنابراین ما موفق شدیم به هدف اولیه خود برسیم ، با این حال ، متوجه می شویم که به سختی می توانیم ارزش "swmaclose" را ببینیم. اگر نگاهی به "طرح ()" بیندازیم ، می توانیم سرنخ هایی را پیدا کنیم که چرا.

بنابراین ما می توانیم "رنگ" ، "خط پهنای باند" و "ترانسپ" را از "ویرایشگر کاج" تغییر دهیم و نمای بهتری از طرح بدست آوریم.

با وجود تغییر ، ما هنوز هم باید بزرگنمایی کنیم تا بتوانیم آن را واضح تر ببینیم ، این به این دلیل است که SWMA فقط از چهار میله آخر در محاسبه خود استفاده می کند و بیش از حد از قیمت واقعی عقب نمی ماند ، در نتیجه قیمت آن را دنبال می کندخیلی نزدیک.

در آنجا می توانید ببینید که وقتی قیمت از SWMA عبور می کند ، آن جهت را ادامه می دهد تا اینکه از پایین بیاید. بنابراین به دنبال این مثال می توانید هر منطق را بسازید ، آن را به متغیر منتقل کنید و ببینید که چگونه با قیمت مقایسه می شود ، یا می توانید آن را به روش دیگری انجام دهید ، با استفاده از رنگ ها ، به این ترتیب من شخصاً آن را انجام می دهم و به نظر من بصری جذاب تر است.

قبل از اینکه این را به شما نشان دهم ، بگذارید متغیر واقعی را که می خواستم در ابتدای این ایده اضافه کنیم. برای یافتن آن کجا می رویم؟

بیایید "vwapclose" را اعلام کنیم و مقدار "VWAP (نزدیک)" را اختصاص دهیم.

توجه داشته باشید که "VWAP" اصلی از "HLC3" استفاده می کند (بالا ، پایین و نزدیک تقسیم شده توسط سه). من "نزدیک" را به عنوان سریال منابع انتخاب کردم زیرا کمتر از آن عقب مانده است.

بیایید اکنون به رویکرد رنگ ها شیرجه بزنیم ، من دو متغیر جدید با نام "Swmalong" و "Vwaplong" ایجاد کرده ام. هر دو قیمت ("نزدیک") را با ارزش خود مقایسه می کنند ، ایده این است که قیمت بالاتر از هر یک از آنها باشد ، پس از آن روند آن افزایش می یابد.

برای اثبات این تئوری ، بیایید از عملکرد "BGCOLOR ()" استفاده کنیم ، تا به یاد بیاوریم که به معنای فکر کردن در مورد آن به عنوان رنگ پس زمینه است.

آنچه ما می خواهیم این است که اگر شرط صحیح باشد ، رنگ X را نشان دهید ، در غیر این صورت رنگ y.

برای درک بیشتر در مورد اپراتور شرطی سه گانه (؟ :)

بنابراین پس از حذف عملکرد "طرح ()" ، اضافه کردن متغیرهای جدید "... طولانی" و اضافه کردن "bgcolor ()". فیلمنامه ما باید تا کنون به نظر برسد.

دقیقاً همان چیزی که من در ذهن داشتم ، برای درک بهتر رنگهایی که برای جدا کردن آنها نیاز داریم ، بهترین راه برای انجام این کار با ایجاد دو اسکریپت جداگانه است.

هنگامی که "Swmalong" درست است ، و دیگری نارنجی وقتی "Vwaplong" درست است ، یکی از رنگ های آبی نشان می دهد. بنابراین نیازی به حذف هر کد نیستیم ، فقط می توانیم خط زیر را بیان کنیم. این باعث می شود اسکریپت از آن خط پرش کند و آن را اجرا نکند.

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

راه حل در حال تغییر "پوشش" به "دروغ" در هر دو آنها است.

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

در این مثال با توجه به الگوهای من ، این سه سناریو ساده است.

پاسخ: آبی/نارنجی در همان زمان اتفاق می افتد. ب: فقط نارنجی اتفاق می افتد. ج: ابتدا نارنجی اتفاق می افتد ، سپس بعد از آن آبی.

من تصمیم گرفتم با سناریو "C" بروم. شرایط تاکنون: 1- نارنجی باید در نوار اتفاق بیفتد اما آبی نیست. 2- هنگامی که (1) اتفاق می افتد ، قبل از آن نباید نارنجی یا آبی در نوار رخ دهد.

من با اعلام متغیر به نام "Triggerlong" و تعیین شرایط (1) و (2) دنبال می شوم.

در مرحله بعد بررسی می کنیم که به درستی کار می کند و اگر الگوهای ما با انتقال این مقدار به یک تابع جدید "BGCOLOR ()" در نقطه باشد ، ایده واضح تری کسب می کنیم.

قبل از ادامه ، می خواهم موضوع را که چند شاخص از آنها استفاده می کنیم ، لمس کنم. برای آسانتر کردن این کار ، بیایید این را "قاعده هرگز" بنامیم. هرگز فقط از یک نفر استفاده نکنید ، هرگز از خیلی استفاده نکنید. یکی بد است زیرا ما همیشه به تأیید نیاز داریم ، و خیلی زیاد است زیرا هرچه شاخص یا منطقی بیشتری از سیستم شما استفاده می کند ، سخت تر می شود ، نتیجه چنین مدت زندگی کوتاه تر است. یک سیستم همه کاره انعطاف پذیر است که به آن اجازه می دهد تا در برابر تغییرات بازار مقاوم باشد. من شخصاً با دو یا سه شاخص می روم.

از آنجا که ما می خواهیم الگوریتم ما به دو سیگنال بستگی داشته باشد ، ما متغیری می خواهیم که بتواند وضعیت خود را ذخیره کند در حالی که منتظر است تا وضعیت دیگر و نهایی رخ دهد.

بنابراین ما باید یک متغیر جدید ایجاد کنیم که می تواند حالت را در حقیقت نجات دهد و در صورت وقوع "Triggerlong" یا Purple اتفاق بیفتد. ما آن را "Savelong" خواهیم نامید.

آنچه "Savelong" انجام می دهد این است که بنفش اتفاق می افتد ، در حالی که هنوز نارنجی اتفاق می افتد "درست" می شود ، اما لحظه ای که نارنجی نشان نمی دهد ، به "نادرست" تغییر می کند.

بیایید مشاهده کنیم که "Savelong" در نمودار چه کاری انجام می دهد. در زیر چگونه کد ما تا کنون به نظر می رسد.

توجه کنید که ما یک "bgcolor ()" جدید اضافه کردیم و مقدار "savelong" را تصویب کردیم ، بنابراین وقتی درست است ، رنگ زرد در نمودار نشان می دهد.

سیگنال ورود طولانی ما تقریباً انجام شده است ، تاکنون ما با نارنجی کار کرده ایم و شرایط ویژه ای در اطراف آن به رنگ بنفش کدگذاری شده است. قطعه باقیمانده پازل به آن اضافه می شود. بنابراین ما متغیر دیگری ایجاد می کنیم و آن را "startlong" می نامیم.

آنچه "startlong" انجام می دهد این است که وضعیت بنفش که به رنگ زرد ذخیره می شود درست است و آبی اتفاق می افتد. سپس در نهایت یک سیگنال برای باز کردن یک موقعیت طولانی ارسال می کند.

بیایید "bgcolor ()" نهایی خود را بسازیم و ارزش "startlong" را اختصاص دهیم.

آیا می توانید حدس بزنید که وقتی "startlong" درست است ، چه رنگی خواهد بود؟

نمودار ما اکنون به این شکل است.

توجه کنید که با هر خط جدید کد اضافه شده ، چه مقدار سر و صدا کاهش می یابد.

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

قسمت بعدی این است که چگونه آنچه را که ساخته ایم ، پشت سر بگذاریم. فیلمنامه ما را در خط دوم با مطالعه (…) به یاد داشته باشید. خوب ، TradingView دو نوع اسکریپت ، مطالعه و استراتژی را ارائه می دهد. آنها تفاوت های زیادی دارند ، اما نکته اصلی این است که شما می توانید تحت یک مطالعه هشدارهایی ایجاد کنید و می توانید تحت آزمایش دیگر قرار بگیرید. پارامترهای خاصی وجود دارد که فقط تحت یک استراتژی کار می کنند ، اما تمام ویژگی های مطالعه با سابق کار می کنند. بنابراین برای تبدیل یک مطالعه به یک استراتژی می توانید به سادگی کلمه "مطالعه" را با "استراتژی" در خط دوم جایگزین کنید.

سپس بیایید یک خط جدید اضافه کنیم و از تابع "استراتژی. تری ()" استفاده کنیم.

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

هنگامی که آن را به نمودارها اضافه کردیم ، می بینیم که واقعاً هیچ اتفاقی نمی افتد.

اگر نگاهی به "لیست معاملات" بیندازیم ، خواهیم دید که فقط یک تجارت وجود دارد و هنوز هم باز است.

همانطور که احتمالاً حدس زده اید ، هنوز وضعیت خروج وجود ندارد ، به همین دلیل است. در حالی که روش های زیادی وجود دارد که می توانیم یکی از آنها را ایجاد کنیم ، این بار من تصمیم گرفتم که با ضرر سود/توقف ساده بروم.

توجه داشته باشید TradingView خروجی ریسک را به دو طعم ، قیمت دقیقی که به آن می گویید و میزان کنه های دور از قیمت ورودی وارد شده به موتور Backtest ارائه می دهد. برای کدگذاری ریسک ، ما به عملکرد "Strategy. exit ()" نیاز داریم.

از آنجا که تمرکز این مقاله بیان راه ساده است ، من تصمیم گرفتم که با کنه بروم. ما باید عملکرد "Strateg. exit ()" را در زیر "استراتژی.) قرار دهیم ، در حالی که هیچ قانونی وجود ندارد که ابتدا عملکرد استراتژی باشد ، زیرا به همان روش رفتار خواهد کرد ، شخصاً من در زیر انتخاب کردم.

هنگامی که سعی می کنیم آن را به نمودارها اضافه کنیم ، خطای زیر را دریافت می کنیم.

اوه ، ما فراموش کردیم که این متغیرها را اضافه کنیم ، بنابراین اجازه دهید این کار را در زیر انجام دهیم.

در آنجا یک تابع جدید "ورودی ()" مشاهده می کنید.

اکنون می دانید که "ورودی ()" چه کاری انجام می دهد ، به خطی که "TakeProfit" اشاره می کنیم ، توجه کنید. چگونه می خواهیم یک ورودی دیگر بخواهیم و با مقدار "Stoploss" ضرب کنیم. ما این کار را انجام می دهیم ، بنابراین ما از نسبت پاداش خود به ریسک آگاه هستیم ، که مؤثرترین راه برای موفقیت در تجارت است. اکنون فیلمنامه ما باید کار کند. در صورتی که کمی گم شده باشید ، کد ما باید در زیر به نظر برسد.

بالاخره ما چیزی داریم.

چیزهای کاملاً کمی وجود دارد که ما هنوز باید از آنها مراقبت کنیم. بیایید با تغییر پارامترهایی که به موتور پشتی می روند ، شروع کنیم تا بتواند بیشتر شبیه به تجارت زنده باشد.

کلید آن در داخل خط دوم "استراتژی ()" یافت می شود.

پس از خواندن و درک اصول اولیه آن ، می خواهم پارامترهایی را که شخصاً از آن استفاده می کنم به شما بدهم. می توانید هر بار که یک استراتژی جدید ایجاد می کنید ، مقادیر موجود در "عنوان" و "Shorttitle" را با موارد جدید خود جایگزین کنید.

اگر معیارهای بین یکی را قبل مقایسه کنید و اکنون می توانید مشاهده کنید ، این نشان دهنده نتایج واقع بینانه تر است.

نکته ای که می توانیم متوجه شویم موقعیت هایی است که بعد از رنگ سبز یک شمع یا نوار باز می شود.

Basically, while the Green shows earlier, the signal actually takes place at the end of the bar. Remember “close” source is the current price while the candle is still forming, because it can change its state it could create a situation where “A >ب "و سپس به" a< B”, so we don’t know which one is the final value until the bar officially ends. This is why the backtest engine opens a position in the bar after.

برای ایجاد مسابقات سبز با پشتی ، می توانیم "[1]" را به "startlong" در داخل "bgcolor ()" اضافه کنیم.

سپس در زیر به نظر می رسد.

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

ما هنوز یک موضوع باقیمانده داریم ، آیا شما متوجه اتفاق عجیبی شده اید؟

گرین همچنان نوار قابل رویت بعد از نوار است ، سیگنال وقتی برای اولین بار اتفاق می افتد ، قوی ترین است ، زیرا می دانید که روندها برای همیشه یکسان نیستند ، بنابراین قبل از تغییر چیزها موضوع زمان است. همانطور که در بالا مشاهده می کنید ، دو موقعیت را در زیر همان سیگنال باز کرد.

در زیر نمونه ای از چگونگی بد بودن آن آورده شده است.

روشی که من به این موضوع می پردازم با معرفی یک منطق مدیریت موقعیت یا سفارش است. ساده ترین راه برای نشان دادن این امر با ایجاد شرایطی است که می گوید "اجازه دهید این کار را وقتی اکنون درست است و قبلاً در نوار نیست". ما می توانیم آن را به شرح زیر کدگذاری کنیم.

برای درک آنچه اتفاق افتاده است ، به زیر مراجعه کنید.

اکنون قبل از آزمایش کد جدید ما ، می خواهم قانون مدیریت سفارش قبلی را بگیرم و با استفاده از "ورودی ()" به چیزی اختیاری تبدیل شوم.

اکنون ما در نحوه عملکرد سیستم معاملاتی ما انعطاف پذیری بیشتری داریم.

در زیر بررسی کنید که چگونه "سفارشات متوالی" خاموش است ، این بدان معنی است که منطق مدیریت سفارش ما وجود دارد ، ببینید که چگونه نتایج ما بهبود می یابد ، این به این دلیل است که ما موفق شدیم حتی بیشتر از طریق آن سر و صدای بیشتری را حذف کنیم.

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

اسکریپت نهایی ما باید شبیه به زیر باشد.

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

یک مورد که من توصیه می کنم خواندن این کنوانسیون های کدگذاری کاج است. من باید اعتراف کنم که وقتی سالها پیش شروع به کار کردم ، در دسترس نبودند ، بنابراین در حالی که من می دانم که آنها را توصیه می کنم ، باید خودم توصیه ها را انجام دهم. همانطور که گفته می شود ، "شما نمی توانید ترفندهای جدید سگ پیر را آموزش دهید."به هر حال ، هرچه زودتر شروع به یادگیری درست کنید ، بهتر است. برای کسب اطلاعات بیشتر می توانید از Pinecoders بازدید کنید و به یک توسعه دهنده اسکریپت 10 برابر کاج تبدیل شوید.

با تشکر از شما برای خواندن ، امیدوارم که شما نه تنها در حرفه تجاری خود موفق شوید بلکه از آن لذت ببرید.

آموزش کار در فارکس...
ما را در سایت آموزش کار در فارکس دنبال می کنید

برچسب : نویسنده : Mihayloo بازدید : <-PostHit-> تاريخ : پنجشنبه 18 اسفند 1401 ساعت: 14:23