FTSMA - رجحان آپ کا دوست ہے

مصنف:چاؤ ژانگ، تاریخ: 2022-05-26 15:49:22
ٹیگز:ای ایم اےایس ایم اےآر ایم اے

یہ میری نئی ٹھوس حکمت عملی ہے: اگر آپ کو یقین ہے کہ TREND آپ کا دوست ہے یہ آپ کے لئے ہے!

میں نے بہت سے جوڑوں کے ساتھ اور بہت سے وقت کے فریم پر تجربہ کیا ہے اور صرف ترتیبات میں معمولی تبدیلیوں کے ساتھ منافع ہے. میں تجویز کرتا ہوں کہ اسے دن کے اندر تجارت کے لیے استعمال کریں۔

بہت اہم نوٹ: یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے ، لہذا مقصد یہ ہے کہ آپ زیادہ سے زیادہ تجارت میں رہیں۔ اگر آپ کا تجارتی انداز اسکیلپنگ اور / یا پل بیک پر زیادہ مرکوز ہے تو ، یہ حکمت عملی آپ کے لئے نہیں ہے۔

یہ حکمت عملی رجحان کی سمت کی پیشن گوئی کے لئے فوریئر لہروں پر لاگو چلتی اوسط کا استعمال کرتی ہے۔

حکمت عملی کیسے کام کرتی ہے:

  • خریدیں جب تیز رفتار ایم اے وسط ایم اے سے اوپر ہے اور قیمت سست ایم اے سے اوپر ہے ، جو رجحان اشارے کے طور پر کام کرتی ہے۔
  • فروخت کریں جب تیز رفتار ایم اے وسط ایم اے سے نیچے ہے اور قیمت سست ایم اے سے نیچے ہے ، جو رجحان اشارے کے طور پر کام کرتی ہے۔

حکمت عملی بہت سے پرامڈ آرڈرز کا استعمال کرتی ہے کیونکہ جب آپ فلیٹ مارکیٹ کے مرحلے میں ہوتے ہیں تو یہ نقصان کے ساتھ 1 یا 2 آرڈرز بند کردے گا ، لیکن جب ایک بڑا رجحان شروع ہوتا ہے تو ، اس میں بہت سارے آرڈرز میں منافع ہوگا۔ لہذا ، اگر آپ حکمت عملی کے نتائج کا محتاط تجزیہ کرتے ہیں تو ، آپ کو معلوم ہوگا کہ فیصد منافع بخش بہت کم ہے (30٪ اس معاملے میں) کیونکہ حکمت عملی نے چھوٹے نقصانات کے ساتھ فلیٹ مارکیٹوں میں بھی بہت سارے آرڈر کھولے ، لیکن اوسط # بار جیتنے والی تجارت میں بہت زیادہ ہے اور مجموعی طور پر منافع بہت زیادہ ہے: جب ایک بڑا رجحان شروع ہوتا ہے تو ، آرڈرز کو طویل عرصے تک کھلا رکھا جاتا ہے جس سے بڑے منافع حاصل ہوتے ہیں۔

ان کے ٹکڑوں کے لئے کوڈ میں ذکر تمام pinescripters کا شکریہ.

میرے پاس انتباہات کے ساتھ ایک مطالعہ بھی ہے۔ اگلی بہتری (صرف اس اسکرپٹ میں دلچسپی رکھنے والے اور میرے پیچھے آنے والے افراد کے لئے): ایک ہی وقت میں متعدد ٹکروں پر انتباہات کے ساتھ مطالعہ کریں۔ اگر آپ مطالعہ تک رسائی حاصل کرنا چاہتے ہیں تو ایک تبصرہ چھوڑ دیں۔

حکمت عملی کا استعمال کیسے کریں اور آج ایک ساتھ مطالعہ کریں: 1- پہلے حکمت عملی کو چارٹ میں شامل کریں، تاکہ آپ کا کام کی جگہ زیادہ سے زیادہ صاف ہو جائے. 2- صفحے کے نیچے اسٹریٹیجی ٹیسٹر ٹیب کھولیں۔ 3- بہترین نتائج حاصل کرنے کے لئے ترتیبات کو تبدیل کریں (منافع، منافع فیکٹر، ڈراؤنڈ). 4- حکمت عملی کی ایک ہی ترتیب کے ساتھ اپنے چارٹ میں انتباہات کے ساتھ مطالعہ شامل کریں. میں اسٹوڈیو کے ساتھ ایک تفصیلی فوری تنصیب گائیڈ فراہم کرے گا!

بیک ٹسٹ

img


/*backtest
start: 2022-04-25 00:00:00
end: 2022-05-24 23:59:00
period: 10m
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, precision=6, initial_capital=10000,calc_on_every_tick=true, pyramiding=10, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)
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)

متعلقہ

مزید