Web appOpen in Telegram
ببرنامه نویسی در بازار مالی

برنامه نویسی در بازار مالی

@pine_coders · group · Tech · indexed since 2026-05-25
499members
10 627messages in the index
М
mحالا فرقی نمیکنه در تایم فریم 1 دقیقه باشی یا 5 دقیقه داخل 5 دقیقه هم که باشی یا با شرط barstate.isconfirm که دیگه کندل تایید شده میتونی کلوز کندل 5 دقیقه فعلی رو از نماد دوم بگیری یا اینکه با شروع کندل 5 دقیقه ی بعدی میتونی کلوز کندل 5 دقیقه قبلی نماد دوم رو بگیری چیزی که خودم استفاده میکنم مولتی
//@version=5 indicator("5m Close Label", overlay=true) // دریافت زمان بسته شدن کندل در تایم‌فریم جاری و تایم‌فریم ۵ دقیقه current_close_time = time_close(timeframe.period) tf5_close_time = time_close("5") // بررسی اینکه آیا زمان بسته شدن کندل فعلی با کندل ۵ دقیقه همزمان است؟ is_5m_close = (current_close_time == tf5_close_time) // رسم لیبل در صورت برقرار بودن شرط if is_5m_close label.new( x=bar_index, y=close, text=str.tostring(close, format.mintick), color=color.blue, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar, size=size.small )
  1. M
    سلام دوست عزیز ممنون من باب کمک ولی منظورم این نیست شما الان امدم داری کلوز 5 دقیقه همین چارتی که باز هست رو لیبل میکنی کلوز 5 دقیقه چارت جاری که موقع بیاد رو میشه لیبلش کرد من منظورم کلوز نماد دیگه هست مثلا شما رو چارت یورو هسی و میخوای کلوز پوند یا کلوز شاخص دلار رو لیبل کنی اینجاست که گاهی اوقات تاخیر دیتای نماد دوم باعث زده شدن کلوز اصلی نمیشه ببین یه چند خط کد ساده میدم تا منظورمو برسونم
