استراتژی خرید و فروش ارز دیجیتال خودتان را بسازید!
ترید یا مبادله ارزهای دیجیتال به استفاده مناسب از نوسان آنها، اخبار و رویدادهای مختلف و به کارگیری استراتژیهای مبادلاتی برای کسب سود وابسته است. معامله کردن نیازمند تحلیل قیمت ارزهای دیجیتال در بازههای زمانی مختلف است که لازمهی آن یادگیری دانش تحلیل تکنیکال و استفاده از تحلیل فاندامنتال است تا تریدر قادر به شناسایی فرصتهایی باشد که بازار در اختیارش قرار میدهد. در ادامه با ما همراه باشید تا قدم به قدم استراتژی ساده و کاربردی خرید و فروشی را که وبسایت هکرنون (Hackernoon) ارائه کرده است، پیادهسازی کنیم. شما میتوانید از این استراتژی در تریدهای ارز دیجیتال خود استفاده کنید.
حتما تا کنون با این حقیقت مواجه شدهاید که هیچ استراتژی جادوییای وجود ندارد که بتوان به واسطه آن تمام اتفاقات بازار را به درستی پیشبینی کرد، با این حال بدون داشتن یک استراتژی خوب، دنبال کردن این بازار و کسب سود از خرید و فروش ارز دیجیتال دشوار و تا حدی غیرممکن خواهد شد.
یک سیستم و الگوریتم خرید و فروش، با در نظرگیری المانهای مهمی مانند روانشناسی و مدیریت سرمایه؛ قوانینی را ارائه میدهد که رویکرد کلی یک معاملهگر را نسبت به معاملات بازارهای مالی شکل میدهد. این سیستم، شرایطی که به احتمال زیاد برای معاملهگر سودآور خواهد بود و چگونگی تعامل با این شرایط و نحوه عملکرد تریدر را تشریح میکند.
یک سیستم خرید و فروش خودکار، نوع معاملاتی که یک معاملهگر میتواند انجام دهد، بازارهای مناسب، تنظیمات خاصی که ممکن است معامله بر مبنای آنها انجام شود، مدیریت ریسک، قوانین مربوط به تایمفریمها، مدیریت معامله و … را مشخص میکند.
چرا برای ترید به استراتژی نیاز داریم؟
فرض کنید که شما قصد خرید یا فروش یک دارایی را دارید که روزهاست آن را زیر نظر گرفتهاید، اگر این امکان وجود داشت که اعلان (notification) زمان مناسب برای این اقدام روی تلفن همراهتان نمایش داده میشد، چه حسی داشتید؟ این حس، دقیقا چیزی است که باید شما را تشویق به داشتن یک استراتژی کند.
هدف نهایی یک استراتژی معامله این است که شما را از زمان دقیق خرید یا فروش آگاه کند. یک استراتژی معاملهی ساده از پارامترهای زیر تشکیل شده است:
- ریسک: چه مقدار ضرر را قرار است در خرید و فروش کنترل و مدیریت کنید.
- قیمت: قیمتی که قرار است معامله در آن انجام شود.
- مقدار: مقدار سرمایهای که در معامله خواهد بود.
- ورود به معامله: بر اساس استراتژی، اقدام به خرید و یا فروش در یک قیمت از پیش مشخص شده باید صورت بپذیرد.
- خروج از معامله: استراتژی بر اساس نتیجه معامله زمان خروج از معامله را مشخص میکند.
پیش از ساختن و پرداختن استراتژی مختص به خودتان، ابتدا باید بدانید که میخواهید در چه بازاری خرید و فروش انجام دهید و بازار هدف خود را انتخاب کنید. در ضمن شما مجبور نیستید که از صفر شروع کنید، بلکه میتوانید از یک استراتژی عمومی مبتنی بر دستهبندیهای مختلف پیروی کنید. استراتژیهای زیادی وجود دارد که میتوانید از میان آنها انتخاب کنید.
بهینه کردن این استراتژی به منظور همیشه سودده بودن حتی بر روی دادههای جدید از اهمیت بالایی برخوردار است. زمانی که شما صاحب یک سیستم معامله شدید، باید به فکر راهاندازی یک سیستم مدیریت ریسک بیفتید.
مدیریت ریسک شامل بررسیهای پیش و پس از معامله در الگوریتم به منظور تعیین استاپ لاس (Stop Loss) معقول و یا تخصیص سرمایه بهینه است. مدیریت ریسک کارآمد و مناسب، از ضررها و خسارتهای فاجعهبار جلوگیری میکند.
استن وایناستین (Stan Weinstein) نویسنده کتاب « رازهای کسب سود در بازارهای صعودی و نزولی» در این باره گفت:
ترس باعث میشود غیرمنطقی فکر کنید و دارایی خود را در کمترین قیمت بفروشید و طمع شما را تحریک میکند که نزدیک به بالاترین قیمت خرید کنید. اینها عوامل محرک در پس ذهن شماست.
شاخصها
شاخصها یا اندیکاتورها در واقع فرمولهای ریاضیای هستند که در یک نمودار تفسیر میشوند. هر چیزی که شما میخواهید با در اختیار داشتن تاریخچه دادههای یک دارایی و استفاده از یک شاخص، محاسبه و نتیجه آن بر روی نمودار دارایی نشان داده شود.
شاخصها به واسطهی برخوردها و یا واگراییها سیگنالهایی برای خرید و فروش ایجاد میکنند.
- برخورد: زمانی که حرکات و روند قیمت از میانگین متحرک عبور میکند و یا دو میانگین متحرک به یکدیگر برخورد میکنند.
- واگرایی: زمانی که جهت روند قیمت و جهت شاخص بر خلاف یکدیگر حرکت میکنند.
شاخصها در تعیین تکانهها، روندها، نوسانات و دیگر جنبههای یک دارایی مفید و کارآمد هستند. انواع متفاوتی از شاخص وجود دارد، اما آنچه که در این استراتژی مد نظر ماست، دو مورد از مفیدترین اندیکاتورهای روند و تکانه است.
میانگین متحرک ساده (SMA)
میانگین متحرک ساده (Simple Moving Average) که به اختصار با SMA شناخته میشود، یکی از سادهترین شاخصهای تحلیل تکنیکال است که با جمع کردن تعدادی داده و تقسیم نتیجه بر تعداد دادهها به دست میآید.
اگر بر روی نمودار ساعتی، قیمتهای بسته شدن ۱۰ کندلاستیک آخر را با هم جمع کنیم و سپس این عدد را تقسیم بر ۱۰ کنیم، در واقع قیمت متوسط بسته شدن را در ۱۰ ساعت گذشته را به دست آوردهایم. اگر این قیمتهای متوسط را به یکدیگر وصل کنیم، آنگاه نمودار میانگین متحرک را رسم کردهایم.
شاخص SMA، به عنوان میانگین قیمت یک دارایی در یک دوره محاسبه میشود. از آنجاییکه با محاسبه و رسم SMA به نوعی تاریخچه میانگین قیمتهای پیشین را به دست میآوریم، در نتیجه میتوانیم با استفاده از آن از روند کلی قیمت در گذشته و به تبع آن روند قیمتی در آینده نزدیک نیز آگاه شویم.
از این شاخص میتوان برای تشخیص این که روند قیمتی دارایی ادامهدار خواهد بود یا روند صعودی یا نزولی معکوس خواهد شد، استفاده میشود.
نحوه شناسایی روند این شاخص به این گونه است که اگر قیمتی که پایینتر از نمودار SMA است، یک کندل سبز بسازد و با نمودار SMA برخورد کند و از آن بالاتر رود، نشاندهنده احتمال روند صعودی در آینده است.
در مقابل، اگر قیمت بالاتر از میانگین متحرک ساده باشد و در این شرایط قیمت یک کندل قرمز بسازد و از سمت بالا با نمودار SMA برخورد کند و از آن عبور کند، احتمال اینکه روند قیمتی معکوس شود و به پایین میانگین متحرک برسد وجود دارد.
زمانی خط روند قیمت و نمودار SMA به طور پیوسته یکدیگر را قطع میکنند، ممکن است شاخص SMA پرنوسان و نادرست باشد. بنابراین، برای افزایش احتمال موفقیت و سودآوری در معامله خود، باید از ترکیب SMA با شاخصهای دیگر استفاده کنید که یکی از این شاخصها RSI است.
شاخص قدرت نسبی (RSI)
شاخص قدرت نسبی (Relative Strength Index) که به اختصار RSI نامیده میشود، شاخصی است که میزان تغییرات قیمتی اخیر را اندازه میگیرد تا شرایط خرید بیش از حد و یا فروش بیش از حد را در قیمت یک دارایی بررسی کند.
زمانی که RSI در حدود ۷۰ درصد ماکزیمم مقدار خود قرار گیرد (یعنی در اعداد ۷۰ به بالا) در منطقه اشباع خرید قرار میگیرد. یعنی اینکه دارایی بیش از حد خریداری شده و احتمال کاهش قیمت آن زیاد است.
زمانی که RSI در مقادیر کمتر از ۳۰ قرار بگیرد، منطقه اشباع فروش را نشان خواهد داد. یعنی اینکه دارایی بیش از حد فروخته شده و زمان مناسبی برای خرید کردن به وجود آورده است.
در یک دوره زمانی مشخص، RSI مقایسه را بین روزهایی که دارایی در قیمت بالاتر (Avg Gain) بسته شد و جایی با قیمت پایینتر (Avg Loss) بسته شد، انجام میدهد.
کد شاخص را بنویسید
حالا بیایید کد این اندیکاتورها را خودمان بنویسیم، برای انجام کار از بخش پاین ادیتور (Pine Editor) که در یکی از تبهای زیرین صفحه نمودارهای سایت تردینگویو (Tradingview) است، استفاده خواهیم کرد.
دو نوع اسکریپت متفاوت در پاین وجود دارد که بسته به اینکه شما میخواهید کد یک شاخص و یا یک استراتژی را بنویسید متفاوت است.
بخش study مربوط به اندیکاتورهاست و بخش strategy برای زمانی است که میخواهید برای معاملات short یا long شرایطی را اعمال میکنید.
SMA
برای نوشتن کد شاخص SMA در بخش Indicator Script باید به صورت زیر عمل کنید.
study("SMA 10",overlay=true) Period = input(title="Period",type=integer,defval=10) MA = sma(close,Period) plot(MA, color= blue , linewidth=3, title="SMA", style=line)
- Study: اگر میخواهید که نتایج بر روی نمودار رسم و نمایش داده شود در مقابل overlay کلمه true را بنویسید؛ در غیر اینصورت اگر تنها میخواهید شاخصی بسازید، عبارت false را در این قسمت وارد کنید.
- Period: مقدار تابع ورودی را برابر با ۱۰، که چرخه پیش فرض شاخص SMA است وارد میکنیم. این بدان معناست که در تایم فریم انتخابی، این شاخص قیمتهای بسته شدن ۱۰ کندل آخر را با هم جمع میکند. خروجی آن در period ذخیره میشود و به عنوان یک پارامتر وارد تابع پاین میشود “()sma”.
- MA: متغیری به نام MA تعریف میکنیم که ۱۰ دوره میانگین متحرک ساده بسته شدنهای کندل را در خود نگه دارد.
در نهایت، اسکریپت خود را ذخیره و آن را به نمودار اضافه میکنیم (Add to chart) و نتیجه را بر روی نمودار، برای مثال روی تایم فریم هفتگی بیت کوین، رسم میکنیم.
RSI
برای نوشتن کد شاخص RSI در بخش Indicator Script نیز به طریق مشابه اندیکاتور پیشین عمل میکنیم. کد آن به صورت زیر است:
study("RSI",overlay=false) Length = input(14, minval=۱) RSI= rsi(close, Length) plot(RSI, title="RSI", color=orange, linewidth=۲) band1 = plot(70, title="Upper Line ۹۰",style=line, linewidth=1, color=orange) band0 = plot(30, title="Lower Line ۱۰",style=line, linewidth=1, color=orange) fill(band1, band۰, color=orange, transp=۹۰)
- Study: برای این مورد false را در برابر پارامتر Overlay مینویسیم.
- Length: مقدار پیش فرض تابع ورودی برابر با ۱۴ است. خروجی آن در پارامتر Length ذخیره میشود و به عنوان پارامتری برای ساخت تابع پاین ()rsi مورد استفاده قرار میگیرد.
- RSI: متغیری به نام RSI تعریف میکنیم که ۱۴ دوره (پریود) و نتایج شاخص قدرت نسبی را در خود ذخیره میکند.
- band۰/band۱: خطوطی که موقعیتهای فروش بیش از حد و خرید بیش از حد را مشخص میکنند.
بیاید یک استراتژی بسازیم
در بازار ارز دیجیتال، یکی از بهترین حالتهای بهره بردن از استراتژی، ایجاد یک نمونه نیمه خودکار آن است. هنگامی که شما اعلانی در رابطه با شرایطی که کد آن را نوشتید دریافت کردید، بهتر است قبل از اینکه بدون فکر کردن و تنها بر مبنای چیزی که شاخصها به شما نشان دادند خرید و فروش خود را انجام دهید، خودتان نیز نمودار را چک کنید و سیگنالها را بررسی کنید.
حتما شما از پامپ و دامپها و دستکاریهای بازار ارز دیجیتال خبر دارید، و یا حتی خبرهای منفی و هجوم هجمهها و نظرات منفی به سمت یک ارز و اتفاقاتی مشابه اینها.
اگر شما یک تریدر محافظهکار و با برنامهای باشید، با توجه نوسانات بسیار زیاد این بازار تمام استاپ لاسهای شما عمل خواهند کرد و انجام میشوند. حتی اگر شما یک استاپلاس ۳ درصدی تعریف کنید، ۷۰ درصد معاملهها برای شما در محدوده پرخطر قرار میگیرد. به همین دلیل داشتن یک استراتژی هشداردهنده و دارای سیستم اعلان، میتواند بسیار کمک کننده باشد.
همانطور که پیشتر گفته شد، قصد داریم از سیگنالهای متقاطع یا همان برخوردها استفاده کنیم. میخواهیم دو SMA جداگانه با دوره کوتاه (۹) و بلند (۵۵) ایجاد کنیم و به بررسی تقاطع این دو نمودار باهم بپردازیم.
هنگامی که نمودار کوتاه مدت بالاتر از نمودار میانگین متحرک بلند مدت قرار دارد و با آن برخورد و از آن عبور میکند، این برخورد به منزله سیگنال فروش خواهد بود. در مقابل، زمانی که این برخورد از پایین اتفاق بیفتد، برداشتی که از این تقاطع میتوان داشت، سیگنال خرید و افزایش قیمت است. کد این دستورات به صورت زیر نوشته میشود.
study("SMA strategy",overlay=true) LowestPeriod = input(title="Lowest Period",type=integer,defval=۹) LongestPeriod = input(title="Longest Period",type=integer,defval=۵۵) LowestMA = sma(close,LowestPeriod) LongestMA = sma(close,LongestPeriod) plot(LowestMA, color=black, linewidth=2, title="Lowest MA", trackprice=false, style=line) plot(LongestMA , color=orange, linewidth=۲, title="Longest MA", trackprice=false, style=line) Trend = LowestMA > LongestMA ? ۱ : LowestMA < LongestMA ? -۱ : ۰ Trend1p =(Trend == ۱ and Trend[۱] != ۱ ? Trend : na) Trend۱n =(Trend == -۱ and Trend[۱] != -۱ ? Trend : na) alertcondition(Trend1p, title='"Up Entry', message='BUY') alertcondition(Trend1n, title='"Down Entry', message='SELL') plotshape(Trend1p, color=green, style=shape.arrowup, text ="Buy") plotshape(Trend۱n, color=red, style=shape.arrowdown, text = "Sell")
تابعی تحت عنوان () Alertcondition در کد بالا وجود دارد. این بخش بدین جهت به کد اضافه شد تا در شرایطی که مد نظر ماست، هشدار مربوطه بر روی دستگاه ما ظاهر شود.
alertcondition(Trend۱p, title='"Up Entry', message='BUY') alertcondition(Trend۱n, title='"Down Entry', message='SELL')
بیایید یک هشدار و اعلان فروش برای استلار ایجاد کنیم. در نمودار جفت ارز استلار-اتریوم در تریدینگویو؛ با کلیک بر روی آیکون ایجاد هشدار یا استفاده از کلید میانبر Alt+A، پنجره ایجاد هشدار باز میشود. در قسمت Condition، سیستم Crossover SMA test را انتخاب میکنیم. در بخش بعدی نیز Down Entry را از میان گزینههای دیگر انتخاب میکنیم. برای اعلان خرید نیز به جای Down Entry گزینه Up Entry را انتخاب میکنیم.
در نهایت مدت زمانی که میخواهیم اعلان هشدار ما فعال باشد و چگونگی اعلام این هشدار و متنی که به ما نمایش داده شود را انتخاب میکنیم. به این ترتیب اعلان هشدار را فعال کردیم و میتوانیم با استفاده از این ویژگی از سیگنالهای استراتژی خود، حتی در شرایطی که قادر به چک کردن مداوم نمودارها نیستیم استفاده کنیم.
اما شاید این سوال برای شما ایجاد شود که اگر ما میخواهیم از تنها از دو میانگین متحرک ساده استفاده کنیم، پس چرا به RSI نیاز داریم؟
شاخص RSI تنها یکی از چند ابزاری است که میتواند به شما در پایش بازار کمک کند. استفاده از آن در استراتژیهایتان به فهمیدن نقاط مناسب خرید یا فروش کمک میکند. RSI روش فوقالعادهای است تا بدانید که آیا در زمان مناسبی وارد شدهاید یا قصد خارج شدن دارید.
رویکرد خرید در مواقعی که یک توکن یا دارایی بیش از حد فروخته شده و همچنین فروش در مواقعی که بیش از حد خریداری شده، به نظر مناسب میرسد. اما همانطور که قبلتر بحث شد، شرایطی که بازار ارز دیجیتال تحت تاثیر عوامل محیطی بسیار پرنوسان باشد؛ این سیگنالها نیز قدرت و اعتبار خود را از دست میدهند. برای اینکه در این شرایط محتاطانهتر عمل کنیم از پیدا کردن واگرایی شاخص RSI استفاده میکنیم.
واگرایی نزولی: قیمت ارز یک سناریو صعودی را دنبال میکند، اما حرکات RSI درست در جهت مخالف است.
واگرای صعودی: قیمت ارز یک سناریو نزولی را دنبال میکند، اما حرکات RSI درست در جهت مخالف است.
اگر به دنبال چگونگی ایجاد یک نسخه خودکار هستید، یک نمونه کد در زیر آورده شده است:
strategy("SMA Strategy", overlay=true) longCondition = crossover(sma(close, ۱۰), sma(close, ۲۰)) if (longCondition) strategy.entry("Long Entry", strategy.long) shortCondition = crossunder(sma(close, ۱۰), sma(close, ۲۰)) if (shortCondition) strategy.entry("Short Entry", strategy.short)
جمعبندی
الگوریتمهای معاملاتی آنقدرها هم ساده نیستند. مطلبی که مطالعه کردید، فقط نگاهی کوتاه به چگونگی پیادهسازی یکی از سادهترین الگوریتمها در بخش پاین ادیتور سایت تریدینگویو بود.
دورههای به کار رفته در کد به فراخور نیاز کاربر و چگونگی استفاده او از تایمفریمهای روزانه میتواند تغییر کند. در این صورت بررسی دقت کد نوشته شده و صحت خروجیهای آن به عهده خود شما است.
برای ساخت یک استراتژی خوب، داشتن یک چکلیست که به ما امکان بررسی نتیجه عملیات را بدهد ضروری است. بیش از حد کد خود را اجرا نکنید، کافی است روز به روز روی استراتژی خود کار کنید. عملیات خود را جایی یادداشت کنید و آنها را با نظم و برنامه اجرایی کنید.
زمانی که هیچ سرنخ و نشانهای در مورد خروجی استراتژی و روند دارایی وجو ندارد، بهترین کاری که میتوانید در این شرایط انجام دهید این است که آن را رها کنید. هدف نهایی ما به حداقل رساندن ضرر در زمانی است که خرید و فروش خلاف روند انجام میشود و به حداکثر رساندن سود در زمانی که قیمت مطابق میل شماست.
ممنون از متن مفیدتون