
یہ حکمت عملی متعدد تکنیکی اشارے کے ساتھ مل کر ایک مقداری تجارتی حکمت عملی ہے۔ یہ متعدد اشارے جیسے کہ چلتی اوسط ، MACD ، برلن بینڈ ، RSI وغیرہ کو ملا دیتا ہے تاکہ کثیر عنصر ماڈل سے چلنے والی خودکار تجارت کو ممکن بنایا جاسکے۔
اس حکمت عملی کے لئے ٹریڈنگ سگنل مندرجہ ذیل حصوں سے آتے ہیں:
جب مذکورہ بالا متعدد اشارے بیک وقت خرید و فروخت کے سگنل دیتے ہیں تو اس حکمت عملی میں خرید و فروخت کی پوزیشن کھولنے یا فروخت کرنے کی پوزیشن پر عملدرآمد ہوتا ہے۔
خاص طور پر ، جب ایک تیز رفتار حرکت پذیر اوسط پر ایک سست رفتار حرکت پذیر اوسط سے گزرتا ہے اور MACD ہسٹوگرام میں قطب نما اضافہ ہوتا ہے تو ، RSI اوور سیل زون سے اچھال جاتا ہے ، اور جب قیمت بلین کی نیچے کی طرف جاتی ہے تو ، اس کا خیال ہے کہ اس میں واپسی ہوئی ہے ، جس سے خریدنے کا اشارہ ملتا ہے۔
اور جب ایک تیز رفتار حرکت پذیر اوسط کے نیچے ایک سست رفتار حرکت پذیر اوسط سے گزرتا ہے تو ، MACD ہسٹوگرام میں ایک کالم لائن کم ہوجاتی ہے ، RSI اوور بائڈ زون سے نیچے جاتا ہے ، اور جب قیمت بلین بینڈ کے قریب ہوتی ہے تو ، یہ سمجھا جاتا ہے کہ اس کی چوٹی قریب ہے ، جس سے فروخت کا اشارہ ملتا ہے۔
اس طرح کے ایک سے زیادہ اشارے کے مجموعے کے ذریعہ سگنل جاری کیا جاتا ہے ، جعلی سگنل کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے ، اور حکمت عملی کی استحکام کو بہتر بنایا جاسکتا ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں ایک کثیر عنصر ماڈل کا استعمال کیا جاتا ہے جس سے سگنل کی وشوسنییتا میں اضافہ ہوتا ہے ، حکمت عملی کی استحکام اور منافع میں اضافہ ہوتا ہے۔
ایک کثیر عنصر ماڈل ایک دوسرے کے ساتھ تجارتی سگنل کی توثیق کرسکتا ہے ، جس سے جعلی سگنل کی مداخلت کو مؤثر طریقے سے کم کیا جاسکتا ہے۔
مختلف اقسام کے اشارے مارکیٹ کے حالات کی زیادہ جامع خصوصیات کو پکڑ سکتے ہیں اور زیادہ درست فیصلے کر سکتے ہیں۔
کثیر عنصر کا مجموعہ ایک ہی اشارے میں موجود اتار چڑھاؤ کی خصوصیات کو ہموار کرسکتا ہے ، جس سے منافع زیادہ مستحکم ہوتا ہے۔
پورٹ فولیو میں انڈیکیٹرز اور انڈیکیٹرز کے وزن کو مختلف مارکیٹوں کے لئے ذاتی نوعیت کی حکمت عملی کے مطابق لچکدار طریقے سے ایڈجسٹ کریں۔
اس حکمت عملی کے کچھ خطرات بھی ہیں جن کے بارے میں آگاہ ہونا ضروری ہے:
پیچیدہ کثیر اشارے کے مجموعے ، پیرامیٹرز کی ترتیب اور اشارے کے انتخاب کو درست حساب کتاب اور جانچ کی ضرورت ہوتی ہے ، ورنہ اس میں ناکامی کا اشارہ ہوتا ہے۔
ایک ہی قسم کے اثرات غیر مستحکم ہوسکتے ہیں ، جس میں ایک ہی قسم کے خطرے کو منتشر کرنے کے لئے مناسب قسم کے جوڑے کا انتخاب کرنے کی ضرورت ہے۔
انتہائی مارکیٹ کے حالات کے نتیجے میں ہونے والے نقصانات کو بڑھانے سے بچنے کے لئے پوزیشن کے سائز اور نقصان کی حکمت عملی کو سختی سے کنٹرول کرنے کی ضرورت ہے۔
اس حکمت عملی میں مندرجہ ذیل اصلاحات شامل ہیں:
زیادہ اشارے کے مجموعے کی جانچ کریں ، بہترین پیرامیٹرز کی تلاش کریں۔ جیسے اتار چڑھاؤ کی شرح ، تبادلوں کی مقدار وغیرہ۔
مشین سیکھنے کے طریقوں کا استعمال کرتے ہوئے خود کار طریقے سے بہترین حکمت عملی کے مجموعے اور پیرامیٹرز کی تشکیل پیدا کرنا۔
طویل مدتی پیمانے پر جانچ اور اصلاح کریں ، مارکیٹ کے مختلف مراحل کے لئے وزن کو ایڈجسٹ کریں۔
خطرہ مینجمنٹ ٹولز کے ساتھ مل کر ، انفرادی اسٹاپ نقصان اور مجموعی پوزیشن پر سخت کنٹرول۔
اس حکمت عملی میں متعدد تجارتی اشارے مل کر ملٹی فیکٹر ماڈل بناتے ہیں ، مختلف اشارے کی طاقت کو موثر طریقے سے استعمال کرتے ہیں ، سگنل کی فیصلہ سازی کی صلاحیت کو بڑھا دیتے ہیں۔ اس کے ساتھ ہی خطرے سے بچاؤ پر بھی توجہ دینے کی ضرورت ہے ، پیرامیٹرز کی اصلاح اور اپ ڈیٹ کے ذریعہ حکمت عملی کی استحکام اور منافع کو بہتر بنایا جاسکتا ہے۔
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Математическая Торговая Система с Ишимоку, TP/SL, ADX, RSI, OBV", shorttitle="МТС Ишимоку TP/SL ADX RSI OBV", overlay=true)
is_short_enable = input(0, title="Короткие сделки")
is_long_enable = input(1, title="Длинные сделки")
// Входные параметры для скользящих средних
fast_length = input(21, title="Быстрый период")
slow_length = input(26, title="Медленный период")
// Входные параметры для Ишимоку
tenkan_length = input(9, title="Тенкан-сен")
kijun_length = input(26, title="Киджун-сен")
senkou_length = input(52, title="Сенкоу-спан B")
// Входные параметры для ADX
adx_length = input(14, title="ADX период")
adx_level = input(30, title="ADX уровень")
// Входные параметры для RSI
rsi_length = input(14, title="RSI период")
rsi_overbought = input(70, title="RSI перекупленность")
rsi_oversold = input(30, title="RSI перепроданность")
// Входные параметры для OBV
obv_length = input(14, title="OBV период")
// Вычисление скользящих средних
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
// Вычисление Ишимоку
tenkan_sen = ta.sma(high + low, tenkan_length) / 2
kijun_sen = ta.sma(high + low, kijun_length) / 2
senkou_span_a = (tenkan_sen + kijun_sen) / 2
senkou_span_b = ta.sma(close, senkou_length)
// Вычисление ADX
[diplus, diminus, adx_value] = ta.dmi(14, adx_length)
// Вычисление RSI
rsi_value = ta.rsi(close, rsi_length)
// Вычисление OBV
f_obv() => ta.cum(math.sign(ta.change(close)) * volume)
f_obv_1() => ta.cum(math.sign(ta.change(close[1])) * volume[1])
f_obv_2() => ta.cum(math.sign(ta.change(close[2])) * volume[2])
f_obv_3() => ta.cum(math.sign(ta.change(close[3])) * volume[3])
obv_value = f_obv()
price_is_up = close[1] > close[3]
price_crossover_fast_ma = close > fast_ma
fast_ma_is_up = ta.sma(close[1], fast_length) > ta.sma(close[3], fast_length)
rsi_is_trand_up = ta.rsi(close[1], rsi_length) > ta.rsi(close[3], rsi_length)
rsi_is_upper_50 = rsi_value > 50
obv_is_trand_up = f_obv_1() > f_obv_3() and obv_value > ta.sma(obv_value, obv_length)
is_up = price_is_up and price_crossover_fast_ma and fast_ma_is_up and rsi_is_trand_up and rsi_is_upper_50 and obv_is_trand_up
fast_ma_is_down = close < fast_ma
rsi_is_trend_down = ta.rsi(close[1], rsi_length) < ta.rsi(close[2], rsi_length)
rsi_is_crossover_sma = rsi_value < ta.sma(rsi_value, rsi_length)
obv_is_trend_down = f_obv_1() < f_obv_2()
obv_is_crossover_sma = obv_value < ta.sma(obv_value, obv_length)
is_down = fast_ma_is_down and rsi_is_trend_down and rsi_is_crossover_sma and obv_is_trend_down and obv_is_crossover_sma
//----------//
// MOMENTUM //
//----------//
ema8 = ta.ema(close, 8)
ema13 = ta.ema(close, 13)
ema21 = ta.ema(close, 21)
ema34 = ta.ema(close, 34)
ema55 = ta.ema(close, 55)
longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55
shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55
// ---------- //
// OSCILLATORS //
// ----------- //
rsi = ta.rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70
shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30
// Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = ta.stoch(close, high, low, 14)
dSlow = ta.sma(kFast, smoothD)
longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95
shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5
// Логика входа и выхода
longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0
shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0
enter_long = (ta.crossover(close, senkou_span_a) or is_up) and longCondition
enter_short = (ta.crossunder(close, senkou_span_a) or is_down) and shortCondition
exit_long = ((ta.crossunder(fast_ma, slow_ma) or ta.crossunder(close, senkou_span_b) or enter_short) or exitLongCondition)
exit_short = ((ta.crossover(fast_ma, slow_ma) or ta.crossover(close, senkou_span_b) or enter_long) or exitShortCondition)
// Выполнение сделок
if is_long_enable == 1
strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long)
if is_short_enable == 1
strategy.entry("Short", strategy.short, when=enter_short)
strategy.close("Short", when=exit_short)