Whole thread · 1 reply →
M
symbol2 = input.symbol("TVC:DXY" , title="Symbol 2", inline = 'Symbol2') [time2 , timeclose2 , open2 , high2 , low2 , close2] = request.security(symbol2 , timeframe.period , [time,time_close,open,high,low,close] , lookahead=barmerge.lookahead_on) if barstate.isconfirmed label.new(bar_index , 1.0001*high , str.tostring(close2) , color = color.black) label.new(bar_index , low , str.tostring(close2[1]) , style = label.style_label_up , color = color.red)
M
ببین اینجا اصلا فارغ از کندل 5 دقیقه در همون تایم 1 دقیقه میخوام کلوز کندل 1 دقیقه نماد دیگه رو لیبل بزنم حالا دو تا حالت لیبل رو زدم یکی موقعی که در چارتی که داخلش هسی کندل 1 دقیقه کامل شده که میشه حالت if barstate.isconfirmed و حالت دوم با شروع هر کندل کلوز کندل قبلی رو بزنه حالا که بازار فارکس تعطیله الان اما شما برو روی بیت کویین که چارت اصلیت btcusdt مثلا بایننس باشه و نماد دوم هم مثلا solusdt مثلا بایبیت رو انتخاب کن حالا این دو تا لیبل رو بزن و تو تایم 1 دقیقه بذار چند دیقه در لایو همینجوری لیبل بزنه بره جلو بدون اینکه دیگه تنظیمات اندیکاتور رو دست بزنی یا چارت رو رفرش کنی حالا لیبل هایی که میزنه رو خودت مقایسه کن با یه سیستم دیگه که نماد solusdt بای بیت باشه یه چند دیقه که بگذره میبینی بعضی لیبل هایی که داره میزنه با اون کلوز قیمتی که خودت داری میبینی متفاوت هست
M
File
Untitled.jpg · 919 KB · click to show
  1. M
    این عکس رو ببین چارت چپی بیتکوین هست که من لیبل کلوز نماد solusdt رو روش زدم مثلا ساعت 10:31 کلوز نماد sol رو به من داده 76.73 در حالی که روی خود چارت sol کلوزش 76.75 هست و این بخاطر همین تاخیر در ارسال دیتا به تریدینگ ویو میتونه باشه و یا اینکه در لحظه ی آخر در sol یه تیک قیمتی آمده ولی چون در بیتکوین نیومده اسکریپت اجرا نشده که اون رو بخونه 40 دیقه طول کشید تا یه عکس 1 مگی لود بشه 😂😂
    1. М
      //@version=5 indicator("5m Close Label for Another Symbol", overlay=true) // ۱. دریافت نماد مورد نظر از بخش تنظیمات (پیش‌فرض روی قرارداد دائمی دوج کوین تنظیم شده است) target_symbol = input.symbol("BINANCE:DOGEUSDT.P", title="Target Symbol (e.g., DOGE)") // ۲. دریافت قیمت کلوز نماد دوم در تایم‌فریم ۵ دقیقه target_close = request.security(target_symbol, "5", close) // ۳. دریافت زمان بسته شدن کندل در تایم‌فریم جاری و تایم‌فریم ۵ دقیقه current_close_time = time_close(timeframe.period) tf5_close_time = time_close("5") // ۴. بررسی اینکه آیا الان دقیقاً زمان بسته شدن کندل ۵ دقیقه است؟ is_5m_close = (current_close_time == tf5_close_time) // ۵. رسم لیبل در صورت برقرار بودن شرط if is_5m_close // ساخت متن لیبل که هم اسم نماد و هم قیمت را نشان دهد label_text = target_symbol + "\n" + str.tostring(target_close, format.mintick) label.new( x=bar_index, // لیبل بالای کندل چارت فعلی (مثلاً بیت‌کوین) قرار می‌گیرد y=high, text=label_text, color=color.orange, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar, size=size.small )
      1. M
        هنوز هم متوجه نشدی من مشکلم چی هست 😂😂😂 من مشکل اینو ندارم که بخوام تایم 1 دقیقه و 5 دقیقه رو هماهنگ کنم که کلوز 5 دقیقه نماد دوم رو بگیرم چیزی که شما داری میفرستی فکر میکنی من مشکلم با هماهنگی تایم 1 دقیقه و 5 دقیقه هست ولی این جوری نیست مشکل اینه کلوزی که میده کلوز آخرین تیک قیمتی نماد دوم نیست همیشه حتی شما داری روی آخرین دقیقه کندل 5 دقیقه از اولش شروع به لیبل زدن میکنی مثلا اگه کندل 5 دقیقه از دقیقه 20 شروع بشه دقیقه آخرش در 1 دقیقه میشه دقیقه 24 حالا شما میای میگی اگه به دقیقه 24 رسیدی کلوز نماد دوم رو لیبل بزن من خودم حتی گفتم اگه همون دقیقه 24 هم که به انتها رسید لیبل بزن ولی مشکل اینا نیست مشکل اینه فرض کن آخرین تیک قیمتی مثلا بیتکوین برای همین کندل 5 دقیقه ساعت 7:24:59:800 باشه و آخرین تیک قیمتی نماد دوم ساعت 7:24:59:900 زده شده و تیک قبلیش هم مثلا 7:24:59:700 زده شده . حالا شما که با همچین request.security(target_symbol, "5", close) دستوری داری کلوز نماد دوم رو میگیری و داری از شروع دقیقه 7:24:00 لیبل میزنی یعنی داری از اولین تیک قیمتی بیتکوین در دقیقه 7:24:00 شروع به لیبل زدن کلوز نماد دوم میکنی حالا اسکریپت داره روی هر تیک قیمتی که برای بیتکوین میاد در لایو یکبار اجرا میشه حالا میرسی به زمان 7:24:59:800 که آخرین تیک قیمتی بیتکوین زده شده و اسکریپت یبار اجرا میشه در این لحظه کلوزی که از نماد دوم داره لیبل زده میشه مربوط به زمان 7:24:59:700 هست حالا تیک بعدی بیتکوین وارد 5 دقیقه جدید میشه و مثلا در ساعت 7:25:00:100 زده میشه و در این لحظه دیگه شرط زمان برقرار نیست که بخواد دوباره لیبل زده بشه پس لیبلی که زده شده بود مربوط به کلوزی از نماد دوم هست که در زمان 7:24:59:700 بوده و نه آخرین کلوزش که در زمان 7:24:59:900 زده شده چون اسکریپت داره روی هر تیک قیمتی از چارتی که درونش هستی اجرا میشه و نه با تیک قیمتی که در نماد دوم زده میشه امیدوارم متوجه منظورم شده باشی دیگه واضح تر از این نمیشه گفت 😂😂
