سپر Ichimoku رجحان کی حکمت عملی


تخلیق کی تاریخ: 2023-11-06 16:32:11 آخر میں ترمیم کریں: 2023-11-06 16:32:11
کاپی: 0 کلکس کی تعداد: 1427
1
پر توجہ دیں
1617
پیروکار

سپر Ichimoku رجحان کی حکمت عملی

جائزہ

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

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

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

ایک سے زیادہ حکمت عملی میں ٹریڈنگ کی سمت کا تعین کرنے کے لئے مندرجہ ذیل عوامل پر غور کیا جاتا ہے:

  1. تبدیلی کی لائن اور بیس لائن کا تعلق:جب ٹرانسمیشن لائن اوپر کی طرف بڑھتی ہے، نیچے کی طرف بڑھتی ہے

  2. بادلوں کے رنگ:جب بادل سبز ہوں تو اُونگھیں دیکھیں، جب سرخ ہوں تو گھٹائیں

  3. قیمتوں میں تبدیلی:قیمتوں کی واپسی کی تبدیلی کی لائن اور بیس لائن سے باہر داخل ہونے کی ضرورت ہے

اس حکمت عملی کے تحت ٹریڈنگ سگنل یہ ہیں:

ایک اور سگنل:

  • تبادلوں کی لائن بیس لائن سے زیادہ ہے
  • قیمتوں میں تبدیلی کی لائن اور بیس لائن سے زیادہ
  • مبدل لائن اور بیس لائن بادلوں کے بینڈ سے اوپر
  • قیمتوں میں تبدیلی کی لائن اور بیس لائن سے نیچے کی واپسی

اس کا مطلب ہے:

  • بیس لائن سے نیچے ٹرانسمیشن لائن
  • قیمتوں میں تبدیلی کی لائن اور بیس لائن سے نیچے
  • بادلوں کے بینڈ سے نیچے کنورٹ لائن اور بیس لائن
  • قیمتوں میں تبدیلی کی لائن اور بیس لائن سے اوپر کی واپسی

جب ایک ہی وقت میں زیادہ / خالی سگنل کو پورا کیا جاتا ہے تو ، پوزیشن کے حالات کے مطابق پوزیشن کھولنے کا آپریشن کیا جاتا ہے۔

طاقت کا تجزیہ

ٹاپ ون حکمت عملی کے فوائد یہ ہیں:

  1. ایک سے زیادہ اشارے کے مجموعے کا استعمال کرتے ہوئے رجحان کی سمت کا تعین کرنے کے لئے اعلی درستگی

  2. منتقلی کی لائن اور بیس لائن مختصر مدت کے رجحانات کو واضح طور پر طے کرتی ہے ، اور بادل کی پٹی طویل مدتی رجحانات کا فیصلہ کرتی ہے

  3. شرط یہ ہے کہ قیمتوں میں واپسی کی لکیروں سے بچنے کے لئے قیمتوں میں واپسی کی لکیروں سے بچنے کے لئے

  4. خطرے کے کنٹرول میں حالیہ مدت کے لئے سب سے زیادہ کم قیمت کا تعین کرنے کی روک تھام کو اپنانا ، جو انفرادی نقصان کو مؤثر طریقے سے کنٹرول کرے

  5. مستحکم آمدنی کے لئے معقول منافع سے زیادہ نقصانات

  6. طویل اور درمیانی لائن رجحان ٹریڈنگ کے لئے موزوں ہے

  7. حکمت عملی کے خیالات واضح اور سمجھنے میں آسان ہیں ، پیرامیٹرز کو بہتر بنانے کے لئے کافی جگہ ہے

  8. مارکیٹ کے مختلف ماحول میں کام کرتا ہے

خطرے کا تجزیہ

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

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

  2. جب رجحانات میں تیزی سے تبدیلی آتی ہے تو ، بروقت پوزیشنوں کو تبدیل کرنے میں ناکامی ، ممکنہ طور پر نقصان کا باعث بن سکتی ہے۔

  3. سیٹ کی جیت اور نقصان کا تناسب تمام اقسام کے لئے موزوں نہیں ہے، مختلف معیار کے لئے ایڈجسٹ پیرامیٹرز کی ضرورت ہے

  4. جب بادلوں کے بینڈ کو توڑنے کے بعد لفٹ کی جگہ محدود ہو تو ، ممکنہ منافع محدود ہوسکتا ہے

  5. بار بار جانچ کی ضرورت ہوتی ہے اور بار بار پیرامیٹرز کو ایڈجسٹ کرنے کے لئے مناسب نہیں ہے

