ڈبل حرکت پذیر اوسط کراس اوور ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-13 15:40:49
ٹیگز:

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق یہ ہے:

  1. ان پٹ پیرامیٹرز: تیز تر ایم اے مدت maLen1، سستے ایم اے مدت maLen2، ایم اے قسم maTypeChoice

  2. ان پٹ پیرامیٹرز کی بنیاد پر تیز MA maValue1 اور سست MA maValue2 کا حساب لگائیں

  3. دو ایم اے کا موازنہ کرکے خرید و فروخت کے حالات کی وضاحت کریں:

    • خریدیں جب maValue1 maValue2 سے اوپر گزرتا ہے

    • فروخت کریں جب maValue1 maValue2 سے نیچے گزرتا ہے

  4. خرید و فروخت کے سگنلز پر تجارت انجام دیں

  5. ان کے تعلقات کی بنیاد پر مختلف رنگوں میں ایم اے کو تصور کریں

  6. خرید و فروخت کے انتباہی سگنل بھیجیں

فوائد

  • ڈبل MA کراس اوور سسٹم کا استعمال کرتا ہے، واحد MA سے غلط سگنل سے بچتا ہے

  • مختلف تجارتی افقوں کے مطابق اپنی مرضی کے مطابق ایم اے کی مدت

  • سادہ اور براہ راست منطق، سمجھنے اور لاگو کرنے کے لئے آسان

  • بروقت عملدرآمد کے لئے اپنی مرضی کے مطابق سگنل انتباہات

  • دکھایا گیا ایم اے رجحانات بدیہی ٹریڈنگ اشارے بناتے ہیں

  • بہترین مجموعہ تلاش کرنے کے لئے بہتر پیرامیٹرز

  • بیک ٹسٹنگ اور لائیو ٹریڈنگ کے لئے قابل اطلاق

خطرات

  • ایم اے کراس غلط سگنل پیدا کر سکتے ہیں، اضافی رجحان اور پیٹرن کی تصدیق کی ضرورت ہے

  • ایم اے کراس اوور کے ارد گرد وپساؤ غیر ضروری تجارتی اخراجات کا باعث بنتا ہے

  • غلط پیرامیٹرز سے زیادہ تجارت یا کم تجارت ہوتی ہے

  • انتہائی واقعات قیمتوں میں زبردست اتار چڑھاؤ کا سبب بنتے ہیں، نقصانات کو محدود کرنے کے قابل نہیں

  • طویل مدتی رجحان کی خرابی مختصر مدت کے اشارے کو غیر فعال کرتی ہے

  • کثرت سے نگرانی کی ضرورت ہوتی ہے، مکمل طور پر خودکار نہیں

خطرے کا انتظام:

  • رجحان کے خلاف تجارت سے بچنے کے لئے رجحان فلٹر شامل کریں

  • سگنل کی درستگی کی تصدیق کے لئے پیٹرن فلٹر شامل کریں

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

  • نقصانات کو محدود کرنے کے لئے اسٹاپ نقصان / منافع حاصل کریں

  • لمبے عرصے تک استحکام کا ٹیسٹ

  • جھوٹے بریک آؤٹ سے بچنے کے لئے قیمت اور وقت کے فلٹرز

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

  • زیادہ سے زیادہ تلاش کرنے کے لئے مختلف ایم اے پیرامیٹرز کی جانچ کریں

  • زیادہ سے زیادہ درست سگنل کے لئے مختلف ایم اے اقسام کی جانچ کریں

  • مخالف رجحان کی تجارت سے بچنے کے لئے رجحان فلٹر شامل کریں

  • مناسب باہر نکلنے کے پوائنٹس کی شناخت کے لئے اتار چڑھاؤ فلٹر شامل کریں

  • غلط سگنل کو کم کرنے کے لئے قیمت / وقت فلٹر شامل کریں

  • حقیقی تجارت کے لئے سلائڈ کنٹرول نافذ کریں

  • آلات اور ٹائم فریموں میں استحکام کا ٹیسٹ

  • آٹو اسٹاپ نقصان / منافع حاصل کرنے کو مربوط کریں

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

نتیجہ

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


