جداول اشیاء هستند که می توانند برای قرار دادن اطلاعات در مکان های خاص و ثابت در فضای بصری یک اسکریپت استفاده شوند. برخلاف سایر توطئه ها یا اشیاء ترسیم شده در اسکریپت کاج ™ ، جداول به میله های خاص لنگر نمی روند. آنها در فضای یک اسکریپت ، چه در حالت روکش و چه در صفحه ، در مطالعات یا استراتژی ها ، به طور مستقل از میله های نمودار مشاهده می شوند یا فاکتور بزرگنمایی استفاده می شود.
جداول حاوی سلولهایی هستند که در ستون ها و ردیف ها مرتب شده اند ، دقیقاً مانند صفحه گسترده. آنها در دو مرحله مجزا ایجاد و جمع می شوند:
- ساختار جدول و ویژگی های کلیدی با استفاده از Table. new () تعریف شده است ، که یک شناسه جدول را برمی گرداند که مانند یک نشانگر به جدول عمل می کند ، دقیقاً مانند برچسب ، خط یا آرایه شناسه ها. Table. New () تماس با جدول جدول ایجاد می کند اما آن را نمایش نمی دهد.
- پس از ایجاد ، و برای نمایش آن ، جدول باید با استفاده از یک جدول. cell () برای هر سلول جمع شود. سلولهای جدول می توانند حاوی متن باشند ، یا نه. این مرحله دوم زمانی است که عرض و ارتفاع سلول ها تعریف می شوند.
بیشتر ویژگی های یک جدول که قبلاً ایجاد شده است با استفاده از توابع تنظیم کننده جدول. _*() قابل تغییر است. ویژگی های سلولهای قبلاً پرجمعیت را می توان با استفاده از توابع Table. cell_set _*() اصلاح کرد.
یک جدول در فضای یک نشانگر با لنگر انداختن آن به یکی از نه مرجع قرار می گیرد: چهار گوشه یا نقاط میانی ، از جمله مرکز. جداول با گسترش جدول از لنگر آن قرار می گیرند ، بنابراین یک میز که به موقعیت لنگر می رود. مرجع middle_right با گسترش ، پایین و سمت چپ از آن لنگر ترسیم می شود.
دو حالت برای تعیین عرض/ارتفاع سلول های جدول در دسترس است:
- یک حالت اتوماتیک پیش فرض ، عرض/ارتفاع سلول ها را در یک ستون/ردیف با استفاده از وسیع ترین/بالاترین متن موجود در آنها محاسبه می کند.
- یک حالت صریح به برنامه نویسان اجازه می دهد تا با استفاده از درصدی از فضای x/y موجود ، عرض/ارتفاع سلول ها را تعریف کنند.
محتوای جدول نمایش داده شده همیشه نشان دهنده آخرین وضعیت جدول است ، همانطور که در آخرین اجرای اسکریپت ، در آخرین نوار مجموعه داده ها ترسیم شده است. برخلاف مقادیر نمایش داده شده در پنجره داده یا در مقادیر شاخص ، محتوای متغیر نمایش داده شده در جداول بنابراین تغییر نمی کند زیرا کاربر اسکریپت نشانگر خود را بر روی میله های نمودار خاص حرکت می دهد. به همین دلیل ، به شدت توصیه می شود که همیشه اجرای همه جدول را محدود کنید.*() به اولین یا آخرین میله های مجموعه داده فراخوانی می شود. بر این اساس:
- برای اعلام جداول از کلمه کلیدی VAR استفاده کنید.
- تمام تماس های دیگر را در داخل یک بلوک ifbarstate. islast محصور کنید.
می توان از چندین جدول در یک اسکریپت استفاده کرد، به شرطی که هر کدام در موقعیت متفاوتی لنگر انداخته باشند. هر شی جدول با شناسه خاص خود شناسایی می شود. محدودیت های تعداد سلول ها در همه جداول با تعداد کل سلول های استفاده شده در یک اسکریپت تعیین می شود.
ایجاد جداول
هنگام ایجاد جدول با استفاده از table. new()، سه پارامتر اجباری است: موقعیت جدول و تعداد ستون ها و ردیف های آن. پنج پارامتر دیگر اختیاری هستند: رنگ پس زمینه جدول، رنگ و عرض کادر بیرونی جدول، و رنگ و عرض حاشیه های اطراف همه سلول ها، به استثنای قاب بیرونی. تمام ویژگی های جدول به جز تعداد ستون ها و ردیف های آن را می توان با استفاده از توابع تنظیم کننده تغییر داد: table. set_position()، table. set_bgcolor()، table. set_frame_color()، table. set_frame_width()، table. set_border_color() و table. set_border_width().
جداول را می توان با استفاده از table. delete() حذف کرد و محتوای آنها را می توان به صورت انتخابی با استفاده از table. clear() حذف کرد.
هنگام پر کردن سلول ها با استفاده از ()table. cell، باید یک آرگومان برای چهار پارامتر اجباری ارائه کنید: شناسه جدولی که سلول به آن تعلق دارد، فهرست ستون و ردیف آن با استفاده از شاخص هایی که از صفر شروع می شوند، و رشته متنی سلول حاوی، که می تواندپوچ باشدهفت پارامتر دیگر اختیاری هستند: عرض و ارتفاع سلول، ویژگی های متن (رنگ، تراز افقی و عمودی، اندازه)، و رنگ پس زمینه سلول. تمام ویژگی های سلول را می توان با استفاده از توابع تنظیم کننده تغییر داد: table. cell_set_text()، table. cell_set_width()، table. cell_set_height()، table. cell_set_text_color()، table. cell_set_text_halign()، table. cell_set_text_valign()، table. cell_set_text_size() و table. cell_set_bgcolor().
به خاطر داشته باشید که هر فراخوانی متوالی به ()table. cell تمام خصوصیات سلول را مجدداً تعریف می کند و هر خصوصیت تنظیم شده توسط ()table. cell قبلی در همان سلول را حذف می کند.
قرار دادن یک مقدار در یک موقعیت ثابت¶
بیایید اولین جدول خود را ایجاد کنیم، که مقدار ATR را در گوشه سمت راست بالای نمودار قرار می دهد. ابتدا یک جدول تک سلولی ایجاد می کنیم، سپس آن سلول را پر می کنیم:
//@نسخه=5 نشانگر("ATR", "", درست است، واقعی) // ما از «var» فقط برای مقداردهی اولیه جدول در نوار اول استفاده می کنیم. جدول var atrDisplay = جدول. جدید(position. بالا_راست, 1, 1) // ما «ta. atr()» را خارج از بلوک «if» صدا می زنیم تا در هر نوار اجرا شود. myAtr = ta. atr(14) if barstate. islast // ما فقط جدول را در آخرین نوار پر می کنیم. جدول. سلول(atrDisplay, 0, 0, str. tostring(myAtr)) 
- هنگام ایجاد جدول با ()table. new از کلمه کلیدی var استفاده می کنیم.
- ما سلول را درون یک بلوک Ifbarstate. islast با استفاده از Table. Cell () جمع می کنیم.
- هنگام جمع آوری سلول ، عرض یا ارتفاع را مشخص نمی کنیم. از این رو عرض و ارتفاع سلول ما به طور خودکار با متن موجود در آن تنظیم می شود.
- ما قبل از ورود به بلوک IF ما با TA. ATR (14) تماس می گیریم تا در هر نوار ارزیابی شود. اگر ما از Str. ToString (ta. atr (14)) در داخل بلوک استفاده می کردیم ، این عملکرد به درستی ارزیابی نمی شد زیرا بدون محاسبه مقادیر لازم از میله های قبلی ، در آخرین نوار داده فراخوانی می شود.
بیایید قابلیت استفاده و زیبایی های فیلمنامه خود را بهبود بخشیم:
//@نسخه=5 نشانگر("ATR", "", درست است، واقعی) قصور = input. int(14, "دوره ATR", نقره = 1, نوک ابزار = "با استفاده از یک دوره 1 محدوده واقعی.") جدول var atrDisplay = جدول. جدید(position. بالا_راست, 1, 1, BGCOLOR = رنگ, پهنای قاب = 2, رنگ قاب = رنگ سیاه) myAtr = ta. atr(قصور) if barstate. islast جدول. سلول(atrDisplay, 0, 0, str. tostring(myAtr, format. mintick), text_color = رنگ سفید) 
- ما از Table. New () برای تعریف رنگ پس زمینه ، رنگ قاب و عرض آن استفاده کردیم.
- هنگام جمع آوری سلول با Table. Cell () ، متن را به رنگ سفید تنظیم می کنیم.
- ما Format. Mintick را به عنوان یک آرگومان دوم به عملکرد STR. ToString () منتقل می کنیم تا دقت ATR را به دقت کنه نمودار محدود کنیم.
- اکنون ما از ورودی استفاده می کنیم تا کاربر اسکریپت بتواند دوره ATR را مشخص کند. این ورودی همچنین شامل یک ابزار ابزار است که کاربر می تواند هنگام شناور از نماد "I" در برگه "تنظیمات/ورودی های اسکریپت" ، ببیند.
رنگ آمیزی پس زمینه نمودار
این مثال از یک جدول یک سلولی برای رنگ آمیزی پیش زمینه نمودار در حالت گاو نر/خرس RSI استفاده می کند:
//@نسخه=5 نشانگر("پس زمینه نمودار", "", درست است، واقعی) دارای قارچ = input. color(color. new(Color. green, 95), "گاو", درون خطی = "1") کله پاچه = input. color(color. new(رنگ, 95), "خرس", درون خطی = "1") // ————— - نمودار رنگهای عملکرد BG در حالت RSI Bull/Bear. کلوچه(قارچ, خرس) => جدول var قابل قبول = جدول. جدید(موقعیت. middle_center, 1, 1) شناور r = ta. rsi(بستن, 20) رنگ BGCOLOR = r > 50 ? قارچ : r 50 ? خرس : na if barstate. islast جدول. سلول(قابل قبول, 0, 0, عرض = 100, قد = 100, BGCOLOR = BGCOLOR) کلوچه(دارای قارچ, کله پاچه) - ما ورودی هایی را در اختیار کاربران قرار می دهیم که به آنها امکان می دهد رنگ های گاو نر/خرس را برای استفاده از پس زمینه مشخص کنند و آن رنگ های ورودی را به عنوان آرگومان به عملکرد F_ColorChartbg () ما ارسال کنند.
- ما فقط یک بار یک جدول جدید ایجاد می کنیم ، با استفاده از کلمه کلیدی VAR برای اعلام جدول.
- ما فقط در آخرین نوار از Table. Cell () استفاده می کنیم تا خصوصیات سلول را مشخص کنیم. ما سلول را عرض و ارتفاع فضای نشانگر می سازیم ، بنابراین کل نمودار را پوشش می دهد.
ایجاد صفحه نمایش صفحه نمایش
جداول برای ایجاد پانل های صفحه نمایش پیشرفته ایده آل است. آنها نه تنها این امکان را برای پانل های صفحه نمایش همیشه در یک موقعیت ثابت فراهم می کنند ، بلکه قالب بندی انعطاف پذیر تری را ارائه می دهند زیرا خصوصیات هر سلول به طور جداگانه کنترل می شود: پس زمینه ، رنگ متن ، اندازه و تراز و غیره.
در اینجا ، ما یک صفحه نمایش اصلی ایجاد می کنیم که مقدار انتخاب شده توسط کاربر مقادیر MAS را نشان می دهد. ما دوره آنها را در ستون اول نمایش می دهیم ، سپس مقدار آنها با پس زمینه سبز/قرمز/خاکستری که با توجه به موقعیت قیمت با توجه به هر MA متفاوت است. هنگامی که قیمت بالاتر از/زیر MA است ، پس زمینه سلول با رنگ گاو نر/خرس رنگی می شود. هنگامی که MA بین نوار فعلی باز و بسته می شود ، زمینه سلول از رنگ خنثی است.

