Ichimoku Cloud، MACD اور Stochastic پر مبنی حکمت عملی کے بعد ملٹی ٹائم فریم کا رجحان


تخلیق کی تاریخ: 2024-02-05 10:30:45 آخر میں ترمیم کریں: 2024-02-05 10:30:45
کاپی: 2 کلکس کی تعداد: 768
1
پر توجہ دیں
1617
پیروکار

Ichimoku Cloud، MACD اور Stochastic پر مبنی حکمت عملی کے بعد ملٹی ٹائم فریم کا رجحان

جائزہ

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

حکمت عملی کا اصول

  1. Ichimoku کلاؤڈ چارٹ وسط لمبی لائن رجحان کی سمت کا تعین کریں۔ CLOSE قیمت پر کلاؤڈ چارٹ کے اوپر سے گزرنے والی موڑ کی لائن اور بیس لائن کثیر سر سگنل ہے ، نیچے سے گزرنے والی خالی سر سگنل ہے۔

  2. MACD مختصر لائن رجحانات اور اوورلوڈ اوورلوڈ کا فیصلہ کرے گا۔ MACD کالم لائن پر ٹرانس سگنل لائن ایک کثیر سر سگنل ہے ، نیچے ٹرانس ایک خالی سر سگنل ہے۔

  3. اسٹاکسٹک کے ڈی نے اوورلوپ اوور سیل زون کا فیصلہ کیا۔ 20 کو کثیر سر سگنل کے طور پر K لائن پر پہننا ، اور 80 کو خالی سر سگنل کے طور پر پہننا۔

  4. حرکت پذیر اوسط وسط مدتی رجحان کا تعین کرتی ہے۔ اختتامی قیمت پر چلنے والی اوسط ایک کثیر سر سگنل ہے ، نیچے ایک خالی سر سگنل ہے۔

  5. مندرجہ بالا متعدد اشارے کے اشارے کو ضم کریں ، کچھ جھوٹے سگنل کو فلٹر کریں ، اور اعلی امکان کے ساتھ مستقل رجحان سگنل تشکیل دیں۔

  6. اے ٹی آر کی بنیاد پر اسٹاپ نقصان کی قیمت کا حساب لگائیں۔ اے ٹی آر کے ایک خاص ضارب کے ساتھ اسٹاپ نقصان کی حد اور اسٹاپ آؤٹ لیٹ کے طور پر ، خطرے پر قابو پالیں۔

اسٹریٹجک فوائد

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

  2. وسیع پیمانے پر استعمال کیا جاتا ہے اشارے مجموعہ فلٹرنگ ٹیکنالوجی، مؤثر طریقے سے جعلی سگنل فلٹرنگ

  3. اے ٹی آر کا دورانیہ نقصان روکنے کا آلہ ، زیادہ سے زیادہ واحد نقصان کو کنٹرول کرتا ہے۔

  4. مختلف خطرے کی ترجیحات کو پورا کرنے کے لئے داخلے کی شرائط کی سختی کو اپنی مرضی کے مطابق کیا جاسکتا ہے۔

اسٹریٹجک رسک

  1. رجحانات کی پیروی پر مبنی، غیر متوقع واقعات کی واپسی کی شناخت کرنے میں ناکام.

  2. اے ٹی آر کا دورانیہ بند ہونا شاید زیادہ مثالی ہے اور اسے ریئل ڈسک میں مکمل طور پر نقل کرنا مشکل ہے۔

  3. پیرامیٹرز کی غلط ترتیب سے ٹرانزیکشن کی زیادہ تعدد یا سگنل کی شناخت کی ناقص درستگی کا سبب بن سکتا ہے۔

  4. مختلف اقسام اور مارکیٹ کے حالات کے مطابق توازن تلاش کرنے کے لئے پیرامیٹرز کو ایڈجسٹ کرنے کی ضرورت ہے۔

