
متحرک رجعت چینل حکمت عملی ایک عددی تجارتی حکمت عملی ہے جو قیمت کے رجحانات کا تجزیہ کرنے کے لئے لکیری رجعت کا استعمال کرتی ہے اور رجحانات کی پیروی کرنے کے لئے متحرک رکاوٹوں کے ساتھ ملتی ہے۔ یہ حکمت عملی لکیری رجعت کا استعمال کرتی ہے تاکہ قیمتوں کے چینل کو نقشہ بنایا جاسکے ، قیمتوں کے چینل کو توڑنے کے سگنل کا تعین کیا جاسکے ، خریدنے اور فروخت کے احکامات جاری کیے جائیں۔
یہ حکمت عملی سب سے پہلے قیمت کے لکیری رجعت کی منحنی خطوط کا حساب لگاتی ہے تاکہ یہ معلوم کیا جاسکے کہ آیا قیمت نے اوپر کی طرف واپسی کا راستہ عبور کیا ہے یا نیچے کی طرف واپسی کا راستہ۔ جب قیمت اوپر کی طرف واپسی کا راستہ عبور کرتی ہے تو خریدنے کا اشارہ ہوتا ہے۔ جب قیمت نیچے کی طرف واپسی کا راستہ عبور کرتی ہے تو فروخت کا اشارہ ہوتا ہے۔
مارکیٹ میں داخل ہونے کے بعد ، حکمت عملی اصل وقت میں اس کی نگرانی کرے گی کہ آیا قیمت اسٹاپ نقصان کی اوسط لائن کو توڑ دیتی ہے۔ اگر زیادہ آرڈر دیا جائے تو ، قیمت اسٹاپ نقصان کی اوسط لائن سے نیچے آجائے تو ، اسٹاپ نقصان سے فروخت کرنے کا حکم جاری کیا جائے گا۔ اگر خالی آرڈر دیا جائے تو ، قیمت اسٹاپ نقصان کی اوسط لائن سے زیادہ ہو تو ، اسٹاپ نقصان سے خریدنے کا حکم جاری کیا جائے گا۔ اس طرح منافع کو لاک کیا جاسکتا ہے ، اور خطرہ پر قابو پایا جاسکتا ہے۔
نوٹ کرنا ضروری ہے کہ اگر قیمت دوبارہ چینل کو توڑ دیتی ہے تو ، حکمت عملی فوری طور پر پوزیشنوں کو ختم کردیتی ہے اور اس کی جگہ ریورس ٹریڈنگ کردی جاتی ہے۔
اس حکمت عملی میں رجحانات اور الٹ ٹریڈنگ کے خیالات کا امتزاج کیا گیا ہے ، جس سے قیمتوں کے مجموعی رجحانات کی تعمیل کی جاسکتی ہے ، جبکہ قلیل مدتی ایڈجسٹمنٹ کے مواقع کو بھی فائدہ اٹھایا جاسکتا ہے۔ اصل وقت میں اپ ڈیٹ شدہ اسٹاپ نقصان کی حکمت عملی بھی خطرے کو مؤثر طریقے سے کنٹرول کرسکتی ہے ، اور یہ ایک متوازن تجارت کا طریقہ ہے۔
متحرک واپسی چینل کی حکمت عملی قیمت کی تبدیلیوں کے لئے زیادہ حساس ہے ، اور اس سے غلط تجارت کو کم کیا جاسکتا ہے۔ اس کے علاوہ ، یہ حکمت عملی صرف اس وقت شروع کی جاتی ہے جب قیمت چینل کو توڑنے کے لئے ٹریک کرتی ہے ، اور اس سے بے ترتیب جارحانہ تجارت سے بچنے میں مدد ملتی ہے۔
اس حکمت عملی کو بنیادی طور پر واپسی کے منحنی خطوط کے غیر درست فٹ ہونے کے خطرات کا سامنا کرنا پڑتا ہے۔ اگر واپسی کے راستے کی حد غیر مناسب ، بہت وسیع ترتیب دی جاتی ہے تو ، اس سے غیر موثر تجارت کے امکانات میں اضافہ ہوتا ہے۔ بہت تنگ راستے سے ، تجارت کے مواقع ضائع ہوجاتے ہیں۔
اس کے علاوہ ، اسٹاپ پوزیشن کی ترتیب بھی اہم ہے۔ اسٹاپ بہت قریب ہے ، جو قلیل مدتی قیمتوں میں اتار چڑھاؤ کی وجہ سے متحرک ہوسکتا ہے۔ اور بہت زیادہ نرمی سے روکنے سے خطرے پر قابو پانے کا اثر نہیں پڑتا ہے۔ مختلف اقسام کے مطابق پیرامیٹرز کو ایڈجسٹ کرنے کی ضرورت ہے۔
واپسی کے راستے اور اسٹاپ نقصان کی لائن کو قیمت کے رجحان کے مطابق بنانے کے لئے مختلف ادوار یا اقسام کے مطابق خود کار طریقے سے اصلاحی پیرامیٹرز پر غور کیا جاسکتا ہے۔ مثال کے طور پر ، مشین لرننگ الگورتھم کے ساتھ مل کر بہترین پیرامیٹرز کی تربیت کی جاسکتی ہے۔
دوسری طرف ، واپسی کی مختلف اقسام ، جیسے کثیر الاضلاع واپسی ، مقامی وزن والی واپسی ، وغیرہ کو آزمائشی طور پر استعمال کیا جاسکتا ہے تاکہ فٹنس کو بہتر بنایا جاسکے۔ یا حکمت عملی کی استحکام کو بہتر بنانے کے لئے متعدد واپسی کے اشارے کے ساتھ مل کر تجارتی قواعد مرتب کریں۔
متحرک واپسی چینل کی حکمت عملی میں رجحان اور الٹ کے تجزیہ کا طریقہ کار استعمال کیا گیا ہے ، جس میں قیمتوں کی مجموعی حرکت کے مطابق ، مختصر مدت میں ایڈجسٹمنٹ کے مواقع سے فائدہ اٹھایا جاسکتا ہے۔ کلیدی واپسی چینل اور اسٹاپ نقصان کی پوزیشن کی ترتیب حکمت عملی کے اثر و رسوخ پر اہم اثر ڈالتی ہے۔ پیرامیٹرز کی اصلاح اور ماڈل تکرار کے ذریعہ ، اس تجارتی حکمت عملی کو مزید بہتر بنایا جاسکتا ہے۔
/*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")