ٹرپل ایکسپونینشل موونگ ایوریج اور لکیری ریگریشن پر مبنی حکمت عملی کا رجحان


تخلیق کی تاریخ: 2023-09-13 17:13:36 آخر میں ترمیم کریں: 2023-09-13 17:13:36
کاپی: 0 کلکس کی تعداد: 790
1
پر توجہ دیں
1617
پیروکار

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

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

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

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

خلاصہ یہ ہے کہ ، متعدد تکنیکی اشارے کے معقول انضمام کا اطلاق ، سخت خطرے کے انتظام کے اقدامات کے ساتھ ، اسٹریٹجک تجارت کی کارکردگی اور خطرے سے بچنے کی صلاحیت کو بڑھا سکتا ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-01-01 00:00:00
end: 2023-02-20 00:00:00
period: 1h
basePeriod: 15m
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/
// © Wunderbit Trading

//@version=4
strategy("Automated Bitcoin (BTC) Investment Strategy", overlay=true, initial_capital=5000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100,  commission_type=strategy.commission.percent,commission_value=0.1)

////////////  Functions

Atr(p) =>
    atr = 0.
    Tr = max(high - low, max(abs(high - close[1]), abs(low - close[1])))
    atr := nz(atr[1] + (Tr - atr[1])/p,Tr)

//TEMA
TEMA(series, length) =>
    if (length > 0)
        ema1 = ema(series, length)
        ema2 = ema(ema1, length)
        ema3 = ema(ema2, length)
        (3 * ema1) - (3 * ema2) + ema3
    else
        na
tradeType = input("LONG", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])

///////////////////////////////////////////////////
/// INDICATORS
source=close

/// TREND
trend_type1 = input("TEMA", title ="First Trend Line : ", options=["LSMA", "TEMA","EMA","SMA"])
trend_type2 = input("LSMA", title ="First Trend Line : ", options=["LSMA", "TEMA","EMA","SMA"])

trend_type1_length=input(25, "Length of the First Trend Line")
trend_type2_length=input(100, "Length of the Second Trend Line")

leadLine1 = if trend_type1=="LSMA"
    linreg(close, trend_type1_length, 0)
else if trend_type1=="TEMA"
    TEMA(close,trend_type1_length)
else if trend_type1 =="EMA"
    ema(close,trend_type1_length)
else
    sma(close,trend_type1_length)

leadLine2 = if trend_type2=="LSMA"
    linreg(close, trend_type2_length, 0)
else if trend_type2=="TEMA"
    TEMA(close,trend_type2_length)
else if trend_type2 =="EMA"
    ema(close,trend_type2_length)
else
    sma(close,trend_type2_length)

p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)
p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)
fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)

//Upward Trend
UT=crossover(leadLine1,leadLine2)
DT=crossunder(leadLine1,leadLine2)

// TP/ SL/  FOR LONG
// TAKE PROFIT AND STOP LOSS
long_tp1_inp = input(15, title='Long Take Profit 1 %', step=0.1)/100
long_tp1_qty = input(20, title="Long Take Profit 1 Qty", step=1)

long_tp2_inp = input(30, title='Long Take Profit 2%', step=0.1)/100
long_tp2_qty = input(20, title="Long Take Profit 2 Qty", step=1)

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)

long_sl_input = input(5, title='stop loss in %', step=0.1)/100
long_sl_input_level = strategy.position_avg_price * (1 - long_sl_input)

// Stop Loss
multiplier = input(3.5, "SL Mutiplier", minval=1, step=0.1)
ATR_period=input(8,"ATR period", minval=1, step=1)

// Strategy
//LONG STRATEGY CONDITION

SC = input(close, "Source", input.source)
SL1 = multiplier * Atr(ATR_period)  // Stop Loss
Trail1 = 0.0
Trail1 :=  iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1))
Trail1_high=highest(Trail1,50)

// iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1),

entry_long=crossover(leadLine1,leadLine2) and Trail1_high < close
exit_long = close < Trail1_high or crossover(leadLine2,leadLine1) or close < long_sl_input_level

///// BACKTEST PERIOD ///////
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

if testPeriod()
    if tradeType=="LONG" or tradeType=="BOTH"
        if strategy.position_size == 0 or strategy.position_size > 0
            strategy.entry("long", strategy.long, comment="BUY", when=entry_long)
            strategy.exit("TP1", "long", qty_percent=long_tp1_qty, limit=long_take_level_1)
            strategy.exit("TP2", "long", qty_percent=long_tp2_qty, limit=long_take_level_2)
            strategy.close("long", when=exit_long, comment="SL" )


// LONG POSITION

plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit")
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit")
plot(strategy.position_size > 0 ? Trail1_high : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")