حکمت عملی کی اصلاح کی سمت

  1. مشین سیکھنے کے الگورتھم کو شامل کریں جو رجحانات کو تبدیل کرنے میں مدد فراہم کرے۔

  2. اے ٹی آر ضارب پیرامیٹرز کو بہتر بنائیں ، مختلف اقسام کے لئے مختلف ضارب طے کیے جاسکتے ہیں۔

  3. ٹرانزیکشن حجم میں تبدیلی جیسے دیگر عوامل کے ساتھ مل کر ، بریک سگنل کی درستگی کو بہتر بنائیں۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 4h
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/
// © FXFUNDINGMATE

//@version=4
strategy(title="FXFUNDINGMATE TREND INDICATOR", overlay=true)

//Ichimoku Cloud
conversionPeriods = input(9, minval=1, title="Conversion Line Length")
basePeriods = input(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Length")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)[displacement - 1]
leadLine2 = donchian(laggingSpan2Periods)[displacement - 1]


//macd
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = 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)

fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


//kd
periodK = input(5, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)


//atr
atrlength = input(title="Atr Length", defval=8, minval=1)
SMulti = input(title="Stop loss multi Atr", defval=1.0)
TMulti = input(title="Take profit multi Atr", defval=1.0)
smoothing = input(title="Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
ma_function(source, length) =>
	if smoothing == "RMA"
		rma(source, length)
	else
		if smoothing == "SMA"
			sma(source, length)
		else
			if smoothing == "EMA"
				ema(source, length)
			else
				wma(source, length)
atr = ma_function(tr(true), atrlength)


operation_type = input(defval = "Both", title = "Position side", options = ["Long", "Short", "Both"])
operation = operation_type == "Long" ? 1 : operation_type == "Short" ? 2 : 3
showlines = input(true,  title="Show sl&tp lines")

// MA
sma_len = input(100, title="MA Length", type=input.integer)
sma = sma(close, sma_len)

longCond = crossover(k, 20) and macd > 0 and close > sma and close > leadLine1 and close > leadLine2
shortCond = crossunder(k, 80)  and macd < 0 and close < sma and close < leadLine1 and close < leadLine2

entry_price  = float(0.0) //set float
entry_price := strategy.position_size != 0 or longCond or shortCond ? strategy.position_avg_price : entry_price[1]
entry_atr = valuewhen(longCond or shortCond, atr,0)
short_stop_level     = float(0.0)   //set float
short_profit_level   = float(0.0)   //set float
long_stop_level      = float(0.0)   //set float
long_profit_level    = float(0.0)   //set float
short_stop_level    := entry_price + SMulti * entry_atr
short_profit_level  := entry_price - TMulti * entry_atr
long_stop_level     := entry_price - SMulti * entry_atr
long_profit_level   := entry_price + TMulti * entry_atr


//  Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("1 Jan 2020 00:00 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("31 Dec 2025 23:59 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true

if (operation == 1 or operation == 3)
    strategy.entry("long" , strategy.long , when=longCond and timeCond, alert_message = "Long")
    strategy.exit("SL/TP", from_entry = "long" , limit = long_profit_level , stop = long_stop_level , alert_message = "Long exit")

if (operation == 2 or operation == 3)
    strategy.entry("short", strategy.short, when=shortCond and timeCond, alert_message="Short")
    strategy.exit("SL/TP", from_entry = "short", limit = short_profit_level , stop = short_stop_level , alert_message = "Short exit")
    
if time > i_endTime  
    strategy.close_all(comment = "close all", alert_message = "close all")
    
plot(showlines and strategy.position_size <= 0 ? na : long_stop_level,    color=color.red,  style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size <= 0 ? na : long_profit_level,  color=color.lime, style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size >= 0 ? na : short_stop_level,   color=color.red,  style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size >= 0 ? na : short_profit_level, color=color.lime, style=plot.style_linebr, linewidth = 2)

//}