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

متعدد ٹائم فریم متحرک سٹاپ نقصان ای ایم اے-سکیز ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-12-11 15:50:38
ٹیگز:ای ایم اےSQMسی ایم ایفKCSLٹی پیایم ٹی ایف

img

جائزہ

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

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

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

حکمت عملی کے فوائد

  1. کثیر جہتی سگنل کی تصدیق: متعدد تکنیکی اشارے اور ٹائم فریم کے انضمام کے ذریعے جھوٹے سگنل کو نمایاں طور پر کم کرتا ہے۔
  2. ذہین رسک مینجمنٹ: متحرک سٹاپ نقصان کا نظام مارکیٹ کی اتار چڑھاؤ کی بنیاد پر خود بخود ایڈجسٹ ہوتا ہے، جو قبل از وقت باہر نکلنے سے بچتے ہوئے منافع کی حفاظت کرتا ہے۔
  3. اعلی موافقت: حکمت عملی کے پیرامیٹرز کو مختلف مارکیٹ کے حالات کے مطابق ایڈجسٹ کیا جاسکتا ہے۔
  4. مکمل ٹریڈنگ سائیکل: داخلہ سے باہر نکلنے کے انتظام سے واضح قوانین ذہنی فیصلے کے اثر کو کم کرتے ہیں.
  5. منی فلو کی تصدیق: منی فلو مانیٹرنگ کے ذریعے قیمتوں کے رجحانات کی توثیق کرتا ہے ، جس سے تجارت کی وشوسنییتا میں اضافہ ہوتا ہے۔

حکمت عملی کے خطرات

  1. پیرامیٹر حساسیت: متعدد تکنیکی اشارے پیرامیٹرز کو محتاط اصلاح کی ضرورت ہے۔
  2. مارکیٹ کے ماحول پر انحصار: سگنل کی کوالٹی انتہائی اتار چڑھاؤ یا کم لیکویڈیٹی والے بازاروں میں متاثر ہوسکتی ہے۔
  3. کمپیوٹیشنل پیچیدگی: کثیر ٹائم فریم حسابات سگنل تاخیر کا سبب بن سکتے ہیں.
  4. اسٹاپ نقصان ایڈجسٹمنٹ کا خطرہ: متحرک اسٹاپ کچھ مارکیٹ کے حالات میں بہت زیادہ جارحانہ یا محتاط ہوسکتے ہیں۔
  5. سرمائے کے انتظام کی ضروریات: حکمت عملی کو خطرہ اور منافع کو متوازن کرنے کے لئے مناسب فنڈ مینجمنٹ کی ضرورت ہے۔

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

  1. اتار چڑھاؤ کی موافقت متعارف کرانا: اے ٹی آر یا اتار چڑھاؤ کے دیگر اشارے کی بنیاد پر پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں۔
  2. سگنل فلٹرنگ کو بہتر بنائیں: سگنل کے معیار کو بہتر بنانے کے لئے حجم وزن یا وقت فلٹرنگ شامل کریں.
  3. سٹاپ نقصان کے طریقہ کار کو بہتر بنائیں: سپورٹ اور مزاحمت کی سطحوں کا استعمال کرتے ہوئے سٹاپ نقصان کی جگہ کو بہتر بنائیں۔
  4. مارکیٹ کے ماحول کا بہتر تجزیہ: مختلف مارکیٹ کے حالات کے لئے رجحان کی طاقت کے اشارے متعارف کروائیں۔
  5. بہتر سرمائے کا انتظام: سگنل کی طاقت اور مارکیٹ کی اتار چڑھاؤ پر مبنی پوزیشن سائزنگ الگورتھم کو نافذ کریں۔

خلاصہ

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


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("LL Crypto - SUI", overlay=true)

// Parâmetros de tempo para criptomoedas
fast_ema_len = input.int(11, minval=5, title="Fast EMA")
slow_ema_len = input.int(34, minval=20, title="Slow EMA")
sqm_lengthKC = input.int(20, title="SQM KC Length")
kauf_period = input.int(20, title="Kauf Period")
kauf_mult = input.float(2, title="Kauf Mult factor")
min_profit_sl = input.float(5, minval=0.01, maxval=100.0, title="Min profit to start moving SL [%]")
longest_sl = input.float(10, minval=0.01, maxval=100.0, title="Maximum possible of SL [%]")
sl_step = input.float(0.5, minval=0.0, maxval=1.0, title="Take profit factor")

