موونگ ایوریج سٹریٹیجی کے بعد کم فریکوئنسی فوئیر ٹرانسفارم ٹرینڈ


تخلیق کی تاریخ: 2023-12-05 14:56:06 آخر میں ترمیم کریں: 2023-12-05 14:56:06
کاپی: 0 کلکس کی تعداد: 807
1
پر توجہ دیں
1619
پیروکار

موونگ ایوریج سٹریٹیجی کے بعد کم فریکوئنسی فوئیر ٹرانسفارم ٹرینڈ

جائزہ

یہ حکمت عملی ایک ٹرینڈ ٹریکنگ حکمت عملی ہے جو قیمتوں کی ترتیب میں کم تعدد رجحان اجزاء کو نکالنے کے لئے کم تعدد فلیٹ ٹرانسفارمیشن کا استعمال کرتی ہے ، جس میں تین تیز اور سست حرکت پذیر اوسط شامل ہیں تاکہ رجحانات کی شناخت اور تجارتی سگنل کی پیداوار ممکن ہو۔ جب تیز رفتار ایم اے کے اوپر میڈیم ایم اے سے گزرتا ہے اور قیمت سست رفتار ایم اے سے زیادہ ہوتی ہے تو زیادہ کام کریں ، اور جب تیز رفتار ایم اے کے نیچے میڈیم ایم اے سے گزرتا ہے اور قیمت سست رفتار ایم اے سے کم ہوتی ہے تو خالی ہوجائیں۔ یہ حکمت عملی درمیانی لمبی لمبی رجحانات کو ٹریک کرنے کے لئے موزوں ہے۔

حکمت عملی کا اصول

  1. کم فریکوئینسی فلیٹ تبدیلی کا استعمال کرتے ہوئے قیمت کی ترتیب کو نکالنے کے لئے کم فریکوئینسی رجحان اجزاء. کم فریکوئینسی فلیٹ تبدیلی مؤثر طریقے سے ہائی فریکوئینسی شور کو فلٹر کرتی ہے، جس سے نکالنے والے رجحان سگنل کو زیادہ ہموار بنا دیا جاتا ہے.

  2. تین تیز اور سست حرکت پذیر اوسط رجحانات کا تعین کرتی ہیں۔ جن میں سست ایم اے 200 ادوار ہے ، درمیانی ایم اے 20 ادوار ہے ، اور تیز ایم اے 5 ادوار ہے۔ سست ایم اے فلٹر شور ، درمیانی ایم اے رجحان کی تبدیلی کو پکڑتا ہے ، اور تیز ایم اے ٹریڈنگ سگنل دیتا ہے۔

  3. جب فاسٹ ایم اے میں میڈیم ایم اے سے گزرتا ہے اور قیمت سست ایم اے سے زیادہ ہوتی ہے تو ، فیصلہ کریں کہ تجارت بڑھتی ہوئی رجحان میں داخل ہوگئی ہے ، اور زیادہ کام کریں۔ جب فاسٹ ایم اے میں میڈیم ایم اے سے گزرتا ہے اور قیمت سست ایم اے سے کم ہے تو ، فیصلہ کریں کہ تجارت نیچے کی طرف جارہی ہے ، اور خالی ہے۔

  4. یہ حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے ، جب رجحان میں جانے کا فیصلہ کیا جاتا ہے تو ، اس رجحان میں منافع کمانے کے لئے جتنا ممکن ہو سکے کے لئے پوزیشنیں رکھی جائیں گی۔

طاقت کا تجزیہ

  1. اعلی تعدد شور کو مؤثر طریقے سے فلٹر کرنے کے لئے کم تعدد سلنڈر لیف ٹرانسفارمیشن کا استعمال کرتے ہوئے، رجحان سگنل کو زیادہ قابل اعتماد اور مستحکم بنانے کے لئے.

  2. تیز یا سست ایم اے کا استعمال مارکیٹ کے رجحان کی تبدیلی کا مؤثر انداز میں فیصلہ کرتا ہے ، جھوٹے سگنل سے بچتا ہے۔ آہستہ ایم اے پیرامیٹر کی ترتیب بڑی ہے ، شور کو مؤثر طریقے سے فلٹر کرتی ہے۔

  3. اس حکمت عملی میں وسط اور لمبی لائن رجحانات کی پیروی کرنے کا واضح فائدہ ہے۔ جب مارکیٹ میں رجحان میں داخل ہونے کا فیصلہ کیا جاتا ہے تو ، اس رجحان کی پیروی کرنے کے لئے پوزیشنوں کو برقرار رکھا جاتا ہے ، جس سے اضافی منافع حاصل ہوتا ہے۔

  4. اس حکمت عملی کے پیرامیٹرز کو بہتر بنانے کے لئے کافی جگہ ہے ، صارف مختلف اقسام اور ادوار کے مطابق پیرامیٹرز کو ایڈجسٹ کرسکتا ہے ، اور یہ لچکدار ہے۔

