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

متعدد حرکت پذیر اوسط ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-29 14:32:29
ٹیگز:

img

جائزہ

اس حکمت عملی کا نام Multiple Moving Average Trading Strategy ہے۔ یہ رجحان کا تعین کرنے کے لئے ZLSMA اشارے کی مدد سے ، MACD اشارے اور متعدد چلتی اوسط کے کراس اوور کو تجارتی سگنل کے طور پر استعمال کرتا ہے ، اور خودکار تجارت کا احساس کرنے کے لئے منافع لینے اور اسٹاپ نقصان سے نکلنے کی منطق طے کرتا ہے۔

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

  1. MACD اشارے کی فاسٹ لائن ، سست لائن اور MACD ہسٹگرام کا حساب لگائیں۔ گولڈن کراس دیکھنے پر لمبا اور موت کراس دیکھنے پر مختصر سیٹ کریں۔

  2. 5 دن ، 25 دن ، 45 دن اور 100 دن کے چلتے ہوئے اوسط کا حساب لگائیں۔ چلتا ہوا اوسط جتنا لمبا ہوگا ، اس سے زیادہ مضبوط رجحان استحکام کی نمائندگی کرے گا۔

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

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

  5. MACD کراس اوور، حرکت پذیر اوسط انحراف سگنل اور ZLSMA رجحان فیصلے کو طویل اور مختصر ٹریڈنگ کی حکمت عملی قائم کرنے کے لئے یکجا کریں.

  6. خودکار باہر نکلنے منطق کو سمجھنے کے لئے منافع لینے اور سٹاپ نقصان کے پوائنٹس مقرر کریں.

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

  1. ملٹی فلٹر سگنل حکمت عملی کی کارکردگی کو بہتر بناتے ہیں۔ غلط بریک آؤٹ سے بچنے کے لئے ایم اے سی ڈی اور حرکت پذیر اوسط تغیر سگنل ایک دوسرے کی تصدیق کرسکتے ہیں۔

  2. ZLSMA وسط اور طویل مدتی رجحان کی سمت کا تعین کرنے میں مدد کرتا ہے تاکہ رجحان کے خلاف تجارت سے بچنے کے لئے.

  3. منافع لینے اور سٹاپ نقصان کے پوائنٹس مقرر کر کے خودکار طریقے سے باہر نکلنے سے انسانی مداخلت کی کثرت کم ہوتی ہے۔

خطرے کا تجزیہ

  1. پیرامیٹر کی غلط ترتیبات سے زیادہ تجارت یا غائب احکامات ہوسکتے ہیں۔ بہترین نتائج کے ل parameters پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔

  2. مقررہ منافع لینے اور اسٹاپ نقصان کے پوائنٹس منافع کی صلاحیت کو محدود کرتے ہیں یا نقصانات میں اضافہ کرتے ہیں۔ اے ٹی آر پر مبنی متحرک اسٹاپ پر غور کیا جاسکتا ہے۔

  3. چلتی اوسط حکمت عملیوں کو حد سے منسلک مارکیٹوں میں ناقص کام کرتا ہے۔ دوسرے اشارے یا دستی مداخلت کی ضرورت ہوسکتی ہے۔

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

  1. مختلف لمبائی کے چلتے ہوئے اوسطوں کا تجربہ کرکے چلتے ہوئے اوسط پیرامیٹرز کے مجموعوں کو بہتر بنائیں۔

  2. ٹیسٹ داخلہ اور باہر نکلنے کے مقامات کا تعین کرنے کے لئے دیگر اشارے جیسے KDJ اور BOLL کا اضافہ.

  3. اتار چڑھاؤ کی پیمائش پر مبنی متحرک سٹاپ نقصان کی حکمت عملی آزمائیں.

  4. خودکار طریقے سے بہترین پیرامیٹرز تلاش کرنے کے لیے مشین لرننگ ماڈل شامل کریں۔

نتیجہ

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


/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD ZLSMA_izumi⑤(4つの条件、MCDがクロスしてたら)", overlay=true)