مندرجہ ذیل طریقوں سے خطرے کو کم کیا جا سکتا ہے:

  1. اصلاحی پیرامیٹرز جو مختلف دورانیہ اور نسل کی خصوصیات کے مطابق ہیں

  2. دوسرے اشارے کے ساتھ مل کر انٹری سگنلز کو فلٹر کریں تاکہ ہلکے بازار میں جعلی توڑ سے بچا جاسکے

  3. متحرک طور پر اسٹاپ نقصان کی پوزیشن کو ایڈجسٹ کریں تاکہ اسٹاپ نقصان کے متحرک ہونے کا امکان کم ہوجائے

  4. مختلف منافع اور نقصان کی ترتیب کی جانچ پڑتال

  5. رجحان سگنل کی طاقت کا تعین کرنے کے لئے چارٹ کی شکل جیسے طریقوں کا استعمال کرنا

اصلاح کی سمت

ایک سے زیادہ حکمت عملی کو بہتر بنانے کے لئے:

  1. ٹرانسمیشن لائن اور بیس لائن پیرامیٹرز کو بہتر بنانے کے لئے جو تجارت شدہ قسم کی خصوصیات کے مطابق ہے

  2. کلاؤڈ بینڈ پیرامیٹرز کو بہتر بنائیں تاکہ کلاؤڈ بینڈ طویل مدتی رجحانات کا زیادہ درست اندازہ لگائیں

  3. زیادہ سے زیادہ روکنے والے الگورتھم جیسے اے ٹی آر کے مطابق روکنے یا متحرک روکنے

  4. دوسرے اشارے کے ساتھ مل کر سگنل فلٹرنگ ، فلٹرنگ کے مزید حالات ترتیب دیں ، اور غلط اندراج کے امکانات کو کم کریں

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

  6. مارٹینگلز کی طرح پوزیشنوں کا انتظام کریں ، مختلف مارکیٹ میں اتار چڑھاو کی تعدد کے مطابق

  7. اعلی استحکام کے لئے پیرامیٹرز کو بہتر بنانے کے لئے مشین لرننگ کے طریقوں کا استعمال

  8. مختلف ٹریڈنگ ٹائم فریموں کو ترتیب دیں اور رات اور ڈسک کے درمیان ٹریڈنگ کی خصوصیات کو ایڈجسٹ کریں

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-11-05 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Strategy based on the the SuperIchi indicator.
//
// Strategy was designed for the purpose of back testing. 
// See strategy documentation for info on trade entry logic.
// 
// Credits:
//  - SuperIchi [LUX]: LuxAlgo (https://www.tradingview.com/script/vDGd9X9y-SuperIchi-LUX/)

//@version=5
strategy("SuperIchi Strategy", overlay=true, initial_capital=1000, currency=currency.NONE, max_labels_count=500, default_qty_type=strategy.cash, commission_type=strategy.commission.percent, commission_value=0.01)

// =============================================================================
// STRATEGY INPUT SETTINGS
// =============================================================================

// ---------------
// Risk Management
// ---------------
swingLength = input.int(15, "Swing High/Low Lookback Length", group='Strategy: Risk Management', tooltip='Stop Loss is calculated by the swing high or low over the previous X candles')
accountRiskPercent = input.float(2, "Account percent loss per trade", step=0.1, group='Strategy: Risk Management', tooltip='Each trade will risk X% of the account balance')
profitFactor = input.float(2, "Profit Factor (R:R Ratio)", step = 0.1, group='Strategy: Risk Management')
useAtrOverride = input.bool(true, "Use Swing High/Low ATR Override", group='Strategy: Risk Management', tooltip='In some cases price may not have a large enough (if any) swing withing previous X candles. Turn this on to use an ATR value when swing high/low is lower than the given ATR value')
atrMultiplier = input.int(1, "Swing High/Low ATR Override Multiplier", group='Strategy: Risk Management')
atrLength = input.int(14, "Swing High/Low ATR Override Length", group='Strategy: Risk Management')