خطرے کا تجزیہ

  1. رجحانات کی پیروی کرنے کی حکمت عملی کے طور پر، یہ حکمت عملی مؤثر طریقے سے اندازہ لگانے اور ردعمل میں ناکامی کی وجہ سے رجحانات کو تبدیل کرنے میں ناکام ہے، جس سے نقصانات میں اضافہ ہوسکتا ہے.

  2. اس حکمت عملی کے نتیجے میں زیادہ منافع بخش تجارت اور نقصان دہ تجارت ہوتی ہے ، لیکن آخر کار منافع بخش ہونا ممکن ہے ، جس میں کچھ ذہنی برداشت کی ضرورت ہوتی ہے۔

  3. روایتی رجحانات کی پیروی کرنے والی حکمت عملی میں ہائیڈروکلورائڈ کی تشکیل کا خطرہ ہوتا ہے ، اور اس حکمت عملی کو اس مسئلے کو حل کرنے کی ضرورت ہے کہ رجحانات سے پہلے ہی نکل جانا چاہئے۔

  4. اسٹاپ نقصان کو انفرادی نقصان پر قابو پانے کے لئے ترتیب دیا جاسکتا ہے۔ اس کے علاوہ ، اسٹریٹجی کی خطرے سے بچنے کی صلاحیت کا اندازہ لگانے کے لئے ، غیر متوقع واقعات کی جانچ کو بھی شامل کیا جاسکتا ہے۔

اصلاح کی سمت

  1. مختلف قسم کے حرکت پذیری اوسط کے الگورتھم کو آزمائیں تاکہ زیادہ اقسام اور ادوار کو ایڈجسٹ کیا جاسکے۔

  2. نقصان کو روکنے کی حکمت عملی ، جیسے نقصان کو روکنا ، مسلسل نقصان سے نکلنا ، اور خطرے کو کنٹرول کرنا۔

  3. رجحان کی طاقت کے اشارے کو بڑھانا تاکہ ہلچل اور کمزور رجحانات کے دوران زیادہ تجارت سے بچا جاسکے۔

  4. رجحان کی تبدیلی کا تعین کرنے کے لئے مشین لرننگ ماڈل شامل کریں ، تاکہ حکمت عملی کو کسی بھی اچانک واقعے کے ل some کچھ لچکدار بنایا جاسکے۔

خلاصہ کریں۔

یہ کم فریکوئینسی سلنڈر لیف ٹرینڈ ٹریکنگ حرکت پذیر اوسط حکمت عملی ہے ، جس میں شور کو فلٹر کرنے ، رجحان کی شناخت اور رجحان کی پیروی کرنے کے فوائد ہیں ، جو درمیانی لمبی لکیر کے لئے موزوں ہے۔ ایک رجحان سے باخبر رہنے کی حکمت عملی کے طور پر ، اس میں بنیادی طور پر رجحان کے الٹ جانے اور مسلسل ہلچل کا خطرہ ہے۔ ان خطرات کے لئے کچھ ردعمل کی حکمت عملی موجود ہے۔ مجموعی طور پر ، اس حکمت عملی کے پیرامیٹرز وسیع ہیں اور اس میں بہت زیادہ اصلاح کی صلاحیت ہے ، جو حکمت عملی تیار کرنے اور خطرے پر قابو پانے کی صلاحیت رکھنے والے سرمایہ کاروں کے لئے موزوں ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-27 00:00:00
end: 2023-11-29 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 03.freeman

//@version=4
strategy("FTSMA", overlay=true )
src=input(close,"Source")
slowMA=input(200,"Slow MA period")
mediumMA=input(20,"Mid MA period")
fastMA=input(5,"Fast MA period")
plotSMA=input(true,"Use MA")
sin1=input(1,"First sinusoid",minval=1)
sin2=input(2,"Second sinusoid",minval=1)
sin3=input(3,"Third sinusoid",minval=1)
smoothinput = input('EMA', title = "MA Type", options =['EMA', 'SMA', 'ALMA','FRAMA','RMA', 'SWMA', 'VWMA','WMA','LinearRegression'])
linearReg=input(false, "Use linear regression?")
linregLenght=input(13, "Linear regression lenght")
linregOffset=input(0, "Linear regression offset")