// Parâmetros adaptados para criptomoedas
CMF_length = input.int(11, minval=1, title="CMF length")
show_plots = input.bool(true, title="Show plots")

// Definir intervalos de tempo para criptomoedas
selected_timeframe = input.string(defval="15", title="Intervalo de Tempo", options=["1", "15", "60"])

lower_resolution = timeframe.period == '1' ? '1' :
                   timeframe.period == '5' ? '15' :
                   timeframe.period == '15' ? '60' :
                   timeframe.period == '60' ? '240' :
                   timeframe.period == '240' ? 'D' :
                   timeframe.period == 'D' ? 'W' : 'M'

sp_close = close[barstate.isrealtime ? 1 : 0]
sp_high = high[barstate.isrealtime ? 1 : 0]
sp_low = low[barstate.isrealtime ? 1 : 0]
sp_volume = volume[barstate.isrealtime ? 1 : 0]

// Calcular Squeeze Momentum ajustado para criptomoedas
sqm_val = ta.linreg(sp_close - math.avg(math.avg(ta.highest(sp_high, sqm_lengthKC), ta.lowest(sp_low, sqm_lengthKC)), ta.sma(sp_close, sqm_lengthKC)), sqm_lengthKC, 0)
close_low = request.security(syminfo.tickerid, lower_resolution, sp_close, lookahead=barmerge.lookahead_on)
high_low = request.security(syminfo.tickerid, lower_resolution, sp_high, lookahead=barmerge.lookahead_on)
low_low = request.security(syminfo.tickerid, lower_resolution, sp_low, lookahead=barmerge.lookahead_on)
sqm_val_low = ta.linreg(close_low - math.avg(math.avg(ta.highest(high_low, sqm_lengthKC), ta.lowest(low_low, sqm_lengthKC)), ta.sma(close_low, sqm_lengthKC)), sqm_lengthKC, 0)

// CMF adaptado para criptomoedas
ad = sp_close == sp_high and sp_close == sp_low or sp_high == sp_low ? 0 : ((2 * sp_close - sp_low - sp_high) / (sp_high - sp_low)) * sp_volume
money_flow = math.sum(ad, CMF_length) / math.sum(sp_volume, CMF_length)

// Condições de entrada para criptomoedas
low_condition_long = (sqm_val_low > sqm_val_low[1])
low_condition_short = (sqm_val_low < sqm_val_low[1])
money_flow_min = (money_flow[4] > money_flow[2]) and (money_flow[3] > money_flow[2]) and (money_flow[2] < money_flow[1]) and (money_flow[2] < money_flow)
money_flow_max = (money_flow[4] < money_flow[2]) and (money_flow[3] < money_flow[2]) and (money_flow[2] > money_flow[1]) and (money_flow[2] > money_flow)
condition_long = ((sqm_val > sqm_val[1])) and money_flow_min and ta.lowest(sqm_val, 5) < 0
condition_short = ((sqm_val < sqm_val[1])) and money_flow_max and ta.highest(sqm_val, 5) > 0
enter_long = low_condition_long and condition_long
enter_short = low_condition_short and condition_short

// Stop conditions
var float current_target_price = na
var float current_sl_price = na
var float current_target_per = na
var float current_profit_per = na

set_targets(isLong, min_profit, current_target_per, current_profit_per) =>
    float target = na
    float sl = na
    if isLong
        target := sp_close * (1.0 + current_target_per)
        sl := sp_close * (1.0 - (longest_sl / 100.0))
    else
        target := sp_close * (1.0 - current_target_per)
        sl := sp_close * (1.0 + (longest_sl / 100.0))
    [target, sl]

target_reached(isLong, min_profit, current_target_per, current_profit_per) =>
    float target = na
    float sl = na
    float profit_per = na
    float target_per = na
    if current_profit_per == na
        profit_per := (min_profit * sl_step) / 100.0
    else
        profit_per := current_profit_per + ((min_profit * sl_step) / 100.0)
    target_per := current_target_per + (min_profit / 100.0)
    if isLong
        target := strategy.position_avg_price * (1.0 + target_per)
        sl := strategy.position_avg_price * (1.0 + profit_per)
    else
        target := strategy.position_avg_price * (1.0 - target_per)
        sl := strategy.position_avg_price * (1.0 - profit_per)
    [target, sl, profit_per, target_per]