fast_length = input(title = "Fast Length", defval = 12)
slow_length = input(title = "Slow Length", defval = 26)
src = input(title = "Source", defval = close)
signal_length = input.int(title = "Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title = "Oscillator MA Type",  defval = "EMA", options = ["SMA", "EMA"])
sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

alertcondition(hist[1] >= 0 and hist < 0, title = 'Rising to falling', message = 'The MACD histogram switched from a rising to falling state')
alertcondition(hist[1] <= 0 and hist > 0, title = 'Falling to rising', message = 'The MACD histogram switched from a falling to rising state')

hline(0, "Zero Line", color = color.new(#787B86, 50))
plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
plot(macd,   title = "MACD",   color = #2962FF)
plot(signal, title = "Signal", color = #FF6D00)

//MACDクロス設定
enterLong = ta.crossover(macd, signal)
enterShort = ta.crossunder(macd, signal)

//移動平均線の期間を設定
ema5 = input(5, title="ma期間5")
ema25 = input(25, title="ma期間25")
ema45 = input(45, title="ma期間45")
ema100 = input(100, title="ma期間100")

//移動平均線を計算
//sma関数で「ema25」バー分のcloseを移動平均線として「Kema」に設定
Kema5 = ta.sma(close,ema5)
Kema25 = ta.sma(close,ema25)
Kema45 = ta.sma(close,ema45)
Kema100 = ta.sma(close,ema100)



//移動平均線をプロット
plot(Kema5, color=color.rgb(82, 249, 255),title="ema5")
plot(Kema25, color=color.red,title="ema25")
plot(Kema45, color=color.blue,title="ema45")
plot(Kema100, color=color.green,title="ema100")

//ema同士の距離が30以上の時に「distancOK」にTureを返す
//distance1 = math.abs(Kema5-Kema25)
distance2 = math.abs(Kema25-Kema45)
distanceValue1 = input(0.030, title ="ema同士の乖離値") 
//distanceOk1 = distance1 > distanceValue1
distanceOk2 = distance2 > distanceValue1

//2区間のema同士の距離が30以上の時に「distanceOKK」にTrueを返す
//distanceOkK1 = distanceOk1 and distanceOk2
distanceOkK1 = distanceOk2

//5EMAとロウソクの乖離判定
//DistanceValue5ema = input(0.03, title ="5emaとロウソクの乖離率")
//emaDistance = math.abs(Kema5 - close)
//emaDistance5ema = emaDistance < DistanceValue5ema

//ZLSMA追加のコード
length = input.int(32, title="Length")
offset = input.int(0, title="offset")
src2 = input(close, title="Source")
lsma = ta.linreg(src2, length, offset)
lsma2 = ta.linreg(lsma, length, offset)
eq= lsma-lsma2
zlsma = lsma+eq
//ZLSMAのプロット
plot(zlsma, color=color.yellow, linewidth=3)

//ZLSMAの前回高値を検索
//var float zlsmaHigh = na
//var float zlsmaHighValue = na
//if ta.highest(zlsma,35) == zlsma[3]
//    zlsmaHighValue := zlsmaHigh
//    zlsmaHigh := zlsma[3]

//if (na(zlsmaHighValue))
 //   zlsmaHighValue := zlsmaHigh

//ZLSMAの前回安値を検索
//var float zlsmaLow = na
//var float zlsmaLowValue = na
//if ta.lowest(zlsma,35) == zlsma[3]
//    zlsmaLowValue := zlsmaLow
//    zlsmaLow := zlsma[3]

///if (na(zlsmaLowValue))
//    zlsmaLowValue := zlsmaLow

//利確・損切りポイントの初期化(変数の初期化)
var longProfit = 0.0
var longStop = 0.0
var shortProfit = 0.0
var shortStop = 0.0

//inputで設定画面の選択項目を設定
longProfitValue = input(0.06, title ="ロング利確pips")
shortProfitValue = input(-0.06, title ="ショート利確pips")
longStopValue = input(-0.06, title ="ロング損切pips")
shortStopValue = input(0.06, title ="ショート損切pips")

// クロスの強さを推定 
//angleThreshold = input(0.001, title = "クロスの強さ調節" )

// クロスの強さの閾値、この値を調整してクロスの強さの基準を変える 
//macdDiff = macdLine - signalLine 
//strongCross = math.abs(macdDiff) > angleThreshold 

// エントリー条件 (MACDラインとシグナルラインがクロス)
//ta.crossover(macdLine, signalLine) and strongCross 


//ロングエントリー条件
if  distanceOkK1 and enterLong
	strategy.entry("long", strategy.long, comment="long")
    longProfit := close + longProfitValue
    longStop := close + longStopValue

//    if na(strategy.position_avg_price) and close>strategy.position_avg_price + 0.05 * syminfo.mintick 
 //       longStop := strategy.position_avg_price + 10 * syminfo.mintick
  //  strategy.exit("exit", "long",stop = longStop)

strategy.exit("exit", "long", limit = longProfit,stop = longStop)


if  distanceOkK1 and enterShort
	strategy.entry("short", strategy.short, comment="short")
    shortProfit := close + shortProfitValue
    shortStop := close + shortStopValue

 //   if na(strategy.position_avg_price) and close>strategy.position_avg_price - 0.05 * syminfo.mintick 
  //      shortStop := strategy.position_avg_price - 0.1 * syminfo.mintick
  //  strategy.exit("exit", "long",stop = longStop)


strategy.exit("exit", "short", limit = shortProfit,stop = shortStop)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

مزید