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

مصنف:چاؤ ژانگ، تاریخ: 2023-09-13 17:13:36
ٹیگز:

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

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

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

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

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


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

مزید