//------FRAMA ma---------
ma(src, len) =>
    float result = 0
    int len1 = len/2
    frama_SC=200
    frama_FC=1
    e = 2.7182818284590452353602874713527
    w = log(2/(frama_SC+1)) / log(e) // Natural logarithm (ln(2/(SC+1))) workaround
    H1 = highest(high,len1)
    L1 = lowest(low,len1)
    N1 = (H1-L1)/len1
    H2_ = highest(high,len1)
    H2 = H2_[len1]
    L2_ = lowest(low,len1)
    L2 = L2_[len1]
    N2 = (H2-L2)/len1
    H3 = highest(high,len)
    L3 = lowest(low,len)
    N3 = (H3-L3)/len
    dimen1 = (log(N1+N2)-log(N3))/log(2)
    dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
    alpha1 = exp(w*(dimen-1))
    oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
    oldN = (2-oldalpha)/oldalpha
    N = (((frama_SC-frama_FC)*(oldN-1))/(frama_SC-1))+frama_FC
    alpha_ = 2/(N+1)
    alpha = alpha_<2/(frama_SC+1)?2/(frama_SC+1):(alpha_>1?1:alpha_)
    frama = 0.0
    frama :=(1-alpha)*nz(frama[1]) + alpha*src
    result := frama
    result

// ----------MA calculation - ChartArt and modified by 03.freeman-------------
calc_ma(src,l) => 
    _ma = smoothinput=='SMA'?sma(src, l):smoothinput=='EMA'?ema(src, l):smoothinput=='WMA'?wma(src, l):smoothinput=='LinearRegression'?linreg(src, l,0):smoothinput=='VWMA'?vwma(src,l):smoothinput=='RMA'?rma(src, l):smoothinput=='ALMA'?alma(src,l,0.85,6):smoothinput=='SWMA'?swma(src):smoothinput=='FRAMA'?ma(sma(src,1),l):na
    
//----------------------------------------------


//pi = acos(-1)
// Approximation of Pi in _n terms --- thanks to e2e4mfck
f_pi(_n) =>
    _a = 1. / (4. * _n + 2)
    _b = 1. / (6. * _n + 3)
    _pi = 0.
    for _i = _n - 1 to 0
        _a := 1 / (4. * _i + 2) - _a / 4.
        _b := 1 / (6. * _i + 3) - _b / 9.
    _pi := (4. * _a) + (4. * _b) - _pi
pi=f_pi(20)

//---Thanks to xyse----https://www.tradingview.com/script/UTPOoabQ-Low-Frequency-Fourier-Transform/
//Declaration of user-defined variables
N = input(defval=64, title="Lookback Period", type=input.integer, minval=2, maxval=600, confirm=false, step=1, options=[2,4,8,16,32,64,128,256,512,1024,2048,4096])

//Real part of the Frequency Domain Representation
ReX(k) =>
    sum = 0.0
    for i=0 to N-1
        sum := sum + src[i]*cos(2*pi*k*i/N)
    return = sum
    
//Imaginary part of the Frequency Domain Representation
ImX(k) =>
    sum = 0.0
    for i=0 to N-1
        sum := sum + src[i]*sin(2*pi*k*i/N)
    return = -sum

//Get sinusoidal amplitude from frequency domain  
ReX_(k) =>
    case = 0.0
    if(k!=0 and k!=N/2)
        case := 2*ReX(k)/N
    if(k==0)
        case := ReX(k)/N
    if(k==N/2)
        case := ReX(k)/N
    return = case
    
 //Get sinusoidal amplitude from frequency domain  
ImX_(k) =>
    return = -2*ImX(k)/N
    
//Get full Fourier Transform
x(i, N) =>
    sum1 = 0.0
    sum2 = 0.0
    for k=0 to N/2
        sum1 := sum1 + ReX_(k)*cos(2*pi*k*i/N)
    for k=0 to N/2
        sum2 := sum2 + ImX_(k)*sin(2*pi*k*i/N)
    return = sum1+sum2
    
//Get single constituent sinusoid
sx(i, k) =>
    sum1 = ReX_(k)*cos(2*pi*k*i/N)
    sum2 = ImX_(k)*sin(2*pi*k*i/N)
    return = sum1+sum2
//Calculations for strategy
SLOWMA = plotSMA?calc_ma(close+sx(0,sin1),slowMA):close+sx(0,sin1)
MEDMA = plotSMA?calc_ma(close+sx(0,sin2),mediumMA):close+sx(0,sin2)
FASTMA = plotSMA?calc_ma(close+sx(0,sin3),fastMA):close+sx(0,sin3)

SLOWMA := linearReg?linreg(SLOWMA,linregLenght,linregOffset):SLOWMA
MEDMA := linearReg?linreg(MEDMA,linregLenght,linregOffset):MEDMA
FASTMA := linearReg?linreg(FASTMA,linregLenght,linregOffset):FASTMA

//Plot 3 Low-Freq Sinusoids
plot(SLOWMA, color=color.green)
plot(MEDMA, color=color.red)
plot(FASTMA, color=color.blue)

//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = FASTMA>MEDMA and close > SLOWMA             //crossover(FASTMA, MEDMA) and close > SLOWMA
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

shortCondition = FASTMA<MEDMA and close < SLOWMA            //crossunder(FASTMA, MEDMA) and close < SLOWMA
if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Long Entry", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Short Entry", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)