ڈبل مساوی لائن کراس ٹریڈنگ اسٹریٹجی دو مختلف پیرامیٹرز کی ترتیبات کی مساوی لائنوں کا حساب کتاب کرکے اور مساوی لائنوں کے کراسنگ کے ذریعہ خرید و فروخت کا آپریشن کرتی ہے۔ یہ حکمت عملی آسان اور براہ راست ہے اور درمیانی اور قلیل مدتی تجارت کے لئے موزوں ہے۔
یہ حکمت عملی بنیادی طور پر تیز اوسط اور سست اوسط کے حساب سے ہے ، جس میں تیز اوسط کا دورانیہ ، سست اوسط کا دورانیہ ، اور اوسط کی قسم جیسے پیرامیٹرز کو ان پٹ کیا جاتا ہے۔ جب تیز اوسط پر سست اوسط لائن ہوتی ہے تو خریدنے کا عمل ہوتا ہے۔ جب تیز اوسط لائن کے نیچے سست اوسط لائن ہوتی ہے تو فروخت کا عمل ہوتا ہے۔
اس حکمت عملی کی بنیادی منطق یہ ہے:
ان پٹ پیرامیٹرز: فاسٹ میڈین لائن پیریڈ maLen1 ، سست میڈین لائن پیریڈ maLen2 ، میڈین لائن ٹائپ maTypeChoice
ان پٹ پیرامیٹرز کی بنیاد پر تیز رفتار میڈین maValue1 اور سست رفتار میڈین maValue2
خرید و فروخت کی شرائط کی وضاحت کرنے کے لئے دو مساوی لکیروں کا موازنہ کریں:
خریدنے کی شرائط: maValue1 پر maValue2 پہننا
فروخت کی شرائط: maValue1 کے تحت maValue2 پہننا
خرید و فروخت کی شرائط قائم ہونے پر متعلقہ لین دین کا عمل
اوسط لکیروں کے سائز کے مابین تعلقات کو ظاہر کرنے کے لئے اور مختلف رنگوں کے ذریعہ ان کو ظاہر کرنے کے لئے
خرید و فروخت کے اشارے بھیجیں
ایک واحد یکساں لہر کی طرف سے گمراہ ہونے سے بچنے کے لئے ڈبل یکساں کراسنگ اصول کا استعمال کریں
اوسط لکیری پیرامیٹرز سایڈست ، مختلف دورانیہ کے آپریشن کے مطابق
سادہ، براہ راست اور آسانی سے سمجھنے کے لئے ٹریڈنگ لاجسٹکس
اپنی مرضی کے مطابق خرید و فروخت کے اشارے ، حقیقی وقت میں تجارت کا وقت
ایک بصری ٹریڈنگ اشارے کے طور پر میڈین لائن ٹرینڈ کو دکھاتا ہے
پیرامیٹرز کی اصلاح کے ذریعے بہترین پیرامیٹرز کا مجموعہ تلاش کریں
بہترین پیرامیٹرز کو تلاش کرنے کے لئے ریٹرننگ کے لئے استعمال کیا جا سکتا ہے، اور یہ بھی اصل ڈسک ٹریڈنگ کے لئے استعمال کیا جا سکتا ہے
اوسط لائن کراسنگ غلط سگنل پیدا کرنے کے لئے آسان ہے، رجحان اور شکل کے ساتھ مل کر فیصلہ کیا جانا چاہئے
بی پی وی کے اتار چڑھاؤ کے دوران اکثر پوزیشن کھولنے سے ٹریڈنگ فیس میں کمی واقع ہوسکتی ہے
غلط پیرامیٹرز بہت زیادہ یا کم بار بار تجارت کا سبب بن سکتے ہیں
اچانک ہونے والے واقعات کے نتیجے میں ہنگامہ برپا ہو سکتا ہے
بڑے دورانیے کی خرابی کے دوران ، مختصر دورانیے کا اشارے غیر فعال ہوسکتا ہے
اس کے لیے بار بار نگرانی کی ضرورت ہے اور یہ مکمل طور پر خودکار نہیں ہو سکتا۔
خطرے سے نمٹنے کے طریقے:
ٹرینڈ انڈیکس کے ساتھ مل کر، ہلچل سے بچنے کے لئے ٹن ٹریڈنگ
شکل کے اشارے کے ساتھ ، سگنل کی تاثیر کی تصدیق کریں
پیرامیٹرز کو بہتر بنانے کے لئے تاکہ ٹرانزیکشن کی فریکوئنسی مناسب سطح تک پہنچ جائے
سٹاپ نقصان کی روک تھام کے نقطہ کو مقرر کریں اور ایک ہی نقصان کو کنٹرول کریں
پیرامیٹرز کی استحکام کو ایک سے زیادہ ٹائم پیریڈ میں تصدیق کریں
ٹائم یا سگنل فلٹرنگ کا استعمال کرکے جعلی توڑ پھوڑ سے بچیں
مختلف اوسط پیرامیٹرز کی جانچ اور بہترین پیرامیٹرز تلاش کریں
مختلف اوسط لائن کی اقسام کی جانچ کریں اور سگنل پیدا کرنے کے لئے سب سے زیادہ درست اوسط لائن منتخب کریں
ٹرینڈ اشارے کے ساتھ ٹرینڈ ٹریڈنگ سے بچیں
فاریکس ٹریڈنگ کے لئے بہترین وقت کا تعین کرنے کے لئے اتار چڑھاؤ کے اشارے کا استعمال کریں
غلط سگنل کو کم کرنے کے لئے وقت یا سگنل فلٹر شامل کریں
سلائڈ پوائنٹ کنٹرول کو ترتیب دیں اور فکسڈ ڈسک ٹریڈنگ کو بہتر بنائیں
کثیر نسل کثیر سائیکل استحکام کی تصدیق
خود کار طریقے سے سٹاپ نقصان کی حکمت عملی میں شمولیت
مشین لرننگ جیسے ٹکنالوجیوں کی تلاش
ڈبل مساوی کراسنگ حکمت عملی ایک بہت ہی عام تکنیکی اشارے کی حکمت عملی ہے۔ یہ تیز اور آہستہ مساوی کراسنگ اصول کا استعمال کرتے ہوئے ٹریڈنگ سگنل پیدا کرتی ہے ، جس سے پیرامیٹرز کی اصلاح کے ذریعہ اچھے نتائج حاصل کیے جاسکتے ہیں۔ لیکن اس حکمت عملی میں کچھ خطرہ بھی موجود ہے ، جس کی تصدیق کے لئے رجحانات ، شکلوں اور دیگر تکنیکی اشارے کے ساتھ کام کرنے کی ضرورت ہے ، تاکہ سگنل کی غلط شرح کو کم کیا جاسکے۔ اس کے علاوہ ، ٹریڈنگ کی تفصیلات پر غور کرنے کی ضرورت ہے جیسے سلائڈ کنٹرول۔
/*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 )