Whole thread · 4 replies →
М
راه‌حل قطعی: دور زدن مشکل با استراتژی «نگاه به عقب» (Retrospective) ​برای حل این مشکل نباید دنبال شکار تیک آخر در زمان حال باشیم. باید صبر کنیم کندل ۵ دقیقه کاملاً بسته بشه، و به محض اینکه اولین تیکِ کندل ۵ دقیقه بعدی خورد (مثلاً ساعت 7:25:00:100)، بریم دیتای تایید شده و نهاییِ ۵ دقیقه قبلی دوج کوین (که دیگه سرور تریدینگ‌ویو پرونده‌اش رو بسته) بگیریم و لیبل رو یک کندل به عقب (bar_index - 1) یعنی روی همون کندل 7:24 چاپ کنیم! ​این کد دقیقاً همین ایده رو پیاده می‌کنه: //@version=5 indicator("Exact 5m Close Label", overlay=true) target_symbol = input.symbol("BINANCE:DOGEUSDT.P", title="Target Symbol") // ۱. گرفتن قیمت کلوز "تایید شده و بسته شده" کندل ۵ دقیقه قبلی نماد دوم // استفاده از close[1] در تایم ۵ دقیقه به ما گارانتی میده که آخرین تیک قیمتی دوج کوین در ۵ دقیقه قبلی رو بدون یک صدم ثانیه خطا گرفتیم target_close_history = request.security(target_symbol, "5", close[1]) // ۲. تشخیص اینکه آیا وارد یک بازه ۵ دقیقه‌ای جدید شدیم؟ // این شرط فقط روی اولین تیک کندل جدید (مثلا 7:25:00) مقدار true میده is_new_5m = ta.change(time("5")) // ۳. رسم لیبل به صورت نگاه به عقب if is_new_5m label_text = target_symbol + "\n" + str.tostring(target_close_history, format.mintick) label.new( x = bar_index - 1, // برمی‌گردیم به یک کندل قبل (دقیقه 24 در چارت یک دقیقه) y = high[1], // سقف همون کندل قبلی برای جایگذاری لیبل text = label_text, color = color.purple, textcolor = color.white, style = label.style_label_down, yloc = yloc.abovebar, size = size.small )
  1. M
    اول اینکه که این ایده رو هم خودم بالاتر گفتم 😜 ثانیا الان این کد یه مشکلی داره و نباید این تابع چنج is_new_5m = ta.change(time("5")) رو روی time نماد اصلی که داخلشی بزنی باید بگی هر موقع time نماد دومی تغییر کرد اونوقت دیتا رو بده حالا اینش به کنار اینم در شرایطی که مثلا نماد دوم وارد گپ زمانی بشه ولی نماد اول دیتا داشته باشه کلوز کندل 5 دقیقه ای که شکل گرفته رو نمیده و یه کندل قبلتر رو میده چون در این روش ما داریم با شروع هر کندل 5 دقیقه جدید کلوز کندل 5 دقیقه قبلی رو میگیریم حالا فرض کن نماد دوم از کندل 5 دقیقه 7:20 تا 7:25 فقط سه دقیقه اولش رو داشته باشه و وارد گپ زمانی بشه به هر دلیلی حالا تا یه دیتای جدید از نماد دوم نیاد کلوز این کندل 5 دقیقه ای که ناقص هست و سه دقیقه هست نمیاد و کلوزی که میده مال کندل 5 دقیقه ای ماقبلش هست بذار یه مثال واضحش رو بگم فرض کن تایم بالا بجای 5 دقیقه 1 ساعته هست نماد شاخص دلار هر روز ساعت 18:04 بسته میشه و ساعت 19:45 باز میشه یعنی کندل 1 ساعته 18 تا 19 شاخص دلار در واقع 4 دقیقه هست و کلوز 1 ساعتش میشه همون کلوزی کندل ساعت 18:04 حالا اگه من بخوام از این روش استفاده کنم برای گرفتن کلوز 1 ساعته تا یه کندل جدید مربوط به ساعت 19 تا 20 زده نشده باشه این روش نمیتونه کلوز کندل 1 ساعته ی 18 تا 19 رو که در واقع 4 دقیقه هست رو بده یعنی ساعت 19:45 که تازه اولین دیتای نماد دوم میاد تازه میگه کلوز کندل قبلی نماد دوم چی هست در حالی که من میخوام در ساعت 19 که در نماد اصلی دیتا دارم کلوز اون 1 ساعته رو داشته باشم حتی اگرم از تابع چنج برای تایم نماد اصلی استفاده کنیم که هر موقع time نماد اصلی عوض شد کلوز نماد دوم رو بده بازم چون هنوز از نماد دوم دیتای جدید نیومده که اون کندل های 18 تا 18:04 بشه مثلا close[1] داره کلوز 1 ساعته ی قبل تری که میشه 17 تا 18 رو میده😂😂😂 خیلی راه کار امتحان کردم ولی هر کدوم یه جایی به مشکل میخوره
