مشین لرننگ پر مبنی اسٹوکاسٹک اصلاح کے ساتھ قیمت EMA

مصنف:چاؤ ژانگ، تاریخ: 2024-01-26 14:57:08
ٹیگز:

img

جائزہ

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

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

یہ حکمت عملی 12 دورانیے اور 26 دورانیے کی ہموار چلتی اوسط استعمال کرتی ہے۔ جب تیز لائن نیچے سے سست لائن کے اوپر سے گزرتی ہے تو ، طویل ہوجائیں۔ جب تیز لائن اوپر سے سست لائن کے نیچے سے گزرتی ہے تو ، مختصر ہوجائیں۔ جعلی سگنلز کو فلٹر کرنے کے ل it ، تیز اور سست لائنوں کو ایک ہی سمت میں ہونے کی ضرورت ہوتی ہے ، جس میں تیز لائن سست لائن کے اوپر لمبی ہے ، اور تیز لائن سست لائن کے نیچے مختصر ہے۔

اسٹوکاسٹک اشارے میں K لائن اور D لائن کا کراس اوور انٹری ٹائمنگ کے انتخاب کے لئے استعمال کیا جاتا ہے۔ جب K لائن اوور بُک لائن سے نیچے سے D لائن سے اوپر سے گزرتی ہے تو ، طویل ہوجائیں۔ جب K لائن اوور سیول لائن سے اوپر سے D لائن سے نیچے سے گزرتی ہے تو ، مختصر ہوجائیں۔

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

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

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

لہذا یہ حکمت عملی اس رجحان کو منتخب طور پر اختیار کرنے کے مواقع کو پکڑنے کے لئے، زیادہ منافع بخش حاصل کرنے کے لئے پیروی کرسکتا ہے.

خطرے کا تجزیہ

  • قلیل مدتی میں قبل از وقت باہر نکلنے کا اعلی خطرہ۔ جب تیز رفتار ایم اے آہستہ آہستہ ایم اے میں واپس آجاتا ہے تو سگنل کو مسترد یا پھنس سکتا ہے۔
  • چونکہ یہ رجحان کی پیروی کرتا ہے، یہ تیزی سے رجحان کی تبدیلی کے لۓ تیزی سے اپنانے کے قابل نہیں ہے، جس سے بڑے نقصان کا باعث بنتا ہے.

ان خطرات کو کم کرنے کے لئے، ہم سٹاپ نقصان مقرر کر سکتے ہیں، یا زیادہ اعتدال پسند MA پیرامیٹرز کو اپنانے.

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

اسٹریٹیجی کو مندرجہ ذیل پہلوؤں سے مزید بہتر بنایا جاسکتا ہے:

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

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

نتیجہ

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


/*backtest
start: 2024-01-18 00:00:00
end: 2024-01-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author SoftKill

strategy(title="Price EMA with stock", shorttitle="EMA STOCH", overlay=true)
src = input(title="Source", type=input.source, defval=close)

src_0 = src[0]
src_1 = src[1]
src_2 = src[2]
src_3 = src[3]
src_4 = src[4]

len50 = input(50, minval=1, title="Length")
src50 = input(close, title="Source")
out50 = ema(src50, len50)
len100 = input(100)
src100 = input(close, title="Source")
out100 = ema(src100, len100)

len1 = input(1, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)

length = input(5, minval=1)
OverBought = input(80)
OverSold = input(20)
smoothK = 3
smoothD = 3

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
cu = crossover(k,OverSold)
co = crossunder(k,OverBought)

sma_down = crossunder(out1, out50)
sma_up = crossover(out1,out50)

//if (not na(k) and not na(d))
  //  if (co and k < OverSold)
    //    strategy.entry("StochLE", strategy.long, comment="StochLE")
    //if (cu and k > OverBought)
     //   strategy.entry("StochSE", strategy.short, comment="StochSE")

crossCandle_4 = crossover(src[4],out50)
crossCandleUnder_4= cross(src[4],out50)
crossCandle_3 = crossover(src[3],out50)
crossCandleUnder_3= crossunder(src[3],out50)
crossCandle_2 = crossover(src[2],out50)
crossCandleUnder_2= crossunder(src[2],out50)
crossCandle_1 = crossover(src[1],out50)
crossCandleUnder_1= crossunder(src[1],out50)
crossCandle_0 = crossover(src[0],out50)
crossCandleUnder_0= crossunder(src[0],out50)

conditionOver = (crossCandle_4 or crossCandle_3 or crossCandle_2 or crossCandle_1 or crossCandle_0)
conditionUnder =(crossCandleUnder_4 or crossCandleUnder_3 or crossCandleUnder_2 or crossCandleUnder_1 or crossCandleUnder_0)

touch4 = (cross(low[4],out50) or cross(high[4],out50))
touch3 = (cross(low[3],out50) or cross(high[3],out50))
touch2 = (cross(low[2],out50) or cross(high[2],out50))
touch1 = (cross(low[1],out50) or cross(high[1],out50))

touch = touch1 or touch2 or touch3 or touch4

//and sma_up
//and sma_down

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src_macd = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src_macd, fast_length) : ema(src_macd, fast_length)
slow_ma = sma_source ? sma(src_macd, slow_length) : ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)


// plot((conditionOver or conditionUnder or touch)  and src[0] >= out50 and close >= out50 and  (cu) and out50 > out100 and hist>=0 , title="Buy", style=plot.style_columns, color=color.lime)
// plot((conditionOver or conditionUnder or touch)  and src[0] <= out50 and close <= out50 and  (co) and out50< out100 and hist<=0 , title="sell", style=plot.style_columns, color=color.red)


long_cond = ((conditionOver or conditionUnder or touch)  and src[0] >= out50 and close > out50 and  (cu) and out50 > out100 and hist>=0)
short_cond = ((conditionOver or conditionUnder or touch)  and src[0] <= out50 and close < out50 and  (co) and out50< out100 and hist<=0)

tp=input(0.1)
sl=input(0.1)

strategy.entry("long",strategy.long, when=long_cond)
strategy.entry("short",strategy.short, when=short_cond)

strategy.exit("X_long", "long", profit=close * tp / syminfo.mintick,  loss=close * sl / syminfo.mintick, when=touch  )
strategy.exit("x_short", "short",profit=close * tp / syminfo.mintick,loss=close * sl / syminfo.mintick,when = touch )

// //tp = input(0.0003, title="tp")
// tp = 0.0003
// //sl = input(1.0 , title="sl")
// sl = 1.0
// strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong")
// strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")

مزید