MACD اشارے پر مبنی تجارتی حکمت عملی کے بعد MACD رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-09-27 16:46:38
ٹیگز:

جائزہ

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

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

  1. MACD اشارے کا استعمال کرتے ہوئے اہم رجحان کی سمت کا اندازہ

    • تیز رفتار ای ایم اے، سست ای ایم اے اور ایم اے سی ڈی ہسٹوگرام کا حساب لگانا

    • رجحان کا تعین کرنے کے لئے مختلف سائیکلوں میں MACD کی نقل و حرکت کا موازنہ

  2. اسٹاک اشارے کا استعمال کرتے ہوئے مخصوص خرید و فروخت کے مقامات کی نشاندہی کرنا

    • %K لائن اور %D لائن کا حساب لگائیں

    • زیادہ خرید یا زیادہ فروخت زون کے قریب تغیر، اسٹاکس ٹریڈنگ سگنل کے طور پر واپس آنے کے ساتھ

  3. رجحان کی سمت اور اسٹاک سگنلز کی بنیاد پر خرید و فروخت کے فیصلے کرنا

    • جب بڑے سائیکل MACD بڑھتا ہے اور اسٹاک خریدنے کا اشارہ ظاہر ہوتا ہے تو طویل عرصے تک جائیں

    • جب بڑے سائیکل MACD گرتا ہے اور اسٹاک فروخت سگنل ظاہر ہوتا ہے تو مختصر ہوجائیں

  4. خطرہ مینجمنٹ کو بہتر بنانے کے لئے سٹاپ نقصان اور منافع حاصل کرنا

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

  • رجحان کی پیروی کرنے والے اور زیادہ خریدنے والے اشارے کو یکجا کرنے سے درمیانی اور طویل مدتی رجحانات کو مؤثر طریقے سے پکڑنے میں مدد ملتی ہے

  • MACD اہم سمت کا تعین کرتا ہے جبکہ اسٹاک تجارت کی تفصیلات پر کام کرتا ہے جو خطرات کو کم کرتا ہے

  • منظم حکمت عملی بنانے کے لئے اشارے کے مجموعوں کا مکمل استعمال

  • اسٹاپ نقصان اور منافع لینے کا تعین تجارت کے خطرات کو کنٹرول کرتا ہے

  • بہتر بنانے کے قابل پیرامیٹرز مختلف مارکیٹ کے حالات کے مطابق

خطرے کا تجزیہ

  • درمیانی اور طویل مدتی رجحان کا غلط اندازہ ٹریڈنگ کے نقصانات کا باعث بن سکتا ہے

  • اسٹاک سے غلط سگنل ناکافی منافع یا نقصان کا سبب بنتے ہیں

  • سٹاپ نقصان کا نقطہ ٹرینڈ تبدیلیوں کے بعد توڑ دیا جا سکتا ہے، نقصانات میں توسیع

  • غیر مناسب منافع کے ہدف کی سطح حکمت عملی کی کارکردگی کو متاثر کرتی ہے

  • غیر موثر پیرامیٹرز اور بدلتے ماحول کے مطابق ڈھالنے میں ناکامی حکمت عملی کو باطل کر سکتی ہے

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

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

  • رجحان کی تشخیص کی درستگی کو بہتر بنانے کے لئے MACD پیرامیٹر مکس کو بہتر بنائیں

  • غلط سگنل سے بچنے کے لئے کثیر سائیکل اسٹاک پر غور کریں

  • مارکیٹ کی اتار چڑھاؤ کو ایڈجسٹ کرنے کے لئے اسٹاپ نقصان اور منافع لینے کے تناسب کو متحرک طور پر ایڈجسٹ کریں

  • توثیق اور توثیق کو بہتر بنانے کے لئے دیگر اشارے سگنل شامل کریں

  • مختلف مصنوعات کی خصوصیات اور تجارتی سیشنوں کی بنیاد پر پیرامیٹرز کو بہتر بنائیں

  • رجحان کی سمت کے فیصلے میں مدد کے لئے مشین لرننگ ماڈل متعارف کروائیں

  • ناکافی پیچھا یا زیادہ پیروی سے بچنے کے لئے حجم اشارے شامل کریں

نتیجہ

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


/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// strategy(title="自用策略v0.2",calc_on_order_fills=false,calc_on_every_tick =false, initial_capital=10000,commission_type=strategy.commission.percent, commission_value=0.00,overlay = true,default_qty_type = strategy.cash, default_qty_value = 10000)



