متحرک رجعت چینل کی حکمت عملی قیمت کے رجحانات کے لکیری رجعت تجزیہ کا استعمال کرتی ہے جس میں متحرک اسٹاپ نقصان کے ساتھ مل کر مقداری تجارت میں رجحان کی پیروی کو نافذ کیا جاتا ہے۔ یہ حکمت عملی قیمت چینل کو پلاٹ کرنے اور جب قیمتیں چینل سے باہر نکلتی ہیں تو خرید و فروخت کے سگنل پیدا کرنے کے لئے لکیری رجعت کا استعمال کرتی ہے۔ اسی وقت ، یہ حکمت عملی منافع میں مقفل کرنے کے لئے اسٹاپ نقصان کی سطح کو اپ ڈیٹ کرنے کے لئے ریئل ٹائم میں قیمتوں کا سراغ لگاتی ہے۔
حکمت عملی سب سے پہلے قیمتوں کے لکیری رجعت کے منحنی خطوط کا حساب لگاتی ہے تاکہ یہ معلوم کیا جاسکے کہ کیا قیمتیں رجعت کے چینل سے اوپر یا نیچے ٹوٹ جاتی ہیں۔ جب قیمتیں چینل کی اوپری ریل سے اوپر بڑھتی ہیں تو ، خرید کا اشارہ پیدا ہوتا ہے۔ جب قیمتیں نچلی ریل سے نیچے آجاتی ہیں تو ، فروخت کا اشارہ متحرک ہوجاتا ہے۔
پوزیشن میں داخل ہونے کے بعد ، حکمت عملی اس بات کا سراغ لگاتی رہتی ہے کہ آیا قیمتیں اسٹاپ نقصان کی حرکت پذیر اوسط لائن کو توڑتی ہیں۔ طویل احکامات کے ل if ، اگر قیمتیں اسٹاپ نقصان کی لائن سے نیچے آجاتی ہیں تو ، اسٹاپ نقصان فروخت آرڈر جاری کیا جائے گا۔ مختصر احکامات کے ل if ، اگر قیمتیں اسٹاپ نقصان کی لائن سے اوپر بڑھتی ہیں تو ، اسٹاپ نقصان خریدنے کا آرڈر متحرک ہوجائے گا۔ اس سے منافع میں تالا لگ جاتا ہے اور خطرات پر قابو پایا جاتا ہے۔
یہ نوٹ کرنا ضروری ہے کہ اگر قیمتیں ایک بار پھر چینل کو توڑ کر رخ موڑ دیتی ہیں تو ، حکمت عملی فوری طور پر اصل پوزیشن کو برابر کردے گی اور مخالف سمت میں تجارت پر جائیں گی۔
یہ حکمت عملی رجحان کی پیروی اور اوسط ریورس دونوں تصورات کو یکجا کرتی ہے ، مختصر مدت کے الٹ پھیروں کو پکڑتے ہوئے مجموعی قیمت کے رجحان کے ساتھ سوار ہوتی ہے۔ متحرک اسٹاپ نقصان بھی خطرات کو مؤثر طریقے سے کنٹرول کرتا ہے۔ اس طرح ، یہ متوازن تجارتی نقطہ نظر ہے۔
سادہ حرکت پذیر اوسط حکمت عملیوں کے مقابلے میں ، متحرک رجعت چینل کی حکمت عملی قیمت کی تبدیلیوں کے لئے زیادہ حساس ہے اور ماسٹرڈ کو کم کرسکتی ہے۔ اس کے علاوہ ، یہ حکمت عملی صرف چینل کے بریکآؤٹس پر تجارت کرتی ہے ، جس سے غیر محدود جارحانہ تجارت سے گریز ہوتا ہے۔
اہم خطرہ رجعت کے منحنی خطوط کی غلط فٹنس میں ہے۔ اگر چینل کی حد کو غلط طریقے سے ترتیب دیا جاتا ہے ، بہت وسیع یا بہت تنگ ہوتا ہے تو ، اس سے غلط تجارت میں اضافہ ہوگا یا تجارتی مواقع ضائع ہوجائیں گے۔
اس کے علاوہ ، اسٹاپ نقصان کی مناسب پوزیشننگ انتہائی ضروری ہے۔ مارکیٹ کی قیمتوں کے بہت قریب اسٹاپ نقصان مختصر مدت کی اتار چڑھاؤ کی وجہ سے قبل از وقت معاوضے کا شکار ہوتا ہے جبکہ اسٹاپ نقصان بہت دور خطرہ کنٹرول کے مقصد کی خدمت نہیں کرسکتا ہے۔ مختلف مصنوعات میں ٹھیک ٹیوننگ کی ضرورت ہے۔
مختلف ادوار یا مصنوعات کے لئے آٹو آپٹمائزنگ پیرامیٹرز پر غور کریں تاکہ رجسٹریشن چینل اور اسٹاپ نقصان لائن کو قیمت کے رجحانات کے مطابق بہتر بنایا جاسکے۔ مثال کے طور پر ، مشین لرننگ الگورتھم کو ممکنہ طور پر زیادہ سے زیادہ پیرامیٹرز کی تربیت کے لئے فائدہ اٹھایا جاسکتا ہے۔
متبادل طور پر ، مختلف اقسام کے رجعت جیسے کثیر الثانی رجعت اور مقامی طور پر وزن والے رجعت کو فٹنگ کو بہتر بنانے کے لئے آزمایا جاسکتا ہے۔ تجارتی قوانین کی تعمیر کے لئے متعدد رجعت میٹرکس کو جوڑنا حکمت عملی کے استحکام کو بھی بڑھا سکتا ہے۔
متحرک رجعت چینل کی حکمت عملی ہنر مند انداز میں رجحان کی پیروی کرنے اور اوسط ریورس تکنیک دونوں کا استعمال کرتی ہے ، مختصر مدت کے الٹ پھیروں کو پکڑتے ہوئے مجموعی قیمت کے رجحان پر سوار ہوتی ہے۔ کلیدی رجعت چینل اور اسٹاپ نقصان کے پیرامیٹرز کی مناسب ترتیب حکمت عملی کی کارکردگی کے لئے ضروری ہے۔ پیرامیٹر کی اصلاح اور ماڈل تکرار کے ذریعے مزید اصلاحات کی جاسکتی ہیں۔
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estratégia de Regressão Linear", shorttitle="Regressão Linear Estratégia", overlay=true, initial_capital = 100, default_qty_value = 10, default_qty_type = strategy.percent_of_equity) // média móvel exponencial para definição de regressao linear var SlopeEMASize = input.int(defval = 21, title = "Slope EMA" ) // ema_length = 21 slope_ema = ta.ema(close, SlopeEMASize) // média móvel exponencial para definição de nivel de stop var StopEMASize = input.int(defval = 13, title = "Stop EMA" ) stop_ema = ta.ema(close, StopEMASize) // Variáveis para controle de posição var float long_stop_level = na var float long_entry_level = na var bool long_signal = false var bool long_order_open = false var int long_order_id = 0 var float short_stop_level = na var float short_entry_level = na var bool short_signal = false var bool short_order_open = false var int short_order_id = 0 // Regressão linear para uso como sinal de entrada var SlopeLenght = input.int(defval = 21, title = "Slope Lenght" ) entry_signal = ta.linreg(slope_ema, SlopeLenght, 0) //Variaveis com a indicação do pivot da regressao long_entry_signal = ta.crossover(entry_signal, entry_signal[1]) short_entry_signal = ta.crossunder(entry_signal, entry_signal[1]) // Condição de entrada (reversão da regressão) if long_entry_signal long_signal := true short_signal := false long_entry_level := high long_stop_level := low if short_entry_signal short_signal := true long_signal := false short_entry_level := low short_stop_level := high // Indica quando o preço cruzou o nível de stop price_cross_stop_ema_up = ta.crossover(close, stop_ema) price_cross_stop_ema_down = ta.crossunder(close, stop_ema) // Mover o stop quando o preço cruzar a nível stop e operação long ativa if long_signal and long_order_open and price_cross_stop_ema_down if low > long_entry_level long_stop_level := high // Mover o stop quando o preço cruzar a nível stop e operação short ativa if short_signal and short_order_open and price_cross_stop_ema_up if high < short_stop_level short_stop_level := low // Sair da posição se houver nova reversão da regressão if long_order_open or short_order_open if long_entry_signal //and short_order_open strategy.close(str.tostring(short_order_id), comment ="Inversão Sinal("+str.tostring(short_order_id)+")") short_order_open:= false if short_entry_signal //and long_order_open strategy.close(str.tostring(long_order_id), comment = "Inversão Sinal("+str.tostring(long_order_id)+")") long_order_open:=false // Sinais de compra e venda com base no stop if long_signal and close > long_entry_level and not long_order_open if strategy.opentrades != 0 strategy.cancel_all() long_order_id+=1 // strategy.order(str.tostring(long_order_id), strategy.long, comment="Open Long("+str.tostring(long_order_id)+")", limit = long_entry_level) strategy.entry(str.tostring(long_order_id), strategy.long, comment="Open Long("+str.tostring(long_order_id)+")", limit = long_entry_level) long_order_open := true // log.info("Open Long:"+str.tostring(long_order_id)) if short_signal and close < short_entry_level and not short_order_open if strategy.opentrades != 0 strategy.cancel_all() short_order_id+=1 // strategy.order(str.tostring(short_order_id), strategy.short, comment="Open Short("+str.tostring(short_order_id)+")", limit = short_entry_level) strategy.entry(str.tostring(short_order_id), strategy.short, comment="Open Short("+str.tostring(short_order_id)+")", limit = short_entry_level) short_order_open := true // log.info("Open Short:"+str.tostring(short_order_id)) // Sinais de compra e venda com base no stop if long_signal and close < long_stop_level and long_order_open strategy.close(str.tostring(long_order_id), comment = "Stop Atingido("+str.tostring(long_order_id)+")", immediately = true) long_order_open := false if short_signal and close > short_stop_level and short_order_open strategy.close(str.tostring(short_order_id),comment = "Stop Atingido("+str.tostring(short_order_id)+")", immediately = true) short_order_open := false // Plotagem da regressão e do stop plot(stop_ema, title="Stop Signal", color=color.red) plot(entry_signal,"Entry Signal", linewidth = 5, color = color.rgb(155, 0, 140)) plotshape(long_order_open?long_stop_level:na, title = "Long Stop Level", color = color.green, location = location.absolute) plotshape(long_order_open?long_entry_level:na, title="Long Entry Value",location=location.absolute, color = color.green, style = shape.circle) plotshape(series=long_entry_signal, title="Long Signal", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small, text = "Long Signal") plotshape(short_order_open?short_stop_level:na, title = "Short Stop Level", color = color.red, location = location.absolute) plotshape(short_order_open?short_entry_level:na, title="Short Entry Value",location=location.absolute, color = color.red, style = shape.circle) plotshape(series=short_entry_signal, title="Short Signal", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small, text="Short Signal")