وسائل لوڈ ہو رہے ہیں... لوڈنگ...

چلتی اوسط کی حکمت عملی کے بعد کم تعدد فوریر ٹرانسفارمر رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-12-05 14:56:06
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

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

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

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

فوائد کا تجزیہ

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

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

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

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

خطرے کا تجزیہ

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

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

  3. روایتی رجحانات کی پیروی کرنے والی حکمت عملیوں میں سست روی ہوتی ہے ، رجحانات سے قبل ہی باہر نکلنا ایک مسئلہ ہے جسے اس حکمت عملی کو حل کرنے کی ضرورت ہے۔

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

اصلاح کی ہدایات

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

  2. خطرات کو کنٹرول کرنے کے لئے سٹاپ نقصان، مسلسل نقصان سے باہر نکلنے اور دیگر سٹاپ نقصان کی حکمت عملی شامل کریں.

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

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

خلاصہ

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


/*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)

مزید