
اس حکمت عملی کا بنیادی خیال یہ ہے کہ ایک خودکار تجارتی نظام تیار کیا جائے جو رجحان کے حالات میں منافع بخش ہو اور اس کے ساتھ ساتھ واپسی پر قابو پالے ، جس میں چلتی اوسط اور اسٹاپ نقصان کا سراغ لگانے کا طریقہ کار استعمال کیا جائے گا۔
یہ حکمت عملی صارفین کو مختلف قسم کے متحرک اوسط کی اجازت دیتی ہے ، بشمول سادہ متحرک اوسط ، اشاریہ متحرک اوسط ، لاگت متحرک اوسط وغیرہ۔ صارف اپنی پسند کے مطابق متحرک اوسط کی اقسام کا انتخاب کرسکتا ہے۔
صارف کو منتقل اوسط کی مدت کی لمبائی کی ضرورت ہوتی ہے۔ عام طور پر ، مڈل اور شارٹ لائن تجارت میں ، منتقل اوسط کی مدت 20 سے 60 کے درمیان ہوتی ہے۔
ایک بار جب آپ نے ایک اوسط اوسط منتخب کیا ہے تو ، حکمت عملی اس اوسط کو اصل وقت میں گنتی کرتی ہے۔ جب قیمت بڑھتی ہے تو ، اس سے آگے بڑھیں اور جب قیمت کم ہوتی ہے تو ، اس سے آگے بڑھیں۔
حکمت عملی ٹریکنگ اسٹاپ میکانیزم کا استعمال کرتی ہے۔ جب پوزیشن کھولی جاتی ہے تو ، حکمت عملی متحرک اوسط اور قیمت کے مابین تعلقات کی نگرانی کرتی ہے ، اور اسٹاپ لائن کی پوزیشن کو متحرک طور پر ایڈجسٹ کرتی ہے۔ خاص طور پر ، اسٹاپ لائن کی پوزیشن صارف کے مقرر کردہ اسٹاپ فی صد کے علاوہ / کم کرنے کے برابر ہے۔
صارف اسٹاپ نقصان کی فیصد مقرر کرسکتا ہے۔ قدر جتنی زیادہ ہوگی ، اس کا دائرہ وسیع ہوگا ، اور اس سے زیادہ حساس ہونے سے بچ جائے گا۔ قدر جتنی کم ہوگی ، اس کا خطرہ کم ہوگا۔ اسٹاپ نقصان کی فیصد عام طور پر 2٪ -5٪ کے درمیان ہے۔
اگر پوزیشن کھولنے کے بعد قیمت دوبارہ منتقل ہونے والی اوسط سے ٹوٹ جاتی ہے تو ، پوزیشن بند ہوجاتی ہے۔
مندرجہ ذیل طریقوں سے خطرے کو بہتر اور کنٹرول کیا جاسکتا ہے:
اس حکمت عملی کو مزید بہتر بنانے کے لیے درج ذیل نکات پر غور کیا جا سکتا ہے:
دوسرے اشارے کی تصدیق کو شامل کریں ، اس طرح اسٹیلنگ کے دوران بار بار تجارت سے گریز کریں۔ MACD ، KD اور اسی طرح کے اشارے شامل کیے جاسکتے ہیں ، اور صرف اس صورت میں پوزیشن کھولی جاسکتی ہے جب وہ ایک ساتھ سگنل دیتے ہیں۔
مختلف قسم کے چلتی اوسط کو جوڑنے کے لئے استعمال کیا جاتا ہے۔ مثال کے طور پر ، 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())