//STOCH
periodD = input(3, title="%D Smoothing", minval=1)
periodK = input(14, title="%K Length", minval=1)
periodK2 = input(42, title="%K2 Length", minval=1)
periodK3 = input(126, title="%K3 Length", minval=1)
periodK4 = input(378, title="%K4 Length", minval=1)
periodK5 = input(14, title="%K5 Length", minval=1)
periodK6 = input(30, title="%K6 Length", minval=1)
smoothK = input(1, title="%K Smoothing", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
k2 = sma(stoch(close, high, low, periodK2), smoothK*3)
k3 = sma(stoch(close, high, low, periodK3), smoothK*3*3)
k4 = sma(stoch(close, high, low, periodK4), smoothK*3*3*3)
d = sma(k, periodD)
all = (k+k2*3+k3*9+k4*18)/31
allp = sma(all, periodK6)



buffer = input(title="buffer", type=input.float, defval=0.3, minval = 0, step = 0.1)
b1 = close[1]* (1+buffer/100)
b2 = close[1]* (1-buffer/100)

//MACD
fast_length = input(title="Fast Length", defval=144)
slow_length = input(title="Slow Length", defval=312)

src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 200, defval = 108)
sma_source = input(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
MACDCHA = input(title="MACDCHA步长", defval=30)
MACDCHA2 = input(title="MACDCHA步长2", defval=20)
MACDCHA3 = input(title="MACDCHA步长3", defval=10)
MACDCHA4 = input(title="MACDCHA步长4", defval=5)
MACDCHA5 = input(title="MACDCHA步长5", defval=3)
MACDCHA6 = input(title="MACDCHA步长6", defval=1)
HISTCHA = input(title="hist步长", defval=50)
macdcha = hist - hist[MACDCHA]
macdcha2 = hist - hist[MACDCHA2]
macdcha3 = hist - hist[MACDCHA3]
macdcha4 = hist - hist[MACDCHA4]
macdcha5 = hist - hist[MACDCHA5]
macdcha6 = hist - hist[MACDCHA6]
histcha = hist[HISTCHA]
var true2 = 0
var true2_1 = 0
var true2_2 = 0
var true2_3 = 0
var true2_4 = 0//延伸
var fangxiang =0
//确认方向
if(macdcha>=0 and macdcha2>=0 and macdcha3>=0 and macdcha4>=0 and macdcha5>=0 and macdcha6>=0)
    fangxiang := 1
    true2_2 := 0
if(macdcha<=0 and macdcha2<=0 and macdcha3<=0 and macdcha4<=0 and macdcha5<=0 and macdcha6<=0)
    fangxiang :=-1
    true2_1 := 1
//k3min = min(k3,k3[1],k3[2],k3[3],k3[4],k3[5],k3[6],k3[7],k3[8],k3[9],k3[10],k3[11],k3[12],k3[13],k3[14],k3[15],k3[16],k3[17],k3[18],k3[19],k3[20],k3[21],k3[22],k3[23],k3[24],k3[25],k3[26],k3[27],k3[28],k3[29],k3[30],k3[31],k3[32],k3[33],k3[34],k3[35],k3[36],k3[37],k3[38],k3[39],k3[40],k3[41],k3[42],k3[43],k3[44],k3[45],k3[46],k3[47],k3[48],k3[49],k3[50])
//k3max = max(k3,k3[1],k3[2],k3[3],k3[4],k3[5],k3[6],k3[7],k3[8],k3[9],k3[10],k3[11],k3[12],k3[13],k3[14],k3[15],k3[16],k3[17],k3[18],k3[19],k3[20],k3[21],k3[22],k3[23],k3[24],k3[25],k3[26],k3[27],k3[28],k3[29],k3[30],k3[31],k3[32],k3[33],k3[34],k3[35],k3[36],k3[37],k3[38],k3[39],k3[40],k3[41],k3[42],k3[43],k3[44],k3[45],k3[46],k3[47],k3[48],k3[49],k3[50])
allpmax = max(allp[1],allp[2],allp[3],allp[4],allp[5],allp[6])
allpmin = min(allp[1],allp[2],allp[3],allp[4],allp[5],allp[6])
if(histcha < 0 and macdcha>=0 and macdcha2>=0 and macdcha3>=0 and macdcha4>=0 and macdcha5>=0 and macdcha6>=0 and d < 20 and volume > volume[1] and true2_1 == 1 and allp>allp[1] and allp <80)//and k3max < 80  //and k3min < 30 and k3 >20 and k2<50
    strategy.entry("开多", true, comment = "开多") // and close > close[1] and cci1> MEA1
    true2_1 :=0
if(d >80)
    strategy.close( "开多", comment = "平多")
    true2_1 :=1

stop_loss=input(4, "做多止损 %", minval = 1, step = 1)
sl = strategy.position_avg_price * (1-stop_loss/100)
close_Stop = close < sl
if(close_Stop or(allp<20 and allp[1]>20))
    strategy.close( "开多", comment = "做多止损")
    true2_1 :=1
Target_profit=input(10, "做多止盈 %", minval = 1, step = 1)
tp = strategy.position_avg_price * (1+Target_profit/100)
close_Target = close > tp
strategy.close("开多", when = close_Target, comment ="做多盈利")


//空
if(histcha > 0 and macdcha<=0 and macdcha2<=0 and macdcha3<=0 and macdcha4<=0 and macdcha5<=0 and macdcha6<=0 and d > 80 and volume > volume[1] and true2_2 == 1 and allp<allp[1] and allp >20) // and k3max>70 and k3<80
    //strategy.entry("开空", comment = "开空") 
    strategy.entry("开空", strategy.short,comment ="开空")
    true2_2 := 0
if( d <20)
   // strategy.close(  comment = "平空")
    strategy.close("开空",  comment = "平空")
    true2_2 := 1

stop_loss2=input(4, "做空止损 %", minval = 1, step = 1)
sl2 = strategy.position_avg_price * (1+stop_loss2/100)
close_Stop2 = close > sl2
if(close_Stop2 or(allp>80 and allp[1]<80))
    strategy.close( "开空", comment = "做空止损")
    true2_2 == 1
Target_profit2=input(10, "做空止盈 %", minval = 1, step = 1)
tp2 = strategy.position_avg_price * (1-Target_profit2/100)
close_Target2 = close < tp2
strategy.close("开空", when = close_Target2, comment ="做空盈利")





مزید