hl_diff = ta.sma(sp_high - sp_low, kauf_period)
stop_condition_long = 0.0
new_stop_condition_long = sp_low - (hl_diff * kauf_mult)
if (strategy.position_size > 0)
    if (sp_close > current_target_price)
        [target, sl, profit_per, target_per] = target_reached(true, min_profit_sl, current_target_per, current_profit_per)
        current_target_price := target
        current_sl_price := sl
        current_profit_per := profit_per
        current_target_per := target_per
    stop_condition_long := math.max(stop_condition_long[1], current_sl_price)
else
    stop_condition_long := new_stop_condition_long

stop_condition_short = 99999999.9
new_stop_condition_short = sp_high + (hl_diff * kauf_mult)
if (strategy.position_size < 0)
    if (sp_close < current_target_price)
        [target, sl, profit_per, target_per] = target_reached(false, min_profit_sl, current_target_per, current_profit_per)
        current_target_price := target
        current_sl_price := sl
        current_profit_per := profit_per
        current_target_per := target_per
    stop_condition_short := math.min(stop_condition_short[1], current_sl_price)
else
    stop_condition_short := new_stop_condition_short

// Submit entry orders
if (enter_long and (strategy.position_size <= 0))
    if (strategy.position_size < 0)
        strategy.close(id="SHORT")
    current_target_per := (min_profit_sl / 100.0)
    current_profit_per := na
    [target, sl] = set_targets(true, min_profit_sl, current_target_per, current_profit_per)
    current_target_price := target
    current_sl_price := sl
    strategy.entry(id="LONG", direction=strategy.long)

    if show_plots
        label.new(bar_index, sp_high, text="LONG\nSL: " + str.tostring(stop_condition_long), style=label.style_label_down, color=color.green)





if (enter_short and (strategy.position_size >= 0))
    if (strategy.position_size > 0)
        strategy.close(id="LONG")
    current_target_per := (min_profit_sl / 100.0)
    current_profit_per := na
    [target, sl] = set_targets(false, min_profit_sl, current_target_per, current_profit_per)
    current_target_price := target
    current_sl_price := sl
    strategy.entry(id="SHORT", direction=strategy.short)
    if show_plots
        label.new(bar_index, sp_high, text="SHORT\nSL: " + str.tostring(stop_condition_short), style=label.style_label_down, color=color.red)

if (strategy.position_size > 0)
    strategy.exit(id="EXIT LONG", stop=stop_condition_long)

if (strategy.position_size < 0)
    strategy.exit(id="EXIT SHORT", stop=stop_condition_short)

// Plot anchor trend
plotshape(low_condition_long, style=shape.triangleup, location=location.abovebar, color=color.green)
plotshape(low_condition_short, style=shape.triangledown, location=location.abovebar, color=color.red)

plotshape(condition_long, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(condition_short, style=shape.triangledown, location=location.belowbar, color=color.red)

plotshape(enter_long, style=shape.triangleup, location=location.bottom, color=color.green)
plotshape(enter_short, style=shape.triangledown, location=location.bottom, color=color.red)

// Plot emas
plot(ta.ema(close, 20), color=color.blue, title="20 EMA")
plot(ta.ema(close, 50), color=color.orange, title="50 EMA")
plot(ta.sma(close, 200), color=color.red, title="MA 200")

// Plot stop loss values for confirmation
plot(series=(strategy.position_size > 0) and show_plots ? stop_condition_long : na, color=color.green, style=plot.style_linebr, title="Long Stop")
plot(series=(strategy.position_size < 0) and show_plots ? stop_condition_short : na, color=color.green, style=plot.style_linebr, title="Short Stop")
plot(series=(strategy.position_size < 0) and show_plots ? current_target_price : na, color=color.yellow, style=plot.style_linebr, title="Short TP")
plot(series=(strategy.position_size > 0) and show_plots ? current_target_price : na, color=color.yellow, style=plot.style_linebr, title="Long TP")


متعلقہ

مزید