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

چلتی اوسط کراس اوور حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-10 10:44:25
ٹیگز:

جائزہ

چلتی اوسط کراس اوور حکمت عملی چلتی اوسط پر مبنی ایک عام طور پر استعمال ہونے والی تجارتی حکمت عملی ہے۔ یہ تیز رفتار چلتی اوسط اور سست رفتار چلتی اوسط کے کراس اوور کو تجارتی سگنل کے طور پر استعمال کرتی ہے۔ جب تیز رفتار چلتی اوسط نیچے سے سست رفتار چلتی اوسط سے اوپر کی طرف بڑھتی ہے تو ، یہ خرید کا اشارہ ہے۔ جب تیز رفتار چلتی اوسط اوپر سے سست رفتار چلتی اوسط سے نیچے کی طرف بڑھتی ہے تو ، یہ فروخت کا اشارہ ہے۔ یہ حکمت عملی 50 دن کے ایم اے کو تیز رفتار ایم اے اور 200 دن کے ایم اے کو سست رفتار ایم اے کے طور پر استعمال کرتی ہے۔

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

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

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

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

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

اس حکمت عملی کے فوائد میں شامل ہیں:

  1. لاگو کرنا آسان ہے۔ یہ خالص طور پر ایم اے کراس پر مبنی تجارت کرتا ہے ، جو تجارت کے تجربے کے بغیر ابتدائی افراد کے لئے موزوں ہے۔

  2. خطرے کے انتظام کے ساتھ کنٹرول شدہ ڈراؤون۔ چلتی اوسط مختصر مدت کے اتار چڑھاؤ کو فلٹر کرسکتے ہیں اور روکنے سے بچ سکتے ہیں۔

  3. موافقت کے ل Custom اپنی مرضی کے مطابق پیرامیٹرز۔ صارفین پیرامیٹرز کو بہتر بناسکتے ہیں جیسے ایم اے ادوار اور ٹی پی / ایس ایل کی سطح۔

  4. واضح تصور۔ حکمت عملی چارٹ پر کلیدی ایم اے ، اندراجات ، اور ٹی پی / ایس ایل کی سطحوں کا خاکہ پیش کرتی ہے۔

  5. توسیع پذیر فریم ورک۔ حکمت عملی کا ڈھانچہ مکمل ہے۔ اسے بڑھانے کے لئے نئے سگنل اور اشارے شامل کیے جاسکتے ہیں۔

خطرے کا تجزیہ

اس حکمت عملی کے خطرات میں شامل ہیں:

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

  2. مختلف مارکیٹوں میں ہٹانے کے لئے موزوں، مسلسل نقصانات کا سبب بنتا ہے.

  3. تجارت کے اخراجات پر غور نہیں کیا جاتا ہے۔ فیس اور اصل تجارت میں سلائڈنگ منافع کو نمایاں طور پر متاثر کرے گی۔

  4. بیک ٹسٹ اوور فٹنگ۔ حقیقی مارکیٹ کے حالات پیچیدہ ہیں اور بیک ٹسٹ کے نتائج براہ راست کارکردگی کی نمائندگی نہیں کرسکتے ہیں۔

حل میں شامل ہیں:

  1. ایک وسیع سٹاپ نقصان کا استعمال کریں، یا ایک اضافی بریک آؤٹ سٹاپ نقصان شامل کریں.

  2. ایم اے فاصلے کو بڑھانا، تجارت کی تعدد کو کم کرنا، یا دیگر فلٹرز شامل کرنا.

  3. اصل تجارتی اخراجات پر غور کریں، وسیع تر منافع کا ہدف مقرر کریں.

  4. پیرامیٹرز کو آہستہ آہستہ بہتر بنائیں اور مارکیٹ کے بدلتے حالات کو مدنظر رکھتے ہوئے اوور فٹنگ کو کم کریں۔

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

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

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

  2. فلٹرز کے طور پر دیگر اشارے شامل کریں، جیسے MACD، KD وغیرہ.

  3. بہتر رسک مینجمنٹ کے لیے سٹاپ نقصان کی حکمت عملی کو بہتر بنائیں، جیسے ٹریلنگ سٹاپ نقصان۔

  4. خطرے کو کنٹرول کرتے ہوئے منافع بڑھانے کے لئے لیول کے ساتھ پوزیشن کا سائز بڑھانا۔

  5. ٹریڈنگ کے اخراجات پر غور کریں، براہ راست ٹریڈنگ کے لئے پیرامیٹرز کو بہتر بنائیں.

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

نتیجہ

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