// -----------------
// Strategy Settings
// -----------------
pullbackLength = input.int(5, "Pullback Lookback Length", group='Strategy: Settings', tooltip='Number of candles to consider for a pullback into the moving averages (prerequisite for trade entry)')

// ----------
// Date Range
// ----------
start_year = input.int(title='Start Date', defval=2022, minval=2010, maxval=3000, group='Strategy: Date Range', inline='1')
start_month = input.int(title='', defval=1, group='Strategy: Date Range', inline='1', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
start_date = input.int(title='', defval=1, group='Strategy: Date Range', inline='1', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
end_year = input.int(title='End Date', defval=2023, minval=1800, maxval=3000, group='Strategy: Date Range', inline='2')
end_month = input.int(title='', defval=1, group='Strategy: Date Range', inline='2', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
end_date = input.int(title='', defval=1, group='Strategy: Date Range', inline='2', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
in_date_range = time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0) and time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0)

// =============================================================================
// INDICATORS
// =============================================================================

// ---------------
// SuperIchi [LUX]
// ---------------
tenkan_len  = input(9,'Tenkan          ',inline='SuperIchi', group='Indicator: SuperIchi Settings')
tenkan_mult = input(2.,'',inline='SuperIchi', group='Indicator: SuperIchi Settings')

kijun_len   = input(26,'Kijun             ',inline='SuperIchi', group='Indicator: SuperIchi Settings')
kijun_mult  = input(4.,'',inline='SuperIchi', group='Indicator: SuperIchi Settings')

spanB_len   = input(52,'Senkou Span B ',inline='SuperIchi', group='Indicator: SuperIchi Settings')
spanB_mult  = input(6.,'',inline='SuperIchi', group='Indicator: SuperIchi Settings')

offset      = input(26,'Displacement', inline='SuperIchi', group='Indicator: SuperIchi Settings')
//------------------------------------------------------------------------------
avg(src,length,mult)=>
    atr = ta.atr(length)*mult
    up = hl2 + atr
    dn = hl2 - atr
    upper = 0.,lower = 0.
    upper := src[1] < upper[1] ? math.min(up,upper[1]) : up
    lower := src[1] > lower[1] ? math.max(dn,lower[1]) : dn
    
    os = 0,max = 0.,min = 0.
    os := src > upper ? 1 : src < lower ? 0 : os[1]
    spt = os == 1 ? lower : upper
    max := ta.cross(src,spt) ? math.max(src,max[1]) : os == 1 ? math.max(src,max[1]) : spt
    min := ta.cross(src,spt) ? math.min(src,min[1]) : os == 0 ? math.min(src,min[1]) : spt
    math.avg(max,min)
//------------------------------------------------------------------------------
tenkan = avg(close,tenkan_len,tenkan_mult)
kijun = avg(close,kijun_len,kijun_mult)

senkouA = math.avg(kijun,tenkan)
senkouB = avg(close,spanB_len,spanB_mult)
//------------------------------------------------------------------------------
tenkan_css = #2157f3 //blue
kijun_css = #ff5d00 //red

cloud_a = color.new(color.teal,80)
cloud_b = color.new(color.red,80)

chikou_css = #7b1fa2

plot(tenkan,'Tenkan-Sen',tenkan_css)
plot(kijun,'Kijun-Sen',kijun_css)

plot(ta.crossover(tenkan,kijun) ? kijun : na,'Crossover',#2157f3,3,plot.style_circles)
plot(ta.crossunder(tenkan,kijun) ? kijun : na,'Crossunder',#ff5d00,3,plot.style_circles)

A = plot(senkouA,'Senkou Span A',na,offset=offset-1)
B = plot(senkouB,'Senkou Span B',na,offset=offset-1)
fill(A,B,senkouA > senkouB ? cloud_a : cloud_b)

plot(close,'Chikou',chikou_css,offset=-offset+1,display=display.none)


// =============================================================================
// STRATEGY LOGIC
// =============================================================================
plotchar(kijun, "kijun", "", location = location.top)
plotchar(senkouA[offset-1], "senkouA", "", location = location.top)


plotchar(tenkan > kijun, "line above", "", location = location.top)
plotchar(close > tenkan, "price above", "", location = location.top)
plotchar(kijun > senkouA[offset-1], "above cloud", "", location = location.top)
// blue line above red line + price above both lines + both lines above cloud
longSen = tenkan > kijun and close > tenkan and kijun > senkouA[offset-1]
// red line below blue line + price below both lines + both lines below cloud
shortSen = tenkan < kijun and close < tenkan and kijun < senkouA[offset-1]

plotchar(longSen, "longSen", "", location = location.top)
plotchar(shortSen, "shortSen", "", location = location.top)

// Cloud is green
longSenkou = senkouA[offset-1] > senkouB[offset-1]
// Cloud is red
shortSenkou = senkouA[offset-1] < senkouB[offset-1]

// price must have pulled back below sen lines before entry
barsSinceLongPullback = ta.barssince(close < kijun and close < tenkan)
longPullback = barsSinceLongPullback <= pullbackLength
// price must have pulled back above sen lines before entry
barsSinceShortPullback = ta.barssince(close > kijun and close > tenkan)
shortPullback = barsSinceShortPullback <= pullbackLength

// plotchar(lowestClose, "lowestClose", "", location = location.top)
// plotchar(highestClose, "highestClose", "", location = location.top)

inLong = strategy.position_size > 0
inShort = strategy.position_size < 0

longCondition = longSen and longSenkou and longPullback and in_date_range
shortCondition = shortSen and shortSenkou and shortPullback and in_date_range

swingLow = ta.lowest(source=low, length=swingLength)
swingHigh = ta.highest(source=high, length=swingLength)

atr = useAtrOverride ? ta.atr(atrLength) * atrMultiplier : 0
longSl = math.min(close - atr, swingLow)
shortSl = math.max(close + atr, swingHigh)

longStopPercent = math.abs((1 - (longSl / close)) * 100)
shortStopPercent = math.abs((1 - (shortSl / close)) * 100)

longTpPercent = longStopPercent * profitFactor
shortTpPercent = shortStopPercent * profitFactor
longTp = close + (close * (longTpPercent / 100))
shortTp = close - (close * (shortTpPercent / 100))

// Position sizing (default risk 2% per trade)
riskAmt = strategy.equity * accountRiskPercent / 100
longQty = math.abs(riskAmt / longStopPercent * 100) / close
shortQty = math.abs(riskAmt / shortStopPercent * 100) / close

if (longCondition and not inLong)
    strategy.entry("Long", strategy.long, qty=longQty)
    strategy.exit("Long  SL/TP", from_entry="Long", stop=longSl, limit=longTp, alert_message='Long SL Hit')
    buyLabel = label.new(x=bar_index, y=high[1], color=color.green, style=label.style_label_up)
    label.set_y(id=buyLabel, y=low)
    label.set_tooltip(id=buyLabel, tooltip="Risk Amt: " + str.tostring(riskAmt) + "\nQty: " + str.tostring(longQty) + "\nSwing low: " + str.tostring(swingLow) + "\nStop Percent: " + str.tostring(longStopPercent) + "\nTP Percent: " + str.tostring(longTpPercent))

if (shortCondition and not inShort)
    strategy.entry("Short", strategy.short, qty=shortQty)
    strategy.exit("Short  SL/TP", from_entry="Short", stop=shortSl, limit=shortTp, alert_message='Short SL Hit')
    sellLabel = label.new(x=bar_index, y=high[1], color=color.red, style=label.style_label_up)
    label.set_y(id=sellLabel, y=low)
    label.set_tooltip(id=sellLabel, tooltip="Risk Amt: " + str.tostring(riskAmt) + "\nQty: " + str.tostring(shortQty) + "\nSwing high: " + str.tostring(swingHigh) + "\nStop Percent: " + str.tostring(shortStopPercent) + "\nTP Percent: " + str.tostring(shortTpPercent))