سپر ایچی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-06 16:32:11
ٹیگز:

img

جائزہ

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

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

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

سپر ایچی حکمت عملی بنیادی طور پر تجارتی سمت کا تعین کرنے کے لئے مندرجہ ذیل عناصر کا جائزہ لیتی ہے:

  1. ٹینکن اور کیجون تعلقات: جب ٹینکن اوپر ہے تو بولش، جب نیچے ہے تو bearish

  2. بادل کا رنگ: جب بادل سبز ہو تو بولش، جب سرخ ہو تو bearish

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

خاص طور پر، تجارتی سگنل یہ ہیں:

لمبی سگنل:

  • کیجون کے اوپر ٹینکن
  • قیمت Tenkan اور Kijun سے اوپر
  • Tenkan اور بادل کے اوپر Kijun
  • قیمت Tenkan اور Kijun کے نیچے واپس ھیںچتی ہے

مختصر سگنل:

  • کیجون کے نیچے ٹینکن
  • قیمت Tenkan اور Kijun سے نیچے
  • Tenkan اور بادل کے نیچے Kijun
  • قیمت Tenkan اور Kijun اوپر واپس ھیںچتی ہے

جب لانگ/شارٹ سگنل ٹرگر ہوتا ہے تو موجودہ پوزیشن کی بنیاد پر پوزیشن کھولی جائے گی۔

فوائد کا تجزیہ

سپر ایچی حکمت عملی کے مندرجہ ذیل فوائد ہیں:

  1. درست طریقے سے رجحانات کا تعین کرنے کے لئے Ichimoku مجموعہ کا استعمال کرتا ہے

  2. Tenkan/Kijun مختصر مدت کے رجحانات دکھاتا ہے، Cloud طویل مدتی رجحانات دکھاتا ہے

  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))


مزید