/*backtest
start: 2023-10-02 00:00:00
end: 2023-10-09 00:00:00
period: 3m
basePeriod: 1m
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/
// © gjfsdrtytru

//@version=4
strategy("Backtest Engine", "Backtest", overlay=true, commission_type=strategy.commission.percent, commission_value=0.07, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)


// Start code here...
fastMA = sma(close,50)
slowMA = sma(close,200)

plot(fastMA, "Fast MA",  color.blue)
plot(slowMA, "Slow MA",  color.red)

// Long Enrty/Exit
longCondition = crossover(fastMA,slowMA)
closeLong = crossover(slowMA,fastMA)

// Short Enrty/Exit
shortCondition = crossover(slowMA,fastMA)
closeShort = crossover(fastMA,slowMA)


// Bot web-link alert - {{strategy.order.comment}}
botLONG = "ENTRY LONG ALERT"
botCLOSELONG = "CLOSE LONG ALERT"
botSHORT = "ENTRY SHORT ALERT"
botCLOSESHORT = "CLOSE SHORT ALERT"

//////////////////////////////////////////////////////////////////
//////////////////////// BACKTEST ENGINE \\\\\\\\\\\\\\\\\\\\\\\\\
/////////////////// [NO USER INPUT REQUIRED] /////////////////////
//////////////////////////////////////////////////////////////////

// Time period
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(5, "Backtest Start Month")
testStartDay = input(11, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

periodLength = input(3650, "Backtest Period (days)", minval=0,tooltip="Days until strategy ends") * 86400000 // convert days into UNIX time
testPeriodStop = testPeriodStart + periodLength

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

// Convert Take profit and Stop loss to percentage
longTP = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
longSL = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
shortTP = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options
shortSL = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0) * 0.01 // Set levels with input options

// 0% TP/SL = OFF (a value of 0 turns off TP/SL feature)
longProfitPerc = longTP == 0 ? 1000 : longTP
longStopPerc = longSL == 0 ? 1 : longSL
shortProfitPerc = shortTP == 0 ? 1 : shortTP
shortStopPerc = shortSL == 0 ? 1000 : shortSL

// Determine TP/SL price based on percentage given
longProfitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
longStopPrice  = strategy.position_avg_price * (1 - longStopPerc)
shortProfitPrice  = strategy.position_avg_price * (1 - shortProfitPerc)
shortStopPrice  = strategy.position_avg_price * (1 + shortStopPerc)

// Anti-overlap
isEntry_Long = false
isEntry_Long := nz(isEntry_Long[1], false)
isExit_Long = false
isExit_Long := nz(isExit_Long[1], false)
isEntry_Short = false
isEntry_Short := nz(isEntry_Short[1], false)
isExit_Short = false
isExit_Short := nz(isExit_Short[1], false)

entryLong = not isEntry_Long and longCondition
exitLong = not isExit_Long and closeLong
entryShort = not isEntry_Short and  shortCondition
exitShort = not isExit_Short and closeShort

if (entryLong)
    isEntry_Long := true
    isExit_Long := false
if (exitLong)
    isEntry_Long := false
    isExit_Long := true
if (entryShort)
    isEntry_Short := true
    isExit_Short := false
if (exitShort)
    isEntry_Short := false
    isExit_Short := true

// Order Execution
if testPeriod() 
    if entryLong
        strategy.entry(id="Long", long=true, when = entryLong, comment=botLONG) // {{strategy.order.comment}}
    if entryShort
        strategy.entry(id="Short", long=false, when = entryShort, comment=botSHORT) // {{strategy.order.comment}}


// TP/SL Execution
if (strategy.position_size > 0)
    strategy.exit(id="Long SL/TP", from_entry="Long", limit=longProfitPrice, stop=longStopPrice)
    strategy.close(id="Long", when=exitLong, comment=botCLOSELONG) // {{strategy.order.comment}}

if (strategy.position_size < 0)
    strategy.exit(id="Short TP/SL", from_entry="Short", limit=shortProfitPrice, stop=shortStopPrice)
    strategy.close(id="Short", when=exitShort, comment=botCLOSESHORT) // {{strategy.order.comment}}
    
// Draw Entry, TP and SL Levels for Long Positions
plot(strategy.position_size > 0 ? longTP == 0 ? na : longProfitPrice : na, style=plot.style_linebr, color=color.green, title="Long TP")
plot(strategy.position_size > 0 ? strategy.position_avg_price : na, style=plot.style_linebr, color=color.blue, title="Long Entry")
plot(strategy.position_size > 0 ? longSL == 0 ? na : longStopPrice : na, style=plot.style_linebr, color=color.red, title="Long SL")
// Draw Entry, TP and SL Levels for Short Positions
plot(strategy.position_size < 0 ? shortTP == 0 ? na : shortProfitPrice : na, style=plot.style_linebr, color=color.green, title="Short TP")
plot(strategy.position_size < 0 ? strategy.position_avg_price : na, style=plot.style_linebr, color=color.blue, title="Short Entry")
plot(strategy.position_size < 0 ? shortSL == 0 ? na : shortStopPrice : na, style=plot.style_linebr, color=color.red, title="Short SL")

مزید