Ichimoku کلاؤڈ چارٹ مقداری حکمت عملی


تخلیق کی تاریخ: 2024-02-01 14:25:49 آخر میں ترمیم کریں: 2024-02-01 14:25:49
کاپی: 9 کلکس کی تعداد: 574
1
پر توجہ دیں
1617
پیروکار

Ichimoku کلاؤڈ چارٹ مقداری حکمت عملی

جائزہ

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

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

اس حکمت عملی میں معیاری Ichimoku ماڈل کا استعمال کیا گیا ہے ، جس میں تنکان لائن ، کیجون لائن ، لیڈر لائن ، کلاؤڈ میپ A لائن اور کلاؤڈ میپ B لائن شامل ہیں۔ اس حکمت عملی میں ان لائنوں کے کراس کا موازنہ کرکے کثیر جہتی سگنل کا فیصلہ کیا گیا ہے۔

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

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

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

  1. Ichimoku ماڈل کی اعلی درجے کی تکنیکی تجزیہ کی خصوصیات اور TradingView حکمت عملی ٹیسٹر کی اپنی مرضی کے مطابق صلاحیتوں کے ساتھ مل کر
  2. مختلف طرز کے تاجروں کے لئے متعدد پیرامیٹرز کی ترتیب کے اختیارات فراہم کرنا
  3. ریئل ٹائم اپ ڈیٹ اور بصری کلاؤڈ نقشہ ، واضح طور پر رجحانات کی سمت کا فیصلہ کریں
  4. حکمت عملی کے اثر کو جانچنے کے لئے پیرامیٹرز کو بہتر بنانے کے لئے اعداد و شمار کی جانچ پڑتال کریں

اسٹریٹجک رسک

  1. Ichimoku ماڈل جھوٹے سگنل پیدا کرنے کے لئے آسان ہے، جس میں قیمتوں کا تعین کرنے والے اداروں کے ساتھ فیصلہ کرنے کی ضرورت ہے.
  2. پیرامیٹرز میں بہت سارے اختیارات ہیں اور نئے آنے والوں کے لئے یہ آسان ہے کہ وہ اپنے آپ کو اس میں گھسیٹ لیں
  3. کلاؤڈ گرافس میں تاخیر ہے، اور اس کے لیے مناسب نہیں ہے کہ وہ گرنے کے لیے تیار ہوں۔
  4. ریٹائرمنٹ کے اعداد و شمار ریڈ ڈسک کی کارکردگی کے برابر نہیں ہیں، ریڈ ڈسک پر محتاط رہیں

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

  1. پیرامیٹرز کو بہتر بنانے کے لئے، بہترین پیرامیٹرز کا مجموعہ تلاش کریں
  2. دوسرے اشارے کے ساتھ مل کر جعلی سگنل کو فلٹر کریں
  3. اسٹاپ نقصان کی روک تھام کی منطق میں اضافہ ، ایک ہی تجارت کے خطرے پر قابو پانا
  4. ٹرانزیکشن کی قسم، مدت اور دیگر شرائط کے اثرات پر غور کرنا
  5. ریل ڈسک کی توثیق، ریل ڈسک کے مطابق پیرامیٹرز کو ایڈجسٹ کریں

خلاصہ کریں۔

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

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

//@version=5

//  -----------------------------------------------------------------------------
//  Copyright © 2024 Skyrex, LLC. All rights reserved.
//  -----------------------------------------------------------------------------

//  Version: v2.1
//  Release:  Jan 22, 2024

strategy(title = "Advanced Ichimoku Clouds Strategy Long and Short", 
         shorttitle = "Ichimoku Strategy Long and Short", 
         overlay = true, 
         format = format.inherit, 
         pyramiding = 1, 
         calc_on_order_fills = false, 
         calc_on_every_tick = true, 
         default_qty_type = strategy.percent_of_equity, 
         default_qty_value = 100, 
         initial_capital = 10000, 
         currency = currency.NONE,  
         commission_type = strategy.commission.percent, 
         commission_value = 0.1,
         slippage = 5)

