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

کثیر عنصر کی مقدار پر مبنی تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-31 13:55:37
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

اس حکمت عملی کے تجارتی سگنل مندرجہ ذیل حصوں سے آتے ہیں:

  1. دوہری چلتی اوسطوں کا سنہری صلیب اور موت کا صلیب
  2. ایم اے سی ڈی صفر لائن کراس اوورز
  3. بولنگر بینڈس اوپری اور نچلی ریل ریورس
  4. RSI زیادہ خریدنے اور زیادہ فروخت ہونے والی واپسی

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

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

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

متعدد اشارے سے آنے والے اشاروں کو ملا کر جعلی اشاروں کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے اور حکمت عملی کے استحکام کو بہتر بنایا جاسکتا ہے۔

فوائد کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ تجارت کے لئے ایک کثیر عنصر ماڈل اپناتا ہے ، جو سگنلز کی وشوسنییتا ، استحکام اور حکمت عملی کی منافع کو بڑھاتا ہے۔

  1. ملٹی فیکٹر ماڈل ٹریڈنگ سگنلز کو ایک دوسرے کے ساتھ تصدیق کرسکتا ہے اور جعلی سگنلز سے مداخلت کو مؤثر طریقے سے کم کرسکتا ہے۔

  2. مختلف زمروں کے اشارے مارکیٹ کی نقل و حرکت کی زیادہ جامع خصوصیات کو پکڑ سکتے ہیں اور زیادہ درست فیصلے کرسکتے ہیں۔

  3. متعدد اشارے کا امتزاج انفرادی اشارے کے اتار چڑھاؤ کو ہموار کرسکتا ہے اور زیادہ مستحکم منافع کو یقینی بناسکتا ہے۔

  4. انڈیکیٹرز اور ان کے وزن کو مختلف مارکیٹ کے حالات کے مطابق اپنی حکمت عملی کو لچکدار طریقے سے ایڈجسٹ کیا جاسکتا ہے۔

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات سے متعلق ہونا چاہئے:

  1. متعدد اشارے کا پیچیدہ مجموعہ عین مطابق پیرامیٹرز کو ایڈجسٹ کرنے اور جانچنے کی ضرورت ہے ، ورنہ یہ غلط سگنل پیدا کرسکتا ہے۔

  2. ایک ہی پروڈکٹ پر کارکردگی کافی مستحکم نہیں ہوسکتی ہے۔ خطرات کو متنوع کرنے کے لئے موزوں مصنوعات پر مشتمل ایک پورٹ فولیو بنانا چاہئے۔

  3. انتہائی مارکیٹ کے حالات میں نقصانات کو محدود کرنے کے لئے پوزیشن سائزنگ اور اسٹاپ نقصان کے طریقہ کار کو سختی سے کنٹرول کیا جانا چاہئے۔

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

کچھ سمتوں میں اس حکمت عملی کو بہتر بنایا جا سکتا ہے:

  1. زیادہ سے زیادہ اشارے کے مجموعے کا تجربہ کریں تاکہ زیادہ سے زیادہ پیرامیٹرز معلوم ہوسکیں ، جیسے ضمنی اتار چڑھاؤ ، حجم وغیرہ۔

  2. مشین لرننگ کے طریقوں کا استعمال کریں تاکہ خود بخود اشارے اور پیرامیٹر سیٹوں کے بہترین مجموعے تیار کیے جائیں۔

  3. طویل عرصے کے فریم پر زیادہ بیک ٹیسٹ اور اصلاح کریں، مختلف مارکیٹ کے مراحل کے مطابق وزن کو ایڈجسٹ کریں.

  4. واحد تجارتوں اور مجموعی پوزیشنوں پر نقصانات کو سختی سے کنٹرول کرنے کے لئے رسک مینجمنٹ کے اوزار شامل کریں۔

نتیجہ

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


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


مزید