//@نسخه=5 نشانگر("قیمت در مقابل ما", "", درست است، واقعی) رشته var GP1 = "میانگین حرکت" در نظر گرفتن ماکسینوپی = input. int(20, "تعداد", نقره = 1, حداکثر = 40, گروه = GP1, نوک ابزار = "1-40") در نظر گرفتن ماسه سنگ = input. int(20, "دوره ها از" آغاز می شوند, نقره = 2, حداکثر = 200, گروه = GP1, نوک ابزار = "2-200") در نظر گرفتن ماسه = input. int(20, "دوره ها توسط", نقره = 1, حداکثر = 100, گروه = GP1, نوک ابزار = "1-100") رشته var GP2 = "نمایش دادن" رشته جدول جدول = input. string("بالا", "موقعیت پانل", درون خطی = "11", گزینه ها = ["بالا", "میانه", "پایین"], گروه = GP2) رشته teamexposinput = input. string("درست", "", درون خطی = "11", گزینه ها = ["ترک کرد", "مرکز", "درست"], گروه = GP2) رنگ دارای قارچ = input. color(color. new(Color. green, 30), "گاو", درون خطی = "12", گروه = GP2) رنگ کله پاچه = input. color(color. new(رنگ, 30), "خرس", درون خطی = "12", گروه = GP2) رنگ بی طرفی = input. color(color. new(رنگ, 30), "خنثی", درون خطی = "12", گروه = GP2) جدول var تابلو = جدول. جدید(جدول جدول + "_" + teamexposinput, 2, ماکسینوپی + 1) if barstate. islast // هدر جدول. جدول. سلول(تابلو, 0, 0, "ما", BGCOLOR = بی طرفی) جدول. سلول(تابلو, 1, 0, "ارزش", BGCOLOR = بی طرفی) در نظر گرفتن دوره زمانی = ماسه سنگ برای i = 1 to ماکسینوپی // ————— در هر نوار با ماس تماس بگیرید. شناور ma = ta. sma(بستن, دوره زمانی) // ————— فقط کد جدول را در آخرین نوار اجرا کنید. if barstate. islast // دوره در ستون سمت چپ. جدول. سلول(تابلو, 0, i, str. tostring(دوره زمانی), BGCOLOR = بی طرفی) // اگر MA بین باز و نزدیک است ، از رنگ خنثی استفاده کنید. اگر نزدیکتر از MA پایین تر/بالاتر است ، از رنگ گاو نر/خرس استفاده کنید. BGCOLOR = بستن > ma ? باز کن ma ? بی طرفی : دارای قارچ : باز کن > ma ? بی طرفی : کله پاچه // مقدار MA در ستون سمت راست. جدول. سلول(تابلو, 1, i, str. tostring(ma, format. mintick), text_color = رنگ سیاه, BGCOLOR = BGCOLOR) دوره زمانی += ماسه - کاربران می توانند موقعیت جدول را از ورودی ها و همچنین رنگهای گاو نر/خرس/خنثی برای پس زمینه سلولهای ستون سمت راست انتخاب کنند.
- مقدار ردیف جدول با استفاده از تعداد MAS که کاربر برای نمایش انتخاب می کند تعیین می شود. ما یک ردیف را برای هدر ستون ها اضافه می کنیم.
- حتی اگر سلول های جدول را فقط در آخرین نوار جمع می کنیم ، باید تماس های TA. SMA () را در هر نوار انجام دهیم تا آنها نتایج صحیحی کسب کنند. هشدار کامپایلر که هنگام تهیه کد ظاهر می شود ، می تواند با خیال راحت نادیده گرفته شود.
- ما ورودی های خود را در دو بخش با استفاده از گروه جدا می کنیم و با استفاده از Inline به موارد مربوطه در همان خط می پیوندیم. ما وسایل ابزار را برای مستند سازی محدوده زمینه های خاص با استفاده از Tooltip تهیه می کنیم.
نمایش یک نقشه گرما
پروژه بعدی ما یک نقشه گرما است که نشان دهنده رابطه گاو نر/خرس قیمت فعلی نسبت به مقادیر گذشته آن است. برای انجام این کار ، ما از یک جدول مستقر در پایین نمودار استفاده خواهیم کرد. ما فقط رنگ ها را نمایش خواهیم داد ، بنابراین جدول ما حاوی متنی نخواهد بود. ما به سادگی زمینه سلولهای آن را برای تولید نقشه گرمایشی خود رنگ خواهیم کرد. Heatmap از یک دوره جستجوگر قابل انتخاب کاربر استفاده می کند. در آن دوره حلقه می زند تا مشخص شود قیمت بالاتر از هر نوار در آن گذشته است ، و شدت به تدریج سبک تر از رنگ گاو/خرس را نشان می دهد ، همانطور که در گذشته بیشتر می رویم:

