موونگ ایوریج کراس اوور + MACD سلو لائن مومینٹم کی حکمت عملی

SMA EMA MACD
تخلیق کی تاریخ: 2024-04-12 17:16:06 آخر میں ترمیم کریں: 2024-04-12 17:16:06
کاپی: 0 کلکس کی تعداد: 790
1
پر توجہ دیں
1617
پیروکار

موونگ ایوریج کراس اوور + MACD سلو لائن مومینٹم کی حکمت عملی

جائزہ

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

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

  1. تیز رفتار اوسط لائن اور سست رفتار اوسط لائن 1 کی طرف سے کراس کیا جاتا ہے ، جبکہ بند ہونے والی قیمت سست رفتار اوسط لائن 2 کے اوپر ہوتی ہے ، MACD کالم گراف 0 سے بڑا ہوتا ہے۔
  2. تیز رفتار میڈین لائن اور سست رفتار میڈین لائن 1 کی طرف سے کراس نیچے ، جبکہ بند ہونے والی قیمت سست رفتار میڈین لائن 2 کے نیچے ہے ، MACD کالم گراف 0 سے کم ہے ، اور خالی ہے۔
  3. پوزیشن کھولنے کے لئے ایک ہی وقت میں کثیر سطح کا اسٹاپ اور اسٹاپ لسٹ ترتیب دیا جاتا ہے ، اسٹاپ لسٹ کو خطرہ کی ترجیحات کے مطابق ترتیب دیا جاتا ہے ، اور اسٹاپ لسٹ کو پوزیشن رکھنے کے وقت کے ساتھ مستقل طور پر ایڈجسٹ کیا جاتا ہے ، جس سے منافع کو آہستہ آہستہ لاک کیا جاتا ہے۔
  4. اوسط لائن کی مدت ، MACD پیرامیٹرز ، اور اسٹاپ نقصان کی سطح کو مختلف مارکیٹ کے حالات کے مطابق لچکدار طریقے سے ایڈجسٹ کیا جاسکتا ہے۔

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

اسٹریٹجک فوائد

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

اسٹریٹجک رسک

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

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

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-04-06 00:00:00
end: 2024-04-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © maxmirus

//@version=5
strategy("My strategy_Cross_SMA(EMA)+Macd,slow3",overlay=true)
// ver 4
// Date Inputs
startDate     = input(timestamp('2019-01-01T00:00:00+0300'), ''                              , inline='time1',
  tooltip=' Время первого бара расчета стратегии. Первый ордер может быть выставлен на следующем баре после стартового.')
finishDate    = input(timestamp('2044-01-01T00:00:00+0300'), ''                              , inline='time2',
  tooltip=' Время после которого больше не будут размещаться ордера входа в позицию.')

// Calculate start/end date and time condition
time_cond = true

//SMA(EMA) Inputs

fast=input.int(12, title="Fastlength",group="MA")
slow1=input.int(54,title="Slowlength1",group="MA")
slow2=input.int(100, title="Slowlength2",group="MA")
slow3=input.int(365, title="Slowlength3",group="MA")

fastma=input.string(title="Fastlength", defval="EMA",options=["SMA","EMA"],group="MA")
slowma1=input.string(title="Slowlength1", defval="EMA",options=["SMA","EMA"],group="MA")
slowma2=input.string(title="Slowlength2", defval="EMA",options=["SMA","EMA"],group="MA")
slowma3=input.string(title="Slowlength3", defval="EMA",options=["SMA","EMA"],group="MA")

fastlength = fastma == "EMA" ? ta.ema(close, fast) : ta.sma(close, fast)
slowlength1 = slowma1 == "EMA" ? ta.ema(close, slow1) : ta.sma(close, slow1)
slowlength2 = slowma2 == "EMA" ? ta.ema(close, slow2) : ta.sma(close, slow2)
slowlength3 = slowma3 == "EMA" ? ta.ema(close, slow3) : ta.sma(close, slow3)

//Macd Inputs

