ট্রেইলিং স্টপ মুভিং এভারেজ কৌশল


সৃষ্টির তারিখ: 2023-10-24 11:21:57 অবশেষে সংশোধন করুন: 2023-10-24 11:21:57
অনুলিপি: 0 ক্লিকের সংখ্যা: 461
1
ফোকাস
1237
অনুসারী

ট্রেইলিং স্টপ মুভিং এভারেজ কৌশল

ওভারভিউ

এই কৌশলটির মূল ধারণা হল একটি স্বয়ংক্রিয় ট্রেডিং সিস্টেম ডিজাইন করা যা প্রবণতা পরিস্থিতিতে মুনাফা অর্জন করতে পারে এবং প্রত্যাহার নিয়ন্ত্রণ করতে পারে, যা চলমান গড় এবং স্টপ লস ট্র্যাকিং ব্যবহার করে।

কৌশল নীতি

  1. এই কৌশলটি ব্যবহারকারীকে বিভিন্ন ধরণের চলমান গড় নির্বাচন করার অনুমতি দেয়, যার মধ্যে রয়েছে সরল চলমান গড়, সূচকীয় চলমান গড়, ব্যয়বহুল চলমান গড় ইত্যাদি। ব্যবহারকারী তাদের পছন্দ অনুসারে চলমান গড়ের ধরন চয়ন করতে পারেন।

  2. ব্যবহারকারীকে মুভিং এভারেজের পিরিয়ডের দৈর্ঘ্য সেট করতে হবে। সাধারণত মাঝারি এবং সংক্ষিপ্ত লাইনের লেনদেনের ক্ষেত্রে, মুভিং এভারেজের পিরিয়ড ২০-৬০ এর মধ্যে থাকে।

  3. একটি চলমান গড় নির্বাচন করার পরে, কৌশলটি রিয়েল-টাইমে চলমান গড় গণনা করে। যখন দাম বেড়ে যায় এবং চলমান গড়কে ভেঙে দেয়, তখন আরও বেশি করুন; যখন দাম কমে যায় এবং চলমান গড়কে ভেঙে যায়, তখন খালি করুন।

  4. কৌশলটি স্টপ লস ট্র্যাকিং মেশিন ব্যবহার করে। পজিশন খোলার পরে, কৌশলটি চলমান গড় এবং দামের সম্পর্কের উপর ক্রমাগত নজর রাখে, গতিশীলভাবে স্টপ লিনের অবস্থানকে সামঞ্জস্য করে। বিশেষত, স্টপ লিনের অবস্থানটি ব্যবহারকারীর সেট করা স্টপ শতাংশের সাথে চলমান গড় যোগ / বিয়োগের সমান।

  5. ব্যবহারকারীরা স্টপ লস শতাংশ সেট করতে পারেন। স্টপ লস পরিসীমা যত বেশি, তত বেশি বিস্তৃত, যাতে স্টপ লস খুব সংবেদনশীল না হয়। স্টপ লস পরিসীমা যত কম, তত বেশি কঠোর, ঝুঁকি হ্রাস। স্টপ লস শতাংশ সাধারণত 2% -5% এর মধ্যে সেট করা হয়।

  6. পজিশন খোলার পর, যদি দাম আবার চলমান গড়ের বাইরে চলে যায়, তাহলে পজিশন বন্ধ হয়ে যায়।

কৌশলগত সুবিধা

  • ট্রেন্ডিংয়ের সময় পজিশন খোলার ফলে আপনি অনেক বেশি লাভ করতে পারেন।
  • ট্র্যাকিং স্টপ মেশিন ব্যবহার করে, স্টপ অবস্থানটি রীতি অনুসারে সামঞ্জস্য করা যায়, যাতে স্টপটি খুব ছোট না হয় এবং কারাগারে আটকে না যায়
  • আপনি আপনার ঝুঁকি পছন্দ অনুযায়ী বিভিন্ন মুভিং এভারেজ এবং স্টপ লস শতাংশ চয়ন করতে পারেন
  • একাধিক চলমান গড় ধরন সমর্থন করে, যা পরীক্ষার মাধ্যমে সর্বোত্তম প্যারামিটার খুঁজে পেতে পারে
  • কৌশলগত যুক্তিগুলি সহজ এবং স্পষ্ট, সহজে বোঝা এবং পরিবর্তন করা যায়

