کراس جوڑی بولنگر بینڈ کراس اوور مقداری حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-27 14:28:21
ٹیگز:

img

جائزہ

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

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

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

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

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

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

اس حکمت عملی کے مندرجہ ذیل فوائد ہیں:

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

  2. بیچوں میں پوزیشن کھولنے کا نقطہ نظر اپناتا ہے ، جو ایک ہی تجارت کے خطرے کو کنٹرول کرسکتا ہے۔

  3. پوزیشنوں میں اضافہ مارٹنگیل اصول کے ذریعے منافع کی صلاحیت کو بڑھا سکتا ہے.

  4. نقصانات کو محدود کرنے کے لئے منافع حاصل کرنے کا نقطہ ترتیب دیں.

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

  1. MACD اشارے مارکیٹ کی نقل و حرکت کی مکمل پیش گوئی نہیں کر سکتے ہیں، غلط سگنل ہو سکتے ہیں.

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

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

  4. اکاؤنٹ کی حدود سے تجاوز کرنے سے بچنے کے لئے ہر پروڈکٹ کے لئے پوزیشن کھولنے کے لئے سرمایہ کی مناسب فیصد کو ترتیب دینے کی ضرورت ہے۔

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

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

  1. ٹیسٹ MACD پیرامیٹرز، پیرامیٹرز تلاش کریں جو مخصوص تجارتی مصنوعات کے لئے بہتر فٹ بیٹھیں.

  2. ہر پوزیشن کے لئے پیسے فی صد اور retracement فی صد کو بہتر بنائیں، بہترین پیرامیٹر مجموعے تلاش کریں.

  3. زیادہ سے زیادہ سطحوں کا تعین کرنے کے لئے بالترتیب طویل مدتی اور قلیل مدتی منافع لینے کے پوائنٹس کی جانچ کریں.

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

  5. سٹاپ نقصان کی منطق شامل کریں۔ اسٹاپ نقصان مؤثر طریقے سے نقصانات کو کنٹرول کرسکتا ہے جب مارکیٹ میں شدید تبدیلی واقع ہوتی ہے۔

خلاصہ

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


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
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/
// © TradingSoft_tech

//@version=5
strategy("MAPM-V1", overlay=true, default_qty_value=10, max_bars_back=5000,default_qty_type = strategy.percent_of_equity, commission_value=0.1, initial_capital = 100, pyramiding=6, currency=currency.USD)

///////// Options
SignalFast = input.int(300, step=10)
SignalSlow = input.int(600, step=10)
StepAddPurchases = input.float(2.5, step=0.1)
VolumePurchases = input.int(6,step=1)
Buy = input(true)
Sell = input(true)
longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.0, step=0.1, defval=1) * 0.01
shortProfitPerc = input.float(title="Short Take Profit (%)", minval=0.0, step=0.1, defval=1) * 0.01
Martingale = input.float(1.6, minval = 1, step = 0.1)
VolumeDepo = input.int(100, step=1)
PercentOfDepo = input.float(10, step=1)
Close = (close)
EnterVolume = VolumeDepo*PercentOfDepo*0.01/Close

///////// Calculation indicator
fastAverage = ta.ema(close, 8)
slowAverage = ta.ema(close, 49)
macd = fastAverage - slowAverage
macdSignalF = ta.ema(macd,SignalFast)
macdSignalS = ta.ema(macd,SignalSlow)

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

///////// Plot Data
//plot(macd, style = plot.style_histogram)
//plot(macdSignalF*10000, style = plot.style_line, color=color.red)
//plot(macdSignalS*10000, style = plot.style_line, color=color.blue)
//plot(fastAverage, style = plot.style_line, color=color.red)
//plot(slowAverage, style = plot.style_line, color=color.blue)

///////// Calculation of the updated value
var x = 0.0
if strategy.opentrades>strategy.opentrades[1]
    x := x + 1
else if strategy.opentrades==0
    x := 0
y = x+1

///////// Calculation of reference price data
entryPrice = strategy.opentrades==0? 0 : strategy.opentrades.entry_price(0)
limitLong = strategy.position_avg_price * (1 + longProfitPerc)
limitShort = strategy.position_avg_price * (1 - shortProfitPerc)
SteplimitLong = entryPrice[0]*(1-StepAddPurchases*y/100)
SteplimitShort = entryPrice[0]*(1+StepAddPurchases*y/100)

///////// Conditions for a long
bool EntryLong = ta.crossover(macdSignalF, macdSignalS) and Buy and strategy.opentrades==0 and strategy.position_size==0
bool PurchasesLong = Buy and strategy.opentrades==x and strategy.position_size>0 and x<=VolumePurchases
bool CancelPurchasesLong = strategy.position_size==0 and strategy.opentrades==0
bool TPLong = strategy.position_size>0 and strategy.opentrades!=0
///////// Entry Long + add.purchases + cancel purchases + Take profit Long
switch 
    EntryLong => strategy.entry("Entry Long", strategy.long, qty = EnterVolume)
    PurchasesLong => strategy.entry("PurchasesLong", strategy.long, qty = EnterVolume*math.pow(Martingale,y), limit = SteplimitLong)
    CancelPurchasesLong => strategy.cancel("PurchasesLong")
switch
    TPLong => strategy.exit("TPLong", qty_percent = 100, limit = limitLong)

///////// Conditions for a Short
bool EntryShort = ta.crossunder(macdSignalF, macdSignalS) and Sell and strategy.opentrades==0 and strategy.position_size==0
bool PurchasesShort = Sell and strategy.opentrades==x and strategy.position_size<0 and x<=VolumePurchases
bool CancelPurchasesShort = strategy.position_size==0 and strategy.opentrades==0
bool TPShort = strategy.position_size<0 and strategy.opentrades!=0

///////// Entry Short + add.purchases + cancel purchases + Take profit Short
switch
    EntryShort => strategy.entry("Entry Short", strategy.short, qty = EnterVolume)
    PurchasesShort => strategy.entry("PurchasesShort", strategy.short, qty = EnterVolume*math.pow(Martingale,y), limit = SteplimitShort)
    CancelPurchasesShort => strategy.cancel("PurchasesShort")
switch
    TPShort => strategy.exit("TPShort", qty_percent = 100, limit = limitShort)
    
/////////Calculation of conditions and reference data for level drawing
InTradeLong = strategy.position_size<0
InTradeShort = strategy.position_size>0
PickInLong = strategy.opentrades.entry_price(0)*(1-StepAddPurchases*y/100)
PickInShort = strategy.opentrades.entry_price(0)*(1+StepAddPurchases*y/100)

/////////Displaying the level of Take Profit
plot(InTradeLong ? na : limitLong, color=color.new(#00d146, 0), style=plot.style_linebr, linewidth=1)
plot(InTradeShort ? na : limitShort, color=color.new(#00d146, 0), style=plot.style_linebr, linewidth=1)

/////////Displaying the level of add.purchases
plot(InTradeLong ? na : PickInLong, color=color.white, style=plot.style_linebr, linewidth=1)
plot(InTradeShort ? na : PickInShort, color=color.white, style=plot.style_linebr, linewidth=1)

مزید