
یہ ایک مقداری تجارتی حکمت عملی ہے جس میں دو طرفہ توڑنے والی کارروائیوں کو منتقل کرنے والی اوسط اور MACD اشارے کا استعمال کیا جاتا ہے۔ اس میں ٹائم شیلڈ آپریشن کی خصوصیات ہیں ، یعنی طویل عرصے تک رجحان کی سمت کا تعین کرنے اور مختصر عرصے میں داخلے کے مواقع کی تلاش میں فائدہ اٹھانا۔
اس حکمت عملی میں 3 مختلف لمبائی کی مدت کے ایس ایم ایم اے اوسط اور ایک ای ایم اے اوسط کا استعمال کیا گیا ہے۔ اس کے ساتھ ساتھ ، یہ مختصر مدت کے رجحانات اور داخلے کے وقت کا تعین کرنے کے لئے میکڈ اشارے کے ساتھ مل کر کام کرتا ہے۔ خاص طور پر ، اس کی خریداری کی شرائط یہ ہیں: قیمت تمام اوسط لائنوں کو عبور کرتی ہے ، اور مختصر اوسط لمبی اوسط لائن کے اوپر ہوتا ہے جب اس کا محرک ہوتا ہے۔ اور فروخت کی شرائط اس کے برعکس ہیں ، قیمت تمام اوسط لائنوں کو عبور کرتی ہے ، اور مختصر اوسط لمبی اوسط لائن کے نیچے ہوتا ہے۔
یہ دیکھا جاسکتا ہے کہ اس حکمت عملی میں ایک ساتھ چلنے والی اوسط کا استعمال درمیانی اور طویل مدتی رجحان کی سمت کا تعین کرنے کے لئے کیا جاتا ہے ، اور مختصر مدت کے الٹ کے بارے میں MACD کا تعین کرنے کے لئے بہتر داخلے کے وقت کو پکڑنے کے لئے استعمال کیا جاتا ہے۔ یہ کثیر ٹائم ایشز کا مشترکہ آپریشن حکمت عملی کی ایک اہم خصوصیت ہے۔
اس طرح کے ٹائم شیلڈ آپریشن کا فائدہ یہ ہے کہ اعلی امکانات کے رجحان کی سمت میں ، مناسب قلیل مدتی الٹ پوائنٹ داخلہ کا انتخاب کیا جاسکتا ہے ، جس سے بہتر رسک ریٹرن حاصل کیا جاسکتا ہے۔ خاص طور پر ، مندرجہ ذیل 3 فوائد ہیں:
3 ایس ایم ایم اے میڈین لائنز اور 1 ای ایم اے میڈین لائن ملٹی لیول فلپنگ ، درمیانی اور طویل مدتی رجحان کی سمت کا مؤثر اندازہ لگاسکتے ہیں ، اور الٹا آپریشن سے بچ سکتے ہیں۔
ایم اے سی ڈی اشارے نے مختصر مدت کے الٹ پوائنٹ میں داخلے کا فیصلہ کیا ، جس سے داخلے کی بہتر قیمت حاصل کی جاسکتی ہے۔
سخت حرکت پذیری اوسط تسلسل کے تعلقات کو فلٹرنگ کی شرائط کے طور پر استعمال کیا جاتا ہے تاکہ غلط استعمال کے امکانات کو کم کیا جاسکے۔
اس حکمت عملی کے اہم خطرات یہ ہیں:
اس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس کی وجہ یہ ہے کہ اس کی رفتار میں کمی واقع ہوئی ہے۔
MACD اشارے جھوٹے سگنل پیدا کرنے کے لئے آسان ہے، قیمت فلٹرنگ کے ساتھ مل کر کی ضرورت ہوتی ہے.
ایک سے زیادہ ٹائم ایکسز کے فیصلے سے حکمت عملی کی پیچیدگی میں اضافہ ہوتا ہے اور اس سے ناکامی کا خطرہ بڑھ جاتا ہے۔
خطرے 1 اور خطرے 2 کے لئے ، اوسط لائن کے دورانیے اور سگنل کے دورانیے کو مناسب طریقے سے مختصر کرکے اصلاح کی جاسکتی ہے ، جو قلیل مدتی رجحان کے الٹ جانے پر تیزی سے ردعمل ظاہر کرتی ہے۔ خطرے 3 کے لئے ، مختلف اقسام اور ادوار کے لئے اصلاحی جانچ کی ضرورت ہوتی ہے ، تاکہ حکمت عملی کے پیرامیٹرز کو اس قسم کی خصوصیات کے مطابق سختی سے ڈھال لیا جاسکے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
متحرک اوسط اور MACD کے پیرامیٹرز کو بہتر بنائیں تاکہ وہ مختلف دورانیوں اور مختلف قسم کی خصوصیات سے بہترین مل سکیں۔ جیسے اوسط لمبائی کو کم کرنا ، سگنل پیرامیٹرز کو بڑھانا وغیرہ۔
اسٹاپ نقصان کی حکمت عملی کو بڑھانا ، اے ٹی آر یا دیگر اشارے کا استعمال کرتے ہوئے معقول متحرک اسٹاپ لگانا۔ اس سے حکمت عملی کے خطرے پر قابو پانے میں نمایاں طور پر بہتری آسکتی ہے۔
متبادل MACD سگنل کے لئے بہتر اشارے یا فلٹرنگ کے طریقوں کی تلاش کریں۔ مثال کے طور پر ، اتار چڑھاؤ کے اشارے متعارف کرانے ، سگنل کو فلٹر کرنے وغیرہ۔
مختلف اسٹاپ اسٹاپ نقصان تناسب تعلقات کی جانچ کرنا تاکہ زیادہ سے زیادہ پیرامیٹرز کا مجموعہ حاصل کیا جاسکے۔
مجموعی طور پر ، یہ ایک ایسا نظام ہے جس میں ایک منفرد کراس ٹائم ایکسل نظریہ ہے۔ یہ ایک ساتھ چلنے والی اوسط اور MACD کے فوائد کا استعمال کرتے ہوئے ، متعدد ٹائم پیریڈ میں مشترکہ فیصلے کرنے والی حکمت عملی کو لاگو کرتا ہے۔ پیرامیٹرز اور فلٹرنگ شرائط کو بہتر بنانے کے ل adjust ایڈجسٹ کرکے ، یہ حکمت عملی ایک بہت ہی عملی مقدار میں تجارت کا پروگرام بن سکتی ہے۔
/*backtest
start: 2023-10-22 00:00:00
end: 2023-11-21 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/
// © SoftKill21
//@version=4
strategy("Koala Script",initial_capital=1000,
commission_type=strategy.commission.cash_per_contract,
commission_value=0.000065,
slippage=3)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2031, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
len = input(3, minval=1, title="Length")
src = input(hl2, title="Source")
smma = 0.0
sma1 = sma(src, len)
smma := na(smma[1]) ? sma1 : (smma[1] * (len - 1) + src) / len
len2 = input(6, minval=1, title="Length")
src2 = input(hl2, title="Source")
smma2 = 0.0
sma2 = sma(src2, len2)
smma2 := na(smma2[1]) ? sma2 : (smma2[1] * (len2 - 1) + src2) / len2
len3 = input(9, minval=1, title="Length")
src3 = input(hl2, title="Source")
smma3 = 0.0
sma3 = sma(src3, len3)
smma3 := na(smma3[1]) ? sma3 : (smma3[1] * (len3 - 1) + src3) / len3
len4 = input(50, minval=1, title="Length")
src4 = input(close, title="Source")
smma4 = 0.0
sma4 = sma(src4, len4)
smma4 := na(smma4[1]) ? sma4 : (smma4[1] * (len4 - 1) + src4) / len4
len5 = input(200, minval=1, title="Length")
src5 = input(close, title="Source")
out5 = ema(src5, len5)
timeinrange(res, sess) => time(res, sess) != 0
london=timeinrange(timeframe.period, "0300-1045")
londonEntry=timeinrange(timeframe.period, "0300-0845")
time_cond = time >= startDate and time <= finishDate and londonEntry
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
srcc = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Calculating
fast_ma = sma_source ? sma(srcc, fast_length) : ema(srcc, fast_length)
slow_ma = sma_source ? sma(srcc, slow_length) : ema(srcc, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma and londonEntry and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5
shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma and londonEntry and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5
//longCond2 = crossover(close,out5) and crossover(close,smma4) and crossover(close,smma3) and crossover(close,smma2) and crossover(close,smma) and time_cond
//shortCond2 = crossunder(close,out5) and crossunder(close,smma4) and crossunder(close,smma3) and crossunder(close,smma2) and crossunder(close,smma) and time_cond
length=input(14, title="ATR Length")
mult=input(1.0, title="Percentage Multiplier (for ex., 0.7 = 70%)", step=0.1, minval=0.1, maxval=5.0)
oa=input(false, title="Show actual ATR")
ii=syminfo.pointvalue==0
s=ii?na:oa?atr(length):(syminfo.pointvalue * mult * atr(length))
tp=input(300,title="tp")
sl=input(300,title="sl")
//tp = s*10000
//sl= s*10000
//if(tp>300)
// tp:=300
//if(sl>300)
// sl:=300
//if(sl<150)
// sl:=150
//if(tp<150)
// tp:=150
strategy.initial_capital = 50000
//MONEY MANAGEMENT--------------------------------------------------------------''
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(3,type=input.float,title="Risk %")/100 //risk % per trade
//Calculate the size of the next trade
temp01 = balance * risk //Risk in USD
temp02 = temp01/sl //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 10000)
size := 10000 //Set min. lot size
strategy.entry("long",1,when=longCond )
strategy.exit("closelong","long", profit=tp,loss=sl)
//strategy.close("long",when= crossunder(close[4],smma4) and close[4] > close[3] and close[3]>close[2] and close[2] > close[1] and close[1] > close)
strategy.entry("short",0,when=shortCond )
strategy.exit("closeshort","short", profit=tp,loss=sl)
//strategy.close("short",when= crossover(close[4],smma4) and close[4] < close[3] and close[3]< close[2] and close[2] < close[1] and close[1] < close)
strategy.close_all(when = not london)
maxEntry=input(2,title="max entries")
// strategy.risk.max_intraday_filled_orders(maxEntry)