// Trading bot settings
sourceUuid = input.string(title = "sourceUuid:", defval = "yourBotSourceUuid", group = "Trading Bot Settings")
secretToken = input.string(title = "secretToken:", defval = "yourBotSecretToken", group = "Trading Bot Settings")

// Trading Period Settings
lookBackPeriodStart = input(title = "Trade Start Date/Time", defval = timestamp('2023-01-01T00:00:00'), group = "Trading Period Settings")
lookBackPeriodStop = input(title = "Trade Stop Date/Time", defval = timestamp('2025-01-01T00:00:00'), group = "Trading Period Settings")

// Trading Mode settings
tradingMode = input.string("Long", "Trading Mode", options = ["Long", "Short"], group = "Trading Mode Settings")

// Long Mode Signal Options
entrySignalOptionsLong = input.string("Bullish All", "Select Entry Signal (Long)", options = ["None", "Bullish Strong", "Bullish Neutral", "Bullish Weak", "Bullish Strong and Neutral", "Bullish Neutral and Weak", "Bullish Strong and Weak", "Bullish All"], group = "Long Mode Signals - set up if Trading Mode: Long")
exitSignalOptionsLong = input.string("Bearish Weak", "Select Exit Signal (Long)", options = ["None", "Bearish Strong", "Bearish Neutral", "Bearish Weak", "Bearish Strong and Neutral", "Bearish Neutral and Weak", "Bearish Strong and Weak", "Bearish All"], group = "Long Mode Signals - set up if Trading Mode: Long")

// Short Mode Signal Options
entrySignalOptionsShort = input.string("None", "Select Entry Signal (Short)", options = ["None", "Bearish Strong", "Bearish Neutral", "Bearish Weak", "Bearish Strong and Neutral", "Bearish Neutral and Weak", "Bearish Strong and Weak", "Bearish All"], group = "Short Mode Signals - set up if Trading Mode: Short")
exitSignalOptionsShort = input.string("None", "Select Exit Signal (Short)", options = ["None", "Bullish Strong", "Bullish Neutral", "Bullish Weak", "Bullish Strong and Neutral", "Bullish Neutral and Weak", "Bullish Strong and Weak", "Bullish All"], group = "Short Mode Signals - set up if Trading Mode: Short")

// Risk Management Settings
takeProfitPct = input.float(0, "Take Profit, % (0 - disabled)", minval = 0, step = 0.1, group = "Risk Management")
stopLossPct = input.float(0, "Stop Loss, % (0 - disabled)", minval = 0, step = 0.1, group = "Risk Management")

// Indicator Settings
tenkanPeriods = input.int(9, "Tenkan", minval=1, group="Indicator Settings")
kijunPeriods = input.int(26, "Kijun", minval=1, group="Indicator Settings")
chikouPeriods = input.int(52, "Chikou", minval=1, group="Indicator Settings")
displacement = input.int(26, "Offset", minval=1, group="Indicator Settings")

// Display Settings
showTenkan = input(false, "Show Tenkan Line", group = "Display Settings")
showKijun = input(false, "Show Kijun Line", group = "Display Settings")
showSenkouA = input(true, "Show Senkou A Line", group = "Display Settings")
showSenkouB = input(true, "Show Senkou B Line", group = "Display Settings")
showChikou = input(false, "Show Chikou Line", group = "Display Settings")

// Function to convert percentage to price points based on entry price
pctToPoints(pct) => 
    strategy.position_avg_price * pct / 100