ঝুঁকি বিশ্লেষণ

  • মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতির সময় মুদ্রাস্ফীতি হতে পারে
  • যদি স্টপ ল্যাম্পের পরিমাণ বেশি হয়, তাহলে ক্ষতির পরিমাণ বাড়তে পারে
  • বিভিন্ন জাতের এবং বিভিন্ন সময়কালের জন্য, চলমান গড় এবং স্টপ লস শতাংশের সর্বোত্তম প্যারামিটারগুলি আলাদা হতে পারে
  • গুরুত্বপূর্ণ সংবাদ অনুষ্ঠানের আগে এই কৌশল ব্যবহার করা থেকে বিরত থাকুন।

নিম্নলিখিত উপায়ে ঝুঁকি অপ্টিমাইজ করা এবং নিয়ন্ত্রণ করা যায়ঃ

  • প্রবণতা দেখা যায় এমন প্রজাতি এবং সময়কালের জন্য এই কৌশলটি ব্যবহার করুন
  • চলমান গড় সময়কালের সাথে সামঞ্জস্য করে, মধ্য-দীর্ঘ-রেখা চলমান গড় সময়কাল ব্যবহার করে
  • সঠিকভাবে ক্ষতির হার কমানো এবং ঝুঁকি নিয়ন্ত্রণ করা
  • বিভিন্ন প্রজাতির উপর পরীক্ষা করে সেরা প্যারামিটার খুঁজুন
  • বড় খবর পাওয়ার আগেই লেনদেন বন্ধ

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে আরও উন্নত করা যেতে পারেঃ

  1. অন্যান্য সূচকগুলির নিশ্চিতকরণ যুক্ত করুন, পুনরুদ্ধারের সময় ঘন ঘন লেনদেন এড়িয়ে চলুন। MACD, KD ইত্যাদি সূচকগুলি যোগ করা যেতে পারে, কেবলমাত্র যখন তারা একই সাথে সংকেত দেয় তখনই পজিশন খুলতে পারে।

  2. একাধিক চলমান গড় ব্যবহার করে সমন্বয় করা যায়। উদাহরণস্বরূপ, একই সাথে 5 দিনের লাইন এবং 20 দিনের লাইন ব্যবহার করা হয়। কেবলমাত্র দুটি চলমান গড় একই দিকে সংকেত প্রেরণ করার সময় পজিশন খোলা হয়।

  3. বিভিন্ন জাতের জন্য পৃথক পৃথক পরীক্ষার পরামিতি, সর্বোত্তম পরামিতি সেট করুন। প্রতিটি জাত এবং সময়কালের জন্য পরামিতি আলাদা, পৃথক পরীক্ষার প্রয়োজন।

  4. পজিশনের সংখ্যা বাড়ানোর ব্যবস্থাপনা কৌশল। যেমন, একটি নির্দিষ্ট পরিমাণে পজিশন খোলার জন্য সেট করুন, তারপরে স্টপ লস-এর সাথে পজিশন যুক্ত করুন।

  5. প্রতিদিন সর্বোচ্চ পজিশন খোলার সংখ্যা বা পজিশন খোলার সময়সীমা নির্ধারণ করুন। খুব ঘন ঘন লেনদেন সীমাবদ্ধ করুন

  6. মেশিন লার্নিং অ্যালগরিদম যোগ করা হয়েছে, ঐতিহাসিক তথ্যের উপর ভিত্তি করে প্যারামিটারগুলিকে গতিশীলভাবে অপ্টিমাইজ করা হয়েছে। প্যারামিটারগুলির স্ট্যাটিক সেটিং এড়ানো হয়েছে।

  7. ডিপ লার্নিং মডেল ব্যবহার করে মূল্য প্রবণতা পূর্বাভাস দেওয়া যায়।

সারসংক্ষেপ

এই কৌশলটি সামগ্রিকভাবে একটি খুব ব্যবহারিক প্রবণতা ট্র্যাকিং কৌশল। এটি প্রবণতার দিকনির্দেশের জন্য একটি চলমান গড় ব্যবহার করে এবং স্টপ লস ট্র্যাকিংয়ের সাথে ঝুঁকি নিয়ন্ত্রণ করে, যা প্রবণতার পরিস্থিতিতে আরও ভাল রিটার্ন অর্জন করতে পারে। প্যারামিটার অপ্টিমাইজেশন এবং অন্যান্য সূচক বা মডেলের সাথে সংমিশ্রণের মাধ্যমে কৌশলটির স্থায়িত্ব এবং রিটার্নের হার আরও বাড়ানো যেতে পারে। তবে ব্যবহারকারীদের বিভিন্ন জাতের এবং সময়কালের পরামিতি সেটিংয়ের পার্থক্য এবং বড় ইভেন্টের প্রভাব সম্পর্কে সচেতন হওয়া দরকার।

কৌশল সোর্স কোড
/*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())