!v5 היום פיין התקדם ל
הגרסה החדשה של שפת התכנות והמחוונים שלנו מציעה שלל תכונות חדשות ושיפורים מרגשים. פיין הוא כעת חזק מאי פעם
יעזרו לנו לקחת את השפה לרמות חדשות. פוסט זה מציג רק כמה מהתכונות העדכניות ביותר הקיימות; הקפד v5 ושינויים ב
.לקרוא את הערות המהדורה והמדריך להגירה
V5 -ל V4 ממיר
סקריפטים קיימים של פיין המשתמשים בגרסאות קודמות של פיין ימשיכו לפעול ללא שינוי, אך סיפקנו כלי המרה בעורך הפיין
.v5 שלהם ל v4 שיעזור לקודנים להמיר את סקריפט ה
לכן אנו ממליצים להמיר את האינדיקטורים והאסטרטגיות שלך אם ברצונך v5 שיפורים עתידיים בפיין יושקו בלעדית ל
.ליהנות מהתכונות החדשות
:more בעורך מהתפריט הנפתח v4 זמין כאשר טעינת סקריפט v5 -ל v4 כלי ההמרה
באופן אוטומטי. אם אתה נתקל בבעיות המרה או שאתה מעדיף להמיר את v4 שים לב שלא ניתן להמיר את כל קוד ה
.ינחה אותך v5 -ל v4 הסקריפטים באופן ידני, מדריך ההגירה שלנו המתעד את כל השינויים בין
ספריות
.היא ספריות v5 תוספת מרכזית לפיין שמגיעה עם
ספריות הן סוג חדש של פרסום המאפשר לך ליצור פונקציות מותאמות אישית לשימוש חוזר בסקריפטים אחרים
לאחר פרסום ספרייה, סקריפטים אחרים (בין אם זה אינדיקטורים, אסטרטגיות או אפילו ספריות אחרות) יכולים לייבא
אותה ולהשתמש בפונקציות שלה. אתה יכול להשתמש בספריות כדי לכלול אלגוריתמים מורכבים או פונקציות הנמצאות
.בשימוש תכוף, כך שאתה או כל קהילת פיין תוכלו לעשות בהם שימוש חוזר בקלות
כדי להתחיל לעבוד עם הספריות, עיין בדף המדריך למשתמש שלנו בנושא ספריות. בסוף פוסט זה, תוכלו למצוא דוגמאות
.שלנו. תוכל לראות ספריות שפורסמו מתוך עדכון הסקריפט כאן PineCoders לספריות שפורסמו על ידי חברי צוות
ערכים ברירת מחדל עבור פונקציות המוגדרות על ידי המשתמש
שיפור שהולך יד ביד עם ספריות: ניתן להגדיר ערך ברירת מחדל עבור פרמטרים בפונקציות שהוגדרו על ידי המשתמש
customPow () מה שהופך אותם למעשה לאופציונליים. בדוגמה להלן, אנו מכריזים על פונקציה מותאמת אישית
לא מצוין כאשר הפונקציה נקראה, משתמשים ב 2 exp אם .exp המעלה את בסיס הכוח של
.
//@version=5 indicator("") customPow(base, exp = 2) => result = 1 for i = 1 to exp result *= base plot(customPow(11)) // 11^2 plot(customPow(11, 4)) // 11^4
SWITCH
המוכרת. אם פעם היית צריך ליצור עץ גדול של הצהרות if החדשה היא טוויסט של הצהרת ה switch הצהרת ה
.switch אתה תעריך כמה נוח יותר להשיג את התוצאה הרצויה באמצעות if-else
תוכל ללמוד עוד על כך במדריך העזר שלנו. ראה אותו בפעולה בקוד למטה. זהו אינדיקטור הטווח הממוצע האמיתי
.switch המובנה שלנו, שמשתמש כעת בהצהרת Average True Range
:כדי לספק אלגוריתמים מחליקים שונים בחישוביו
//@version=5 indicator(title="Average True Range", shorttitle="ATR", timeframe="") lengthInput = input.int(title="Length", defval=14, minval=1) smoothingInput = input.string(title="Smoothing", defval="RMA", options = ["RMA", "SMA", "EMA", "WMA"]) maFunction(source, length) => switch smoothingInput "RMA" => ta.rma(source, length) "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) => ta.wma(source, length) plot(maFunction(ta.tr(true), lengthInput), title = "ATR", color=#B71C1C)
שרטוט קולקציות
line.all -ו label.all, box.all ,table.all :Pine שיפור איכות חיים משמעותי בעבודה עם שרטוטי
משתני מערך מובנים תמיד מכילים את המזהים של כל השרטוטים מהסוג שצוינו. לפי הסקריפט שלך אתה יכול להשתמש בו
למשל, כדי לקצץ את מספר השרטוטים המוצגים בגרף על בסיס ערך שהוגדר על ידי המשתמש. בסקריפט להלן אנו מותחים
קו בכל פתיחה יומית חדשה (עד גבול של ~ 50, בהתבסס על מגבלת השורות המוגדרת כברירת מחדל של הסקריפט) לאחר
.מכן אנו בודקים אם מספר השורות המותר אם כי חרגת מתשומות הסקריפט ומוחקים את השורה הישנה ביותר אם כן
//@version=5 indicator("Daily Open", overlay = true) qtyOfLinesInput = input.int(10, "Draw only last n lines", minval = 0, maxval = 50) if ta.change(time("1D")) line.new(bar_index, open, bar_index + 1, open, extend = extend.right) if array.size(line.all) > qtyOfLinesInput line.delete(array.get(line.all, 0))
WHILE
או נעשה false יוצר לולאה שתפסיק כשהמצב הוא while היא לולאות. המשפט v5 תכונה נוספת של פיין שמגיעה עם
כדוגמה, הנה אינדיקטור המחשב את ההבדל בין המרחק הממוצע שעלינו להסתכל לאחור כדי למצוא .break שימוש בפקודת
ברים האחרונים. ככל שנצטרך להסתכל אחורה כדי למצוא את הווליום n את הווליום למעלה ולמטה שווה לנפח הכולל של ה
:למעלה או למטה, הערך שלו הוא יותר דובי או שורי
//@version=5 var int MAX_BARS_BACK = 500 indicator("Volume bias", max_bars_back = MAX_BARS_BACK) int lookBackInput = input.int(20, "Volume Look Back (bars)", minval = 2, maxval = int(MAX_BARS_BACK / 4)) // Stop the script if the chart does not contain volume data. bool noVol = na(volume) and nz(math.sum(nz(volume), 200) == 0, true) if noVol runtime.error("No volume data.") volumeBias(lookBack, maxLookBack) => bool barUp = ta.rising(close, 1) bool barDn = ta.falling(close, 1) float upVolume = 0. float dnVolume = 0. float avgVolume = math.sum(nz(volume), lookBack) int[] upBarNos = array.new_int(0) int[] dnBarNos = array.new_int(0) int bar = 1 bool volumeFound = false while (not volumeFound) and bar < maxLookBack if barUp[bar] and upVolume < avgVolume upVolume += nz(volume[bar]) array.push(upBarNos, bar) else if barDn[bar] and dnVolume < avgVolume dnVolume += nz(volume[bar]) array.push(dnBarNos, bar) bar += 1 volumeFound := upVolume >= avgVolume and dnVolume >= avgVolume float volumeBias = bar >= maxLookBack ? na : array.avg(dnBarNos) - array.avg(upBarNos) float bias = volumeBias(lookBackInput, MAX_BARS_BACK) plot(bias, "Volume Bias", bias > 0 ? color.lime : color.fuchsia) hline(0)
מתבצעת עד שהנפח הנדרש נמצא הן בווליום למעלה והן למטה, ולא הסתכלנו לאחור מעבר while לולאת הסקריפט של
.runtime.error () :Pine v5 מספר הברים המרבי המותר. הסקריפט מציג גם תכונה נוספת שנוספה ל
RUNTIME.ERROR ()
מאפשרת כעת לעצור את ביצוע הסקריפט ולהציג הודעת שגיאה בכל מצב שתוכל להגדיר runtime.error () הפונקציה
.בפיין זה יהיה שימושי עבור יוצרי סקריפטים שרוצים למנוע ממשתמשים להשתמש באינדיקטורים שלהם בצורה לא נכונה
היא יכולה לשמש גם ככלי לאיתור באגים לא שגרתיים, כדי לעצור את הביצוע במהלך לולאה או מתוך פונקציה, למשל
.כאשר מתקיימים התנאים שלך runtime.error () לפונקציה call כדי להשתמש בפונקציה החדשה, פשוט צור
כאשר הוא יופעל, הוא יעצור את הסקריפט ויציג את סימן הקריאה המוכר ליד שם המחוון. כאשר משתמשים לוחצים על
סמל סימן הקריאה, תופיע ההודעה שבה השתמשת בקריאת הפונקציה
ויאפ מחושב על סמך הווליום, כך שאם אין נפח, הסקריפט לא יכול VWAP הקוד להלן הוא אינדיקטור מרכיבים בסיסיים ויאפ
ומעלה. חישובים בסיסיים של ויאפ צוברים נתוני ממוצע נע משוקלל D1 לעבוד. השני מופיע כאשר מסגרת הזמן בגרף היא
.בנפח על כל בר חדש ומתאפסים בתחילת יום חדש, כך שהמחוון שימושי רק בטווחי זמן תוך יומיים
//@version=5 indicator("VWAP with custom errors") if na(volume) // Will be true on symbols with no volume data e.g. TVC:SPX runtime.error("There is no volume data for this symbol.") else if timeframe.isdwm // Will be true on 1D and higher timeframes runtime.error("Session-based VWAP does not show meaningful data on timeframes >= 1D. Please switch to a lower timeframe.") plot(ta.vwap)
פרמטרים חדשים לאסטרטגיה
חדשות טובות לאנשי אסטרטגיה! הוספנו קבוצה שלמה של משתנים ופונקציות חדשים המעניקים לך נראות לגבי נכסי מסחר
נתונים סטטיסטיים ומדדים. הערכים שלהם מתעדכנים כאשר אמולטור הברוקר מבצע את ההוראות שלך, כך שתוכל לעקוב
.אחר ערכים ככל שהאסטרטגיה שלך מתקדמת
לחץ כאן כדי לראות את מדריך העזר לפיין לפרטים על כל אחד מהם
strategy.closedtrades.entry_price() / strategy.opentrades.entry_price()
strategy.closedtrades.entry_bar_index() / strategy.opentrades.entry_bar_index()
strategy.closedtrades.entry_time() / strategy.opentrades.entry_time()
strategy.closedtrades.size() / strategy.opentrades.size()
strategy.closedtrades.profit() / strategy.opentrades.profit()
strategy.closedtrades.commission() / strategy.opentrades.commission()
strategy.closedtrades.max_runup() / strategy.opentrades.max_runup()
strategy.closedtrades.max_drawdown() / strategy.opentrades.max_drawdown()
strategy.closedtrades.exit_price()
strategy.closedtrades.exit_bar_index()
שמות חדשים
,הקהילה שלנו של מקודדי פיין אומרת שהם מעריכים את שיעור התוספות חסר התקדים שביצענו לפיין בשנים האחרונות
.ואנו מתכוונים לשמור על אותו קצב בעתיד. אולם זה יוצר זרם קבוע של פונקציות פיין חדשות ומשתנים מובנים
.כדי לתמוך בצמיחה המטורפת הזו, היינו צריכים לארגן טוב יותר את ~ 600 השמות הנוכחיים המשמשים את השפה
עשינו זאת על ידי הוספת מרחבי שמות חדשים על מנת לקבץ פונקציות בדרכים שישקפו טוב יותר את השימוש בהן. שמות
.פרמטרים רבים של פונקציות השתנו גם הם כדי להפוך אותם לקלים יותר להבנה
הכוללת כעת את כל המשתנים והפונקציות הקשורים לניתוח טכני. זה מקל עליך לעיין ta. דוגמה למרחב שמות חדש היא
sma () במדריך העזר ולמצוא את כל המשתנים והפונקציות המחזירים את ערכי האינדיקטורים הנפוצים. בהתאם לכך
אין צורך לזכור את מרחבי השמות החדשים; אם אתה מקליד את השם הישן יותר של פונקציה ללא ta.sma () הוא כעת
(Ctrl + Space, or Cmd + Space on MacOS) מרחב השמות שלן בעורך ולוחץ על מקש הקיצור להשלמה אוטומטית
:יופיע חלון קופץ המציג הצעות תואמות
כך גם בחיפוש במדריך העזר; הקלדת שם פונקציה מוכרת ללא מרחב השמות שלה תביא את שמה החדש. תוכל
.במדריך ההגירה שלנו v5 לראות את רשימת השינויים המלאים ב
ספרים שפורסמו
שעוזרות לנו לבדוק PineCoders על לידי TradingView הפרסומים הבאים הם דוגמאות לספריות שפורסמו ב
:תכונות חדשות של פיין
ColorScheme על ידי RicardoSantos
Matrix_Functions_Lib_JD על ידי Duyck
Enchanced_ta על ידי HeWhoMustNotBeNamed
אנו מקווים שתמצאו את התכונות החדשות שימושיות. ובבקשה המשיכו לתת לנו משוב והצעות – אנו בונים בשבילכם
.ותמיד נשמח לדעת מה דעתכם על עדכוני הפלטפורמה שלנו TradingView את