এই কৌশলটির মূল ধারণা হল একটি স্বয়ংক্রিয় ট্রেডিং সিস্টেম ডিজাইন করা যা ট্রেন্ডিং মার্কেটে মুনাফা অর্জন করতে পারে এবং চলমান গড় এবং একটি ট্রেলিং স্টপ লস প্রক্রিয়া ব্যবহার করে ড্রাউনডাউন নিয়ন্ত্রণ করতে পারে।
কৌশলটি ব্যবহারকারীদের সহজ চলমান গড়, এক্সপোনেন্সিয়াল চলমান গড়, ওজনযুক্ত চলমান গড় ইত্যাদি সহ বিভিন্ন ধরণের চলমান গড়ের মধ্যে থেকে বেছে নিতে দেয়। ব্যবহারকারীরা তাদের পছন্দগুলির উপর ভিত্তি করে চলমান গড়ের ধরণটি নির্বাচন করতে পারেন।
ব্যবহারকারীদের চলমান গড়ের সময়কাল সেট করতে হবে। সাধারণত মধ্যমেয়াদী ব্যবসায়ের জন্য সময়কাল 20-60 এর মধ্যে থাকে।
একবার চলমান গড়টি বেছে নেওয়ার পরে, কৌশলটি এটি রিয়েল-টাইমে গণনা করবে। যখন দাম চলমান গড়ের উপরে ভেঙে যায় এবং যখন দাম চলমান গড়ের নীচে ভেঙে যায় তখন এটি দীর্ঘ হবে।
কৌশলটি একটি ট্রেলিং স্টপ লস প্রক্রিয়া ব্যবহার করে। একটি অবস্থান খোলার পরে, এটি চলমান গড় এবং দামের মধ্যে সম্পর্ককে ক্রমাগত পর্যবেক্ষণ করবে এবং গতিশীলভাবে স্টপ লস স্তরটি সামঞ্জস্য করবে। বিশেষত, স্টপ লসটি চলমান গড় প্লাস / বিয়োগ স্টপ লস শতাংশে সেট করা হয় যা ব্যবহারকারী দ্বারা সেট করা হয়।
ব্যবহারকারীরা স্টপ লস শতাংশ সেট করতে পারেন। একটি বৃহত্তর শতাংশের অর্থ বৃহত্তর স্টপ লস পরিসীমা এবং কম সংবেদনশীলতা। একটি ছোট শতাংশের অর্থ একটি সংকীর্ণ স্টপ লস এবং কম ঝুঁকি। স্টপ লস শতাংশ সাধারণত 2%-5% এর মধ্যে সেট করা হয়।
পজিশন খোলার পর, যদি মূল্য চলমান গড়ের মধ্য দিয়ে ফিরে আসে, পজিশনটি বন্ধ হয়ে যাবে।
ঝুঁকিগুলি নিম্নলিখিত পদ্ধতিতে অপ্টিমাইজ করা এবং নিয়ন্ত্রণ করা যেতে পারেঃ
কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অনুকূলিত করা যেতে পারেঃ
নিশ্চিতকরণের জন্য অন্যান্য সূচক যোগ করুন, পরিসীমা-সীমাবদ্ধ বাজারের সময় অত্যধিক বাণিজ্য এড়ানো। এমএসিডি, কেডি যোগ করা যেতে পারে, যাতে সংকেতগুলি কেবল যখন তারা সারিবদ্ধ হয় তখনই নেওয়া হয়।
উদাহরণস্বরূপ, একটি 5-দিনের এমএ এবং 20-দিনের এমএ একসাথে ব্যবহার করা যেতে পারে, যাতে উভয়ই একই দিকে সারিবদ্ধ হলেই ট্রেডগুলি নেওয়া হয়।
প্রতিটি পণ্যের জন্য পৃথকভাবে পরামিতি পরীক্ষা করুন এবং সর্বোত্তম পরামিতিগুলি সেট করুন। পরামিতিগুলি পণ্য এবং সময়সীমার মধ্যে পৃথক হয় তাই পৃথক পরীক্ষার প্রয়োজন।
উদাহরণস্বরূপ, প্রাথমিক অবস্থানের জন্য স্থির পরিমাণ, তারপর স্টপ লস দূরত্বের উপর ভিত্তি করে অবস্থানের যোগ করুন।
দিনে সর্বোচ্চ সংখ্যক লেনদেন বা লেনদেনের মধ্যে সর্বনিম্ন সময় নির্ধারণ করুন। এটি অত্যধিক লেনদেন সীমাবদ্ধ করে।
স্ট্যাটিক প্যারামিটার সেটিং এড়ানো, ঐতিহাসিক তথ্যের উপর ভিত্তি করে প্যারামিটারগুলিকে গতিশীলভাবে অপ্টিমাইজ করার জন্য মেশিন লার্নিং অ্যালগরিদম যুক্ত করুন।
দামের প্রবণতা পূর্বাভাস দেওয়ার জন্য গভীর শেখার মডেলগুলি অন্তর্ভুক্ত করুন, প্রবণতার দিকনির্দেশের বিচারকে সহায়তা করুন।
সামগ্রিকভাবে এটি একটি খুব ব্যবহারিক প্রবণতা অনুসরণকারী কৌশল। এটি ঝুঁকি নিয়ন্ত্রণের জন্য প্রবণতা দিক নির্ধারণ এবং ট্রেলিং স্টপগুলি নির্ধারণ করতে চলমান গড় ব্যবহার করে। এটি ট্রেন্ডিং বাজারে ভাল রিটার্ন তৈরি করতে পারে। প্যারামিটার অপ্টিমাইজেশন এবং অন্যান্য সূচক বা মডেলগুলির সাথে সংহতকরণ স্থিতিশীলতা এবং লাভজনকতা আরও বাড়িয়ে তুলতে পারে। ব্যবহারকারীদের পণ্য এবং সময়সীমা জুড়ে প্যারামিটার সেটিংসের পার্থক্য এবং পাশাপাশি বড় ইভেন্টগুলির প্রভাবগুলি লক্ষ্য করা দরকার। সামগ্রিকভাবে এই কৌশলটি মাঝারি স্তরের হেজ ফান্ড এবং কিছু অভিজ্ঞতার সাথে খুচরা বিনিয়োগকারীদের জন্য উপযুক্ত।
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-23 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //attoCryp, @HikmetSezen58 strategy("MOST Multi MAs", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100) sx=input(defval = "close" ,title="Fiyat sec", options=[ "close", "high", "low", "open", "hl2", "hlc3", "hlco4", "hlcc4", "hlccc5"]) smox=input(defval = "HulleMA", title = "Hareketli Ortalama: ", options=["T3", "SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "EVWMA", "HullMA", "HulleMA", "LSMA", "ALMA", "TMA", "SSMA"]) timeFramemost = input(title="++++++++++++++++++++++++++++++++++++", defval="MOST Ayarlari:") yuzde=input(defval=3.8, minval=0, step=0.1, title="Yuzde Oran")/100 ortalamauzunluk=input(defval=28, title="Periyot Uzunlugu", minval=1) f=input(defval=0.4, step=0.1, title="T3 icin Factor", minval=0.01) timeFrameadd=input(title="++++++++++++++++++++++++++++++++++++", defval="Diger Orta.Ayar:") offsig=input(defval=4, title="LSMA icin Offset veya ALMA icin Sigma", minval=0) offalma=input(defval=0.6, title="ALMA icin Offset", minval=0, step=0.01) timeFramess=input(title="++++++++++++++++++++++++++++++++++++", defval="Baslangic-Bitis:") gun_baslangic=input(defval=1, title="Baslangic Gunu", minval=1, maxval=31) ay_baslangic=input(defval=1, title="Baslangic Ayi", minval=1, maxval=12) yil_baslangic=input(defval=2017, title="Baslangic Yili", minval=2010) gun_bitis=input(defval=1, title="Bitis Gunu", minval=1, maxval=31) ay_bitis=input(defval=1, title="Bitis Ayi", minval=1, maxval=12) yil_bitis = input(defval=2019, title="Bitis Yili", minval=2010) // backtest icin baslangic ve bitis zamanlarini belirleme baslangic=timestamp(yil_baslangic, ay_baslangic, gun_baslangic, 00, 00) bitis=timestamp(yil_bitis, ay_bitis, gun_bitis, 23, 59) zamanaraligi() => true //guncel fiyatti belirleme guncelfiyat=sx=="high"?high : sx=="close"?close : sx=="low"?low : sx=="open"?open : sx=="hl2"?(high+low)/2 : sx=="hlc3"?(high+low+close)/3 : sx=="hlco4"?(high+low+close+open)/4 : sx=="hlcc4"?(high+low+close+close)/4 : sx=="hlccc5"?(high+low+close+close+close)/5 : close /////Ortalama Hesaplamalari///// // Tillson T3 sm0(guncelfiyat,ortalamauzunluk,f) => t3e1=ema(guncelfiyat, ortalamauzunluk) t3e2=ema(t3e1, ortalamauzunluk) t3e3=ema(t3e2, ortalamauzunluk) t3e4=ema(t3e3, ortalamauzunluk) t3e5=ema(t3e4, ortalamauzunluk) t3e6=ema(t3e5, ortalamauzunluk) c1=-f*f*f c2=3*f*f+3*f*f*f c3=-6*f*f-3*f-3*f*f*f c4=1+3*f+f*f*f+3*f*f s0=c1 * t3e6 + c2 * t3e5 + c3 * t3e4 + c4 * t3e3 // Basit ortalama sm1(guncelfiyat,ortalamauzunluk) => s1=sma(guncelfiyat, ortalamauzunluk) // Ustel ortalama sm2(guncelfiyat,ortalamauzunluk) => s2=ema(guncelfiyat, ortalamauzunluk) // Cift Ustel ortalama sm3(guncelfiyat,ortalamauzunluk) => s3=2*ema(guncelfiyat, ortalamauzunluk) - ema(ema(guncelfiyat, ortalamauzunluk), ortalamauzunluk) // Uclu Ustel ortalama sm4(guncelfiyat,ortalamauzunluk) => s4=3*(ema(guncelfiyat, ortalamauzunluk) - ema(ema(guncelfiyat, ortalamauzunluk), ortalamauzunluk)) + ema(ema(ema(guncelfiyat, ortalamauzunluk), ortalamauzunluk), ortalamauzunluk) // Agirlikli Ortalama sm5(guncelfiyat,ortalamauzunluk) => s5=wma(guncelfiyat, ortalamauzunluk) // Hacim Agirlikli Ortalama sm6(guncelfiyat,ortalamauzunluk) => s6=vwma(guncelfiyat, ortalamauzunluk) // Smoothed sm7(guncelfiyat,ortalamauzunluk) => s7=0.0 s7:=na(s7[1]) ? sma(guncelfiyat, ortalamauzunluk) : (s7[1] * (ortalamauzunluk - 1) + guncelfiyat) / ortalamauzunluk // Hull Ortalama sm8(guncelfiyat,ortalamauzunluk) => s8=wma(2 * wma(guncelfiyat, ortalamauzunluk / 2) - wma(guncelfiyat, ortalamauzunluk), round(sqrt(ortalamauzunluk))) // Hull Ustel Ortalama sm81(guncelfiyat,ortalamauzunluk) => s8=ema(2 * ema(guncelfiyat, ortalamauzunluk / 2) - ema(guncelfiyat, ortalamauzunluk), round(sqrt(ortalamauzunluk))) // Least Square sm9(guncelfiyat,ortalamauzunluk,offsig) => s9=linreg(guncelfiyat, ortalamauzunluk, offsig) // Arnaud Legoux sm10(guncelfiyat, ortalamauzunluk, offalma, offsig) => s10=alma(guncelfiyat, ortalamauzunluk, offalma, offsig) // Triangular sm11(guncelfiyat, ortalamauzunluk) => s11=sma(sma(guncelfiyat, ortalamauzunluk),ortalamauzunluk) // SuperSmoother filter sm12(guncelfiyat,ortalamauzunluk) => a1=exp(-1.414*3.14159 / ortalamauzunluk) b1=2*a1*cos(1.414*3.14159 / ortalamauzunluk) c2=b1 c3=(-a1)*a1 c1=1 - c2 - c3 s12=0.0 s12:=c1*(guncelfiyat + nz(guncelfiyat[1])) / 2 + c2*nz(s12[1]) + c3*nz(s12[2]) //Elastic Volume Weighted Moving Average sm13(guncelfiyat,ortalamauzunluk) => hacimtoplam=sum(volume, ortalamauzunluk) s13=0.0 s13:=(nz(s13[1]) * (hacimtoplam - volume)/hacimtoplam) + (volume*guncelfiyat/hacimtoplam) ortalamafiyat=smox=="T3"?sm0(guncelfiyat,ortalamauzunluk,f) : smox=="SMA"?sm2(guncelfiyat,ortalamauzunluk) : smox=="EMA"?sm2(guncelfiyat,ortalamauzunluk) : smox=="DEMA"?sm3(guncelfiyat,ortalamauzunluk) : smox=="TEMA"?sm4(guncelfiyat,ortalamauzunluk) : smox=="WMA"?sm5(guncelfiyat,ortalamauzunluk) : smox=="VWMA"?sm6(guncelfiyat,ortalamauzunluk) : smox=="SMMA"?sm7(guncelfiyat,ortalamauzunluk) : smox=="HullMA"?sm8(guncelfiyat,ortalamauzunluk) : smox=="HulleMA"?sm81(guncelfiyat,ortalamauzunluk) : smox=="LSMA"?sm9(guncelfiyat,ortalamauzunluk,offsig) : smox=="ALMA"?sm10(guncelfiyat, ortalamauzunluk, offalma, offsig) : smox=="TMA"?sm11(guncelfiyat,ortalamauzunluk) : smox=="SSMA"?sm12(guncelfiyat,ortalamauzunluk) : smox=="EVWMA"?sm13(guncelfiyat,ortalamauzunluk) : guncelfiyat /////MOST'u hesaplama///// stopfiyat=ortalamafiyat*yuzde mostfiyat=0.0 mostfiyat:=iff(ortalamafiyat>nz(mostfiyat[1],0) and ortalamafiyat[1]>nz(mostfiyat[1],0),max(nz(mostfiyat[1],0),ortalamafiyat-stopfiyat),iff(ortalamafiyat<nz(mostfiyat[1],0) and ortalamafiyat[1]<nz(mostfiyat[1],0),min(nz(mostfiyat[1],0),ortalamafiyat+stopfiyat),iff(ortalamafiyat>nz(mostfiyat[1],0),ortalamafiyat-stopfiyat,ortalamafiyat+stopfiyat))) mostcolor=ortalamafiyat>mostfiyat?lime:fuchsia plot(mostfiyat, color=mostcolor, linewidth=4, title="Most-fiyat") /////AL-SAT LONG-SHORT girislerini belirleme///// long=ortalamafiyat>mostfiyat and ortalamafiyat[1]<mostfiyat[1] short=ortalamafiyat<mostfiyat and ortalamafiyat[1]>mostfiyat[1] if (long) strategy.entry("AL-Long", strategy.long, when = zamanaraligi()) if (short) strategy.entry("SAT-Short", strategy.short, when = zamanaraligi())