// Colors and Transparency Level
transparencyLevel = 90
colorGreen = color.new(#36a336, 23)
colorRed = color.new(#d82727, 47)
colorTenkanViolet = color.new(#9400D3, 0)
colorKijun = color.new(#fdd8a0, 0)
colorLime = color.new(#006400, 0)
colorMaroon = color.new(#8b0000, 0)
colorGreenTransparent = color.new(colorGreen, transparencyLevel)
colorRedTransparent = color.new(colorRed, transparencyLevel)

// Ichimoku Calculations
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
tenkan = donchian(tenkanPeriods)
kijun = donchian(kijunPeriods)
senkouA = math.avg(tenkan, kijun)
senkouB = donchian(chikouPeriods)
displacedSenkouA = senkouA[displacement - 1]
displacedSenkouB = senkouB[displacement - 1]

// Plot Ichimoku Lines
plot(showTenkan ? tenkan : na, color=colorTenkanViolet, title = "Tenkan", linewidth=2)
plot(showKijun ? kijun : na, color=colorKijun, title = "Kijun", linewidth=2)
plot(showChikou ? close : na, offset=-displacement, color = colorLime, title = "Chikou", linewidth=1)
p1 = plot(showSenkouA ? senkouA : na, offset=displacement - 1, color=colorGreen, title = "Senkou A", linewidth=2)
p2 = plot(showSenkouB ? senkouB : na, offset=displacement - 1, color=colorRed, title = "Senkou B", linewidth=2)
fill(p1, p2, color=senkouA > senkouB ? colorGreenTransparent : colorRedTransparent)

// Signal Calculations
bullishSignal = ta.crossover(tenkan, kijun)
bearishSignal = ta.crossunder(tenkan, kijun)
bullishSignalValues = bullishSignal ? tenkan : na
bearishSignalValues = bearishSignal ? tenkan : na

strongBullishSignal = bullishSignalValues > displacedSenkouA and bullishSignalValues > displacedSenkouB
neutralBullishSignal = ((bullishSignalValues > displacedSenkouA and bullishSignalValues < displacedSenkouB) or (bullishSignalValues < displacedSenkouA and bullishSignalValues > displacedSenkouB))
weakBullishSignal = bullishSignalValues < displacedSenkouA and bullishSignalValues < displacedSenkouB

strongBearishSignal = bearishSignalValues < displacedSenkouA and bearishSignalValues < displacedSenkouB
neutralBearishSignal = ((bearishSignalValues > displacedSenkouA and bearishSignalValues < displacedSenkouB) or (bearishSignalValues < displacedSenkouA and bearishSignalValues > displacedSenkouB))
weakBearishSignal = bearishSignalValues > displacedSenkouA and bearishSignalValues > displacedSenkouB

// Functions to determine entry and exit conditions for Long and Short
isEntrySignalLong() =>
    entryCondition = false
    if entrySignalOptionsLong == "None"
        entryCondition := false
    else if entrySignalOptionsLong == "Bullish Strong"
        entryCondition := strongBullishSignal
    else if entrySignalOptionsLong == "Bullish Neutral"
        entryCondition := neutralBullishSignal
    else if entrySignalOptionsLong == "Bullish Weak"
        entryCondition := weakBullishSignal
    else if entrySignalOptionsLong == "Bullish Strong and Neutral"
        entryCondition := strongBullishSignal or neutralBullishSignal
    else if entrySignalOptionsLong == "Bullish Neutral and Weak"
        entryCondition := neutralBullishSignal or weakBullishSignal
    else if entrySignalOptionsLong == "Bullish Strong and Weak"
        entryCondition := strongBullishSignal or weakBullishSignal
    else if entrySignalOptionsLong == "Bullish All"
        entryCondition := strongBullishSignal or neutralBullishSignal or weakBullishSignal
    entryCondition

isExitSignalLong() =>
    exitCondition = false
    if exitSignalOptionsLong == "None"
        exitCondition := false
    else if exitSignalOptionsLong == "Bearish Strong"
        exitCondition := strongBearishSignal
    else if exitSignalOptionsLong == "Bearish Neutral"
        exitCondition := neutralBearishSignal
    else if exitSignalOptionsLong == "Bearish Weak"
        exitCondition := weakBearishSignal
    else if exitSignalOptionsLong == "Bearish Strong and Neutral"
        exitCondition := strongBearishSignal or neutralBearishSignal
    else if exitSignalOptionsLong == "Bearish Neutral and Weak"
        exitCondition := neutralBearishSignal or weakBearishSignal
    else if exitSignalOptionsLong == "Bearish Strong and Weak"
        exitCondition := strongBearishSignal or weakBearishSignal
    else if exitSignalOptionsLong == "Bearish All"
        exitCondition := strongBearishSignal or neutralBearishSignal or weakBearishSignal
    exitCondition

isEntrySignalShort() =>
    entryCondition = false
    if entrySignalOptionsShort == "None"
        entryCondition := false
    else if entrySignalOptionsShort == "Bearish Strong"
        entryCondition := strongBearishSignal
    else if entrySignalOptionsShort == "Bearish Neutral"
        entryCondition := neutralBearishSignal
    else if entrySignalOptionsShort == "Bearish Weak"
        entryCondition := weakBearishSignal
    else if entrySignalOptionsShort == "Bearish Strong and Neutral"
        entryCondition := strongBearishSignal or neutralBearishSignal
    else if entrySignalOptionsShort == "Bearish Neutral and Weak"
        entryCondition := neutralBearishSignal or weakBearishSignal
    else if entrySignalOptionsShort == "Bearish Strong and Weak"
        entryCondition := strongBearishSignal or weakBearishSignal
    else if entrySignalOptionsShort == "Bearish All"
        entryCondition := strongBearishSignal or neutralBearishSignal or weakBearishSignal
    entryCondition

isExitSignalShort() =>
    exitCondition = false
    if exitSignalOptionsShort == "None"
        exitCondition := false
    else if exitSignalOptionsShort == "Bullish Strong"
        exitCondition := strongBullishSignal
    else if exitSignalOptionsShort == "Bullish Neutral"
        exitCondition := neutralBullishSignal
    else if exitSignalOptionsShort == "Bullish Weak"
        exitCondition := weakBullishSignal
    else if exitSignalOptionsShort == "Bullish Strong and Neutral"
        exitCondition := strongBullishSignal or neutralBullishSignal
    else if exitSignalOptionsShort == "Bullish Neutral and Weak"
        exitCondition := neutralBullishSignal or weakBullishSignal
    else if exitSignalOptionsShort == "Bullish Strong and Weak"
        exitCondition := strongBullishSignal or weakBullishSignal
    else if exitSignalOptionsShort == "Bullish All"
        exitCondition := strongBullishSignal or neutralBullishSignal or weakBullishSignal
    exitCondition

// Strategy logic for entries and exits
if true
    if tradingMode == "Long"
        takeProfitLevelLong = strategy.position_avg_price * (1 + takeProfitPct / 100)
        stopLossLevelLong = strategy.position_avg_price * (1 - stopLossPct / 100)

        if isEntrySignalLong()
            strategy.entry(id = "entry1", direction = strategy.long, alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "entry1",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '"\n}')
        if (takeProfitPct > 0 and close >= takeProfitLevelLong) or (stopLossPct > 0 and close <= stopLossLevelLong) or (exitSignalOptionsLong != "None" and isExitSignalLong())
            strategy.close(id = "entry1", alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "close",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '"\n}')

    else if tradingMode == "Short"
        takeProfitLevelShort = strategy.position_avg_price * (1 - takeProfitPct / 100)
        stopLossLevelShort = strategy.position_avg_price * (1 + stopLossPct / 100)

        if isEntrySignalShort()
            strategy.entry(id = "entry1", direction = strategy.short, alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "entry1",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '"\n}')
        if (takeProfitPct > 0 and close <= takeProfitLevelShort) or (stopLossPct > 0 and close >= stopLossLevelShort) or (exitSignalOptionsShort != "None" and isExitSignalShort())
            strategy.close(id = "entry1", alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "close",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '"\n}')