macdfastline = input.int(12, title="FastMacd",group="MACD")
macdslowline = input.int(26,title="SlowMacd",group="MACD")
macdhistline = input.int(9,title="HistMacd",group="MACD")
src=input(defval=close,title="Source",group="MACD")
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"],group="MACD")
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"],group="MACD")


fast_ma = sma_source == "SMA" ? ta.sma(src, macdfastline) : ta.ema(src, macdfastline)
slow_ma = sma_source == "SMA" ? ta.sma(src, macdslowline) : ta.ema(src, macdslowline)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, macdhistline) : ta.ema(macd, macdhistline)
hist = macd - signal
//fastMACD = ta.ema(close, macdline) - ta.ema(close, signalline)
//signalMACD = ta.ema(MACD, histline)
//histMACD = MACD - aMACD

//EMA Plot

plot(fastlength,title="SMAfast",color=color.blue)
plot(slowlength1,title="SMAslow1",color=color.orange)
plot(slowlength2,title="SMAslow2",color=color.red)
plot(slowlength3,title="SMAslow3",color=color.black)

//Macd plot
//col_macd = input(#2962FF, "MACD Line  ", group="Color Settings", inline="MACD")
//col_signal = input(#FF6D00, "Signal Line  ", group="Color Settings", inline="Signal")
//col_grow_above = input(#26A69A, "Above   Grow", group="Histogram", inline="Above")
//col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
//col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
//col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")

//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)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)

//Take profit
tp1=input.float(5.1,title="Take Profit1_%",step=0.1)/100
tp2=input.float(10.1,title="Take Profit2_%",step=0.1)/100

//Stop loss
sl1=input.float(5.1,title="Stop loss1_%",step=0.1)/100
sl2=input.float(0.1,title="Stop loss2_%",step=0.1)/100
sl3=input.float(-5.5,title="Stop loss3_%", step=0.1)/100

//Qty closing position

Qty1 = input.float(0.5, title="QtyClosingPosition1",step=0.01)
Qty2 = input.float(0.25, title="QtyClosingPosition2",step=0.01)

//Take profit Long and Short

LongTake1=strategy.position_avg_price*(1+tp1)
LongTake2=strategy.position_avg_price*(1+tp2)

ShortTake1=strategy.position_avg_price*(1-tp1)
ShortTake2=strategy.position_avg_price*(1-tp2)

//Plot Levels Take 
plot(strategy.position_size > 0 ? LongTake1 : na,color=color.green,style=plot.style_linebr)
plot(strategy.position_size > 0 ? LongTake2 : na,color=color.green,style=plot.style_linebr)
plot(strategy.position_size < 0 ? ShortTake1 : na,color=color.green,style=plot.style_linebr)
plot(strategy.position_size < 0 ? ShortTake2 : na,color=color.green,style=plot.style_linebr)

//Stop loss long and short

LongStop1=strategy.position_avg_price*(1-sl1)
LongStop2=strategy.position_avg_price*(1-sl2)
LongStop3=strategy.position_avg_price*(1-sl3)
ShortStop1=strategy.position_avg_price*(1+sl1)
ShortStop2=strategy.position_avg_price*(1+sl2)
ShortStop3=strategy.position_avg_price*(1+sl3)
//Stop=strategy.position_avg_price


//Plot Levels Stop
plot(strategy.position_size > 0 ? LongStop1 : na,color=color.red,style=plot.style_linebr)
plot(strategy.position_size > 0 ? LongStop2 : na,color=color.red,style=plot.style_linebr)
plot(strategy.position_size > 0 ? LongStop3 : na,color=color.red,style=plot.style_linebr)
plot(strategy.position_size < 0 ? ShortStop1 : na,color=color.red,style=plot.style_linebr)
plot(strategy.position_size < 0 ? ShortStop2 : na,color=color.red,style=plot.style_linebr)
plot(strategy.position_size < 0 ? ShortStop3 : na,color=color.red,style=plot.style_linebr)


//Entry condition