/*backtest
start: 2023-10-05 00:00:00
end: 2023-10-05 22:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// © sehweijun
//study( title="Arch1tect's New Toy", shorttitle="Arch1tect's New Toy", overlay=true, resolution="")
// strategy( title="Arch1tect's New Toy (Strategy Tester Version)", shorttitle="Arch1tect's New Toy (Strategy Tester Version)", overlay=true, initial_capital = 100000, commission_value=0.07, commission_type=strategy.commission.cash_per_contract)

maTypeChoice = input( "EMA", title="MA Type", options=["EMA", "WMA", "SMA"] )
maSrc = input( close, title="MA Source" )
maLen1 = input( 15, minval=1, title="MA Length" )
maLen2 = input( 95, minval=1, title="MA Length" )

maValue1 = if ( maTypeChoice == "EMA" )
    ema( maSrc, maLen1 )
else if ( maTypeChoice == "WMA" )
    wma( maSrc, maLen1 )
else if ( maTypeChoice == "SMA" )
    sma( maSrc, maLen1 )
else
    0
    
maValue2 = if ( maTypeChoice == "EMA" )
    ema( maSrc, maLen2 )
else if ( maTypeChoice == "WMA" )
    wma( maSrc, maLen2 )
else if ( maTypeChoice == "SMA" )
    sma( maSrc, maLen2 )
else
    0

buySignal = crossover( maValue1, maValue2 )
sellSignal = crossunder( maValue1, maValue2 )

mainMAColour = ( maValue1 > maValue2 ) ? color.green : color.red 

plot( maValue1, title="Arch1tect's New Toy", color=mainMAColour, offset=0, linewidth=4 )
//plot( maValue2, title="Arch1tect's Filter", color=color.black, offset=0, linewidth=2 )

var color buyCandleColour = #00ff0a
var color sellCandleColour = #ff1100

barcolor( buySignal ? buyCandleColour : sellSignal ? sellCandleColour : na, title="Signal Bar Colour" )
bgcolor( color=buySignal ? buyCandleColour : sellSignal ? sellCandleColour : na, transp=85, title="Signal Background Colour")

alertcondition( buySignal or sellSignal, title="Signal change!", message="Signal change!")
alertcondition( buySignal, title="Buy signal!", message="Buy signal!")
alertcondition( sellSignal, title="Sell signal!", message="Sell signal!")

// Strategy Tester
stratTesterOn    = input( title="Strategy Tester [ON/OFF]", group="Strategy Tester", type=input.bool, defval=true)
entryTime        = input( "2200-1200", title = "Daily trading time session (in Exchange GMT)", group="Strategy Tester", type = input.session )
startTime        = input( "2200-2201", title = "Start Time", group="Strategy Tester", type = input.session )
maxDailyLoss     = input( 2500, title = "Max daily loss", group="Strategy Tester", type = input.integer )
maxTotalDrawdown = input( 12000, title = "Max daily loss", group="Strategy Tester", type = input.integer )
contractSize     = input( 1, title = "Contract size", group="Strategy Tester", type = input.integer )

tradeOnStartSess = input( title="First trade on session start [ON/OFF]", group="Strategy Tester", type=input.bool, defval=true)

fixedTPSL        = input( title="Fixed TP/SL PIPS [ON/OFF]", group="Strategy Tester", type=input.bool, defval=false)
fixedTPValue     = input ( 10.00, minval=0.01, type=input.float, title="TP", group="Strategy Tester" )
fixedSLValue     = input ( 10.00, minval=0.01, type=input.float, title="SL", group="Strategy Tester" )

fromDay          = input(defval = 1,    title = "From Day", group="Date Range", type = input.integer, minval = 1, maxval = 31)
fromMonth        = input(defval = 1,    title = "From Month", group="Date Range", type = input.integer, minval = 1, maxval = 12)
fromYear         = input(defval = 2020, title = "From Year", group="Date Range", type = input.integer, minval = 1970)
thruDay          = input(defval = 1,    title = "Thru Day", group="Date Range", type = input.integer, minval = 1, maxval = 31)
thruMonth        = input(defval = 1,    title = "Thru Month", group="Date Range", type = input.integer, minval = 1, maxval = 12)
thruYear         = input(defval = 2112, title = "Thru Year", group="Date Range", type = input.integer, minval = 1970)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

// strategy.risk.max_intraday_loss( maxDailyLoss, strategy.cash )
// strategy.risk.max_drawdown( maxTotalDrawdown, strategy.cash )

isTime(_position) =>
    range = time( timeframe.period, _position + ':1234567' )
bgcolor( color=isTime( entryTime ) and stratTesterOn and window() ? color.yellow : na, title="Daily trading time session (in Exchange GMT)", transp=75 )

if ( stratTesterOn and window() )
    if ( buySignal and isTime( entryTime ) )
        if ( not fixedTPSL )
            strategy.close_all()
            strategy.entry( "Buy", strategy.long, contractSize )
        
        if ( fixedTPSL and strategy.position_size == 0 )
            strategy.entry( "Buy", strategy.long, contractSize )
            strategy.exit( "TP/SL", "Buy", stop=close[0]-fixedSLValue, limit=close[0]+fixedTPValue )
        
    if ( sellSignal and isTime( entryTime ))
        if ( not fixedTPSL )
            strategy.close_all()
            strategy.entry( "Sell", strategy.short, contractSize )
        
        if ( fixedTPSL and strategy.position_size == 0  )
            strategy.entry( "Sell", strategy.short, contractSize )
            strategy.exit( "TP/SL", "Sell", stop=close[0]+fixedSLValue, limit=close[0]-fixedTPValue )
    
    if ( isTime( startTime ) and tradeOnStartSess and strategy.position_size == 0 )
        if ( maValue1 > maValue2 )
            strategy.entry( "Buy", strategy.long, contractSize )
            
            if ( fixedTPSL )
                strategy.exit( "TP/SL", "Buy", stop=close[0]-fixedSLValue, limit=close[0]+fixedTPValue )
        else
            strategy.entry( "Sell", strategy.short, contractSize ) 
            
            if ( fixedTPSL )
                strategy.exit( "TP/SL", "Sell", stop=close[0]+fixedSLValue, limit=close[0]-fixedTPValue )
    
    strategy.close_all( when=not isTime( entryTime ) )

plot( strategy.equity )

مزید