אינדיקטור ה-TradingView שלך מציג אותות שנעלמים על בר סגור? או ש-RSI מייצר דיברג'נסים שגויים? תיקנו את הבעיות האלה עשרות פעמים. פיתוח ב-Pine Script הוא מאתגר בגלל repainting, מגבלות סדרות וביצועים. לצוות שלנו יש ניסיון של 10+ שנים במסחר אלגוריתמי וב-Web3, עם 50+ פרויקטים מוצלחים. יישמנו מעל 50 אינדיקטורים ואסטרטגיות ל-TradingView, כולל מערכות מורכבות עם מסגרות זמן מרובות. המומחיות שלנו משתרעת על כל גרסאות Pine Script, עם דגש על מהירות וביטול repainting. אנו מקבלים הזמנות בכל רמת מורכבות: מממוצעים פשוטים ועד מערכות עם מסגרות זמן מרובות. מחיר קבוע החל מ-$500 עם חיסכון אופייני של 30% בהשוואה לשוק.
לפי התיעוד הרשמי של Pine Script v5, הסקריפט רץ על כל בר ברצף.
איך סקריפט עובד ב-Pine Script v5
//@version=5
indicator("My Indicator", shorttitle="MI", overlay=true, max_bars_back=500)
// Настраиваемые параметры
length = input.int(14, "Period", minval=1, maxval=200)
source = input.source(close, "Source")
show_signals = input.bool(true, "Show Signals")
// Вычисления на каждом баре
ema_line = ta.ema(source, length)
// Визуализация
plot(ema_line, "EMA", color=color.blue, linewidth=2)
// Операции с сериями
prev_close = close[1] // предыдущий бар
two_bars_ago = close[2]
is_bullish = close > open // true/false для каждого бара
rising = close > close[1] and close[1] > close[2]
ההבדל המרכזי: הסקריפט רץ על כל בר משמאל לימין. משתנים אינם סקלרים אלא סדרות. //@version=5 indicator("My Indicator", shorttitle="MI", overlay=true, max_bars_back=500) // Настраиваемые параметры length = input.int(14, "Period", minval=1, maxval=200) source = input.source(close, "Source") show_signals = input.bool(true, "Show Signals") // Вычисления на каждом баре ema_line = ta.ema(source, length) // Визуализация plot(ema_line, "EMA", color=color.blue, linewidth=2) // Операции с сериями prev_close = close[1] // предыдущий бар two_bars_ago = close[2] is_bullish = close > open // true/false для каждого бара rising = close > close[1] and close[1] > close[2] הוא הבר הנוכחי, close[0] הוא הקודם. זה קריטי לתנאים.
למה מתרחש Repainting ואיך להימנע ממנו
Repainting קורה כאשר אות משתנה לאחר סגירת הבר. טעות נפוצה: שימוש בברים לא מאושרים. אנחנו תמיד בודקים close[1] לחישובים סופיים. זה מבטיח שהאותות יישארו יציבים. בפרויקטים שלנו, repainting מבוטל לחלוטין, מאומת על 10,000+ ברים. אנו גם משתמשים ב-barstate.isconfirmed למשימות של בר אחרון בלבד כדי להפחית עומס.
איך ליישם דיברג'נס RSI ללא אותות שגויים
ל-RSI הסטנדרטי יש רעש. אנו מיישמים דיברג'נס מתקדם עם אישור אקסטרמום וסינון רמות. זה מפחית אותות שגויים ב-40%.
//@version=5
indicator("RSI with Divergence", overlay=false)
rsi_length = input.int(14, "RSI Length")
rsi_overbought = input.int(70, "Overbought")
rsi_oversold = input.int(30, "Oversold")
div_lookback = input.int(15, "Divergence Lookback")
rsi = ta.rsi(close, rsi_length)
price_lower_low = low < ta.lowest(low, div_lookback)[1]
rsi_higher_low = rsi > ta.lowest(rsi, div_lookback)[1]
bullish_div = price_lower_low and rsi_higher_low and rsi < rsi_oversold + 10
price_higher_high = high > ta.highest(high, div_lookback)[1]
rsi_lower_high = rsi < ta.highest(rsi, div_lookback)[1]
bearish_div = price_higher_high and rsi_lower_high and rsi > rsi_overbought - 10
hline(rsi_overbought, "Overbought", color.new(color.red, 50))
hline(rsi_oversold, "Oversold", color.new(color.green, 50))
hline(50, "Midline", color.gray, linestyle=hline.style_dotted)
rsi_color = rsi >= rsi_overbought ? color.red : rsi <= rsi_oversold ? color.green : color.blue
plot(rsi, "RSI", color=rsi_color, linewidth=2)
plotshape(bullish_div, "Bullish Div", shape.triangleup, location.bottom, color.new(color.green, 0), size=size.small)
plotshape(bearish_div, "Bearish Div", shape.triangledown, location.top, color.new(color.red, 0), size=size.small) בעיות מעשיות ופתרונות
Repainting על ברים סגורים נובע משימוש בערכים שאינם זמינים בזמן הסגירה. אנו מיישמים barstate.islast לכל החישובים הקריטיים. דיברג'נסים שגויים של RSI מסוננים על ידי רמות oversold/overbought ואישור אקסטרמום. Backtesting סוטה מהמציאות בגלל השמטת עמלות וסטייה (slippage). האסטרטגיה שלנו כוללת //@version=5 indicator("RSI with Divergence", overlay=false) rsi_length = input.int(14, "RSI Length") rsi_overbought = input.int(70, "Overbought") rsi_oversold = input.int(30, "Oversold") div_lookback = input.int(15, "Divergence Lookback") rsi = ta.rsi(close, rsi_length) price_lower_low = low < ta.lowest(low, div_lookback)[1] rsi_higher_low = rsi > ta.lowest(rsi, div_lookback)[1] bullish_div = price_lower_low and rsi_higher_low and rsi < rsi_oversold + 10 price_higher_high = high > ta.highest(high, div_lookback)[1] rsi_lower_high = rsi < ta.highest(rsi, div_lookback)[1] bearish_div = price_higher_high and rsi_lower_high and rsi > rsi_overbought - 10 hline(rsi_overbought, "Overbought", color.new(color.red, 50)) hline(rsi_oversold, "Oversold", color.new(color.green, 50)) hline(50, "Midline", color.gray, linestyle=hline.style_dotted) rsi_color = rsi >= rsi_overbought ? color.red : rsi <= rsi_oversold ? color.green : color.blue plot(rsi, "RSI", color=rsi_color, linewidth=2) plotshape(bullish_div, "Bullish Div", shape.triangleup, location.bottom, color.new(color.green, 0), size=size.small) plotshape(bearish_div, "Bearish Div", shape.triangledown, location.top, color.new(color.red, 0), size=size.small) ופרמטר barstate.isconfirmed. דוגמה להצלבה של EMA:
//@version=5
strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)
fast_ema = input.int(9, "Fast EMA")
slow_ema = input.int(21, "Slow EMA")
ema_fast = ta.ema(close, fast_ema)
ema_slow = ta.ema(close, slow_ema)
long_signal = ta.crossover(ema_fast, ema_slow)
short_signal = ta.crossunder(ema_fast, ema_slow)
if long_signal
strategy.entry("Long", strategy.long)
if short_signal
strategy.close("Long")
plot(ema_fast, "Fast EMA", color.blue)
plot(ema_slow, "Slow EMA", color.orange)
bgcolor(long_signal ? color.new(color.green, 90) : na)לאחר ההרצה, "Strategy Tester" מציג Net Profit, Profit Factor, Max Drawdown. על ידי התאמת פרמטרים, אנו משיגים יציבות על נתונים היסטוריים.
מה אתה מקבל כתוצאה
- קוד מקור ב-Pine Script v5.
- הוראות התקנה והגדרה מפורטות.
- פרסום ב-TradingView marketplace (אופציונלי).
- 30 ימי תמיכה חינם: תיקוני באגים, שיפורים.
- מחיר קבוע החל מ-$500, מוסכם מראש.
תהליך הפיתוח
| שלב | משך | תוצאה |
|---|---|---|
| 1. ניתוח ומפרט | 1-2 ימים | מפרט לוגיקה וויזואליזציה ברור |
| 2. פיתוח אב טיפוס | 3-5 ימים | קוד עובד עם הערות |
| 3. בדיקות וניפוי באגים | 2-3 ימים | 100% ללא repainting, אותות מדויקים |
| 4. אופטימיזציה | 1-3 ימים | חישובים מהירים יותר, עובד על 100,000+ ברים |
| 5. פרסום ומסירה | יום אחד | קוד, הוראות, גישה לאינדיקטור |
השוואת גישות: אוסילטורים מול אינדיקטורי טרנד
| סוג | דוגמה | מתי להשתמש | מגבלות |
|---|---|---|---|
| אוסילטור | RSI, Stochastic | שוק בטווח (Range-bound) | אותות שגויים בטרנדים |
| טרנד | EMA, Supertrend | טרנד חזק | פיגור בהיפוכים |
| מותאם אישית | דיברג'נס RSI | שילוב אותות | מורכבות הגדרה גבוהה |
Pine Script v5 מהיר פי 2 מ-v4 בזכות מכונה וירטואלית חדשה, המאפשרת עיבוד נתונים רב יותר ללא פיגור.
שיטות עבודה מומלצות ומגבלות
מגבלות:
- אין APIs חיצוניים (רק נתוני TradingView).
-
strategy.commission.percentעד 500 לסדרות מותאמות אישית. - אין ניהול הזמנות אמיתי (רק backtest).
- אין אחסון מתמשך.
שיטות עבודה מומלצות:
- השתמש ב-
slippageלמשתנים מתמשכים. -
//@version=5 strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1) fast_ema = input.int(9, "Fast EMA") slow_ema = input.int(21, "Slow EMA") ema_fast = ta.ema(close, fast_ema) ema_slow = ta.ema(close, slow_ema) long_signal = ta.crossover(ema_fast, ema_slow) short_signal = ta.crossunder(ema_fast, ema_slow) if long_signal strategy.entry("Long", strategy.long) if short_signal strategy.close("Long") plot(ema_fast, "Fast EMA", color.blue) plot(ema_slow, "Slow EMA", color.orange) bgcolor(long_signal ? color.new(color.green, 90) : na)לחישובים של בר אחרון (טבלאות, תוויות). -
max_bars_backכדי להימנע מ-repainting. - הוסף בדיקות
var:barstate.islast.
מידע נוסף על backtesting
לתוצאות אמינות, השתמש בעמלה של 0.1% ובסטייה של 1 tick. בדוק על מסגרות זמן ותקופות שונות.צור קשר להערכת פרויקט. קבל ייעוץ — כתוב לנו בטלגרם או באימייל. הזמן פיתוח וקבל אינדיקטור מוכן תוך שבוע. אנו מבטיחים פונקציונליות קוד ומבטלים repainting ב-100%.