LongCondition1 = ta.crossover(fastlength, slowlength1)
LongCondition2 = close>slowlength2
LongCondition3 = time_cond
LongCondition4=close>slowlength3
//LongCondition5=slowlength100>slowlength3
LongCondition6 = hist > 0
buy=(LongCondition1 and LongCondition2 and LongCondition3 and LongCondition4 and LongCondition6 ) and strategy.position_size<=0
//longCondition3 = nz(strategy.position_size) == 0//если отсутствует открытая позиция


ShortCondition1 = ta.crossunder(fastlength, slowlength1)
ShortCondition2 = close<slowlength2
ShortCondition3 = time_cond
ShortCondition4=close<slowlength3
//ShortCondition5=slowlength100<slowlength3
ShortCondition6=hist < 0
sell=(ShortCondition1 and ShortCondition2 and ShortCondition3 and ShortCondition4 and ShortCondition6 ) and strategy.position_size>=0



//Strategy entry

strategy.cancel_all(not strategy.position_size)

if(buy)
    strategy.cancel_all()
    strategy.entry("Buy",strategy.long)
if(sell)
    strategy.cancel_all()
    strategy.entry("Sell",strategy.short)
    
//Strategy Long exit    

var int exitCounter=0

exitCounter := not strategy.position_size or strategy.position_size > 0 and strategy.position_size[1] < 0 or strategy.position_size < 0  and strategy.position_size[1] > 0 ? 0:
               strategy.position_size > 0 and strategy.position_size[1]>strategy.position_size?  exitCounter[1] + 1:
               strategy.position_size < 0 and strategy.position_size[1]<strategy.position_size?  exitCounter[1] - 1:
               exitCounter[1]
if strategy.position_size > 0 and strategy.position_size[1]<=0
    strategy.order("Take Long1",strategy.short, qty=math.abs(strategy.position_size*Qty1), limit=LongTake1, oca_name='Long1', oca_type=strategy.oca.cancel)
if strategy.position_size > 0  and strategy.position_size[1]<=0   
    strategy.order("Take Long2",strategy.short, qty=math.abs(strategy.position_size*Qty2), limit=LongTake2, oca_name='Long2', oca_type=strategy.oca.cancel)

    
if strategy.position_size > 0  and strategy.position_size[1]<=0   
    strategy.order("Stop Long1",strategy.short, qty=math.abs(strategy.position_size),stop=LongStop1,oca_name='Long1',oca_type=strategy.oca.cancel)
if ta.change(exitCounter) and exitCounter==1
    strategy.order("Stop Long2",strategy.short, qty=math.abs(strategy.position_size),stop=LongStop2,oca_name='Long2',oca_type=strategy.oca.cancel)
if ta.change(exitCounter) and exitCounter==2
    strategy.order("Stop Long3",strategy.short, qty=math.abs(strategy.position_size),stop=LongStop3)
    
    
    
    
//  Strategy Short exit  
    
    
if strategy.position_size < 0 and strategy.position_size[1]>=0
    strategy.order("Take Short1", strategy.long, qty=math.abs(strategy.position_size*Qty1), limit=ShortTake1, oca_name='Short1', oca_type=strategy.oca.cancel)
if strategy.position_size < 0 and strategy.position_size[1]>=0 
    strategy.order("Take Short2", strategy.long, qty=math.abs(strategy.position_size*Qty2), limit=ShortTake2, oca_name='Short2', oca_type=strategy.oca.cancel)


    
if strategy.position_size < 0 and strategy.position_size[1]>=0
    strategy.order("Stop Short1",strategy.long, qty=math.abs(strategy.position_size),stop=ShortStop1,oca_name='Short1',oca_type=strategy.oca.cancel)
if ta.change(exitCounter) and exitCounter==-1
    strategy.order("Stop Short2",strategy.long, qty=math.abs(strategy.position_size),stop=ShortStop2,oca_name='Short2',oca_type=strategy.oca.cancel)
if ta.change(exitCounter) and exitCounter==-2
    strategy.order("Stop Short3",strategy.long,qty=math.abs(strategy.position_size),stop=ShortStop3)