Whole thread · 1 reply →
M
M
یه ایده دیگه هم داشتم و این بود که بجای اینکه داخل خود تابع رکوئست سکیوریتی از close[1] استفاده کنم از خود close استفاده کنم و مثلا اسمش رو گذاشتم close2 حالا برا لیبل بگم لیبل کنه close2[1] و بعد با مثلا سه چهار تیک تاخیر در کندل 5 دقیقه جدید بگم حالا لیبل بزن ولی اینم جواب نداد😜😂
    1. M
      😂😂😂 این چیزی که میگم صرفا برا 5 دقیقه نیست چون مولتی تایم دارم کار میکنم چندین نوع تایم بالا دارم مثلا 4 ساعته و 1 ساعته و 15 دقیقه و 5 دقیقه و 1 دقیقه کلا سیستمی که نوشتم یه خرده طولانیه حدود 2700 خط کد شده یه جورایی تموم شده هستا ولی این ایراد بیخود رو چند روزه دیدم رفته رو مخم
        1. M
          😂😂😂 دست شما درد نکنه من خودمم بعضی موقع داخلش گیج میشم 😂😂😂
        2. M
          یه ایده جدید به ذهنم رسید بنظرم اوکی هست و هنوز حالتی که یه جای دیگشو خراب کنه پیدا نکردم😜😜😜
          1. М
            اینا را باید ببینید برایندش چیه وینریتش چقدره و ریسک به ریوارش چقدره حالا شما یک میلیون کد خط بنویس ارزش نداره
            1. M
              الان بحث اجرا شدن چیزی که میخواستم بود اصلا کاری به اون قضیه داستان ندارم اون بحثسش به کنار اول باید کدت درست و با دیتای درست کار کنه که بدونی چی به چیه
                1. M
                  ممنون و همچنین 🌹🌹🌹
Whole thread · 9 replies →
M
تنها چیزی که فعلا جواب میده این هست که مثلا بعد از اینکه لیبل زده شد یبار یا صفحه چارت رو رفرش کنیم یا یه چیزی داخل اندیکاتور رو تغییر بدیم که اسکریپت دوباره اجرا بشه چون اینجوری دیگه از دیتای گذشته استفاده میکنه دیگه مثل لایو نیست و در گذشته قیمت در هر کندل یبار اجرا میشه
  1. M
    اره دیگه باید یه سیستم معاملاتی ، یه ایده ای باشه وگرنه من بخوام صرفا دقیق کلوز یه کندل رو بگیرم که بدردم نمیخوره 😜
Whole thread · 1 reply →

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · What we do not do · Remove a page · Catalog · Search · How we count