//@نسخه=5 نشانگر("قیمت در مقابل گذشته", "", درست است، واقعی) var int max_lookback = 300 در نظر گرفتن بازپرداخت = input. int(150, نقره = 1, حداکثر = max_lookback, گام = 10) رنگ دارای قارچ = input. color(#00ff00ff, "گاو", درون خطی = "11") رنگ کله پاچه = input. color(#ff0080ff, "خرس", درون خطی = "11") // ————— عملکرد یک نقشه گرما را نشان می دهد که موقعیت فعلی `_src` را نسبت به مقادیر گذشته` _lookback` نشان می دهد. نقشه کش(SRC, به عقب نگاه کن) => // float src: سری قیمت ارزیابی شده. // int Lookback: تعداد میله های گذشته ارزیابی شده است. // وابستگی: max_lookback // بافر تاریخی را به اندازه کافی مجبور کنید. max_bars_back(SRC, max_lookback) // فقط کد جدول را در آخرین نوار اجرا کنید. if barstate. islast قارچ نقشه حرارت = جدول. جدید(موقعیت. bottom_center, به عقب نگاه کن, 1) برای i = 1 to بازپرداخت شناور ترانس = 100. * i / به عقب نگاه کن if SRC > SRC[i] جدول. سلول(نقشه حرارت, به عقب نگاه کن - i, 0, BGCOLOR = color. new(دارای قارچ, ترانس)) دیگر جدول. سلول(نقشه حرارت, به عقب نگاه کن - i, 0, BGCOLOR = color. new(کله پاچه, ترانس)) نقشه کش(عالی, بازپرداخت) - ما یک دوره برگشت حداکثر را به عنوان ثابت Max_lookback تعریف می کنیم. این یک مقدار مهم است و ما از آن برای دو هدف استفاده می کنیم: برای مشخص کردن تعداد ستون هایی که در جدول یک ردیف خود ایجاد خواهیم کرد ، و برای مشخص کردن دوره بازگشت مورد نیاز برای آرگومان _SRC در عملکرد خود ، به طوری که ما اسکریپت کاج را مجبور کنیم™ برای ایجاد یک اندازه بافر تاریخی که به ما امکان می دهد به مقدار مورد نیاز مقادیر گذشته _SRC در حلقه ما مراجعه کنیم.
- ما امکان پیکربندی رنگ های گاو نر/خرس را در ورودی ها به کاربران ارائه می دهیم و از درون خطی استفاده می کنیم تا انتخاب رنگ را در همان خط قرار دهیم.
- در داخل عملکرد ما ، ما کد ایجاد جدول خود را در یک ساختار ifbarstate. islast محصور می کنیم تا فقط در آخرین نوار نمودار اجرا شود.
- اولیه سازی جدول در بیانیه IF انجام می شود. به همین دلیل و این واقعیت که از کلمه کلیدی VAR استفاده می کند ، اولیه سازی فقط اولین بار است که اسکریپت در آخرین نوار اجرا می شود. توجه داشته باشید که این رفتار با اعلامیه های معمول VAR در دامنه جهانی اسکریپت ، جایی که اولیه سازی در اولین نوار مجموعه داده ، در BAR_INDEX ZERO انجام می شود ، متفاوت است.
- ما آرگومان پارامتر متن را در جدول ما مشخص نمی کنیم. تماس () () از یک رشته خالی استفاده می شود.
- ما شفافیت خود را به گونه ای محاسبه می کنیم که با پیش رفتن بیشتر در تاریخ ، شدت رنگ ها کاهش می یابد.
- ما از تولید رنگ پویا برای ایجاد شفافیت های مختلف از رنگ های پایه خود در صورت لزوم استفاده می کنیم.
- برخلاف سایر اشیاء نمایش داده شده در اسکریپت های کاج ، سلولهای این نقشه گرما به میله های نمودار مرتبط نیستند. دوره پیکربندی پیکربندی شده تعیین می کند که تعداد سلول های جدول دارای تعداد سلول های میز است و نقشه گرما تغییر نمی کند زیرا نمودار به صورت افقی یا مقیاس بندی می شود.
- حداکثر تعداد سلول هایی که می توانند در فضای بصری SCRITP نمایش داده شوند به وضوح دستگاه مشاهده شما و بخشی از صفحه نمایش مورد استفاده در نمودار شما بستگی دارد. صفحه نمایش با وضوح بالاتر و ویندوزهای گسترده تر امکان نمایش سلولهای جدول بیشتری را فراهم می کند.
نکات¶
- هنگام ایجاد جداول در اسکریپت های استراتژی ، به خاطر داشته باشید که مگر اینکه استراتژی از calc_on_every_tick = true استفاده کند ، کد جدول محصور شده در IFBarState. islast در هر به روزرسانی در زمان واقعی اجرا نمی شود ، بنابراین جدول همانطور که انتظار دارید نمایش داده نمی شود.
- به خاطر داشته باشید که تماس های پی در پی به Table. Cell () خصوصیات سلول مشخص شده توسط جدول قبلی را بازنویسی کنید. تماس تلفنی (). از توابع تنظیم کننده برای تغییر خصوصیات سلول استفاده کنید.
- به یاد داشته باشید که با محدود کردن آن فقط در میله های لازم ، اجرای کد جدول خود را عاقلانه کنترل کنید. این باعث صرفه جویی در منابع سرور می شود و نمودارهای شما سریعتر نمایش داده می شوند ، بنابراین همه برنده می شوند.
تجارت گزینه های دودویی در ایران...
ما را در سایت تجارت گزینه های دودویی در ایران دنبال می کنید
برچسب :
نویسنده : زینالعابدین مراغهای
بازدید : <-PostHit->
تاريخ : دوشنبه
2 مرداد
1402 ساعت: 10:56