حرکت پذیر اوسط کراس اوور + ایم اے سی ڈی سست لائن مومنٹم حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-04-12 17:16:06
ٹیگز:ایس ایم اےای ایم اےایم اے سی ڈی

img

جائزہ

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

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

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

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

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

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

حکمت عملی کے خطرات

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

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

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

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

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

خلاصہ

یہ حکمت عملی ایک نسبتا 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)
    



متعلقہ

مزید