Розробка кастомних торгових стратегій на Pine Script

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка кастомних торгових стратегій на Pine Script
Середній
від 1 дня до 3 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка кастомних стратегій на Pine Script

Pine Script — скриптова мова TradingView для створення індикаторів та стратегій прямо в браузері. Виглядає просто, але написати стратегію, яка не дає false signals на історичних даних і реально торгує прибутково — нетривіальна задача.

Структура Pine Script стратегії

//@version=5
strategy("EMA + RSI Strategy", overlay=true, 
         initial_capital=10000, commission_value=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Параметри (настраюються в інтерфейсі TradingView)
emaFast = input.int(9, "Fast EMA", minval=1)
emaSlow = input.int(21, "Slow EMA", minval=1)
rsiPeriod = input.int(14, "RSI Period")
rsiOversold = input.float(30, "RSI Oversold")
rsiOverbought = input.float(70, "RSI Overbought")

// Вычисление індикаторів
emaF = ta.ema(close, emaFast)
emaS = ta.ema(close, emaSlow)
rsi = ta.rsi(close, rsiPeriod)

// Умови входу
longCondition = ta.crossover(emaF, emaS) and rsi < rsiOversold
shortCondition = ta.crossunder(emaF, emaS) and rsi > rsiOverbought

// Входи
if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

// Виходи з стоп-лоссом та тейк-профітом
strategy.exit("Long Exit", "Long", 
              stop=strategy.position_avg_price * 0.97,   // -3% стоп
              limit=strategy.position_avg_price * 1.06)  // +6% тейк

// Візуалізація
plot(emaF, "Fast EMA", color=color.blue)
plot(emaS, "Slow EMA", color=color.orange)
bgcolor(longCondition ? color.new(color.green, 90) : na)

Продвинуті техніки

Фільтр рыночного режиму

// ADX фільтр: торгуємо тільки при наявності тренду
[diPlus, diMinus, adx] = ta.dmi(14, 14)
trendFilter = adx > 25

// Обсяговий фільтр: сигнал дійсний тільки при підвищеному обсязі
avgVolume = ta.sma(volume, 20)
volumeFilter = volume > avgVolume * 1.5

// Комбінуємо фільтри
longCondition := longCondition and trendFilter and volumeFilter

Управління позицією (Position Sizing)

// ATR-based стоп: динамічний стоп під волатильність
atr = ta.atr(14)
stopDistance = atr * 2.0

// Розмір позиції під ризик: рискуємо не більше 2% депозиту на сделку
riskAmount = strategy.equity * 0.02
positionSize = riskAmount / stopDistance

if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Long SL/TP", "Long",
                  stop=close - stopDistance,
                  limit=close + stopDistance * 2)  // RR 1:2

Торговельні сесії та time filters

// Торгувати тільки в Лондонську та Нью-Йоркську сесії
inLondon = not na(time(timeframe.period, "0800-1600", "Europe/London"))
inNewYork = not na(time(timeframe.period, "0930-1600", "America/New_York"))
tradingTime = inLondon or inNewYork

longCondition := longCondition and tradingTime

Backtesting в TradingView

Ключові метрики в Strategy Tester:

  • Net Profit: абсолютна прибуток за період
  • Percent Profitable: % прибильних сделок (60%+ хорошо для трендових)
  • Profit Factor: сума виигрышів / сума проигрышей (> 1.5 прийнятно)
  • Max Drawdown: максимальна просадка від пика
  • Sharpe Ratio: скорректирована на ризик дохідність

Look-ahead bias — головна ловушка Pine Script: якщо використовувати security() без lookahead=barmerge.lookahead_off, стратегія буде використовувати майбутні дані на історичному тесті. Результати будуть нереалістично хорошими.

// НЕПРАВИЛЬНО — look-ahead bias:
htf_close = request.security(syminfo.tickerid, "D", close)

// ПРАВИЛЬНО — тільки закриті бари:
htf_close = request.security(syminfo.tickerid, "D", close[1], 
                              lookahead=barmerge.lookahead_off)

Алерти для автоматизації

Pin Script стратегію можна підключити до trading bot через TradingView alerts + webhook:

// Створення алертів
alertcondition(longCondition, "Long Signal", 
               "{{strategy.order.action}} {{ticker}} @ {{close}}")
alertcondition(shortCondition, "Short Signal",
               "{{strategy.order.action}} {{ticker}} @ {{close}}")

Webhook URL отримує JSON від TradingView та виконує ордер через біржевий API. Затримка: зазвичай 1–5 секунд від сигналу до ордера.

Тип стратегії Складність Термін розробки
Простий індикатор (RSI/EMA) Низька 2–4 дні
Мультиусловна стратегія Середня 1–2 тижні
Стратегія з управлінням позицією Середня 2–3 тижні
Складна мультитаймфреймова Висока 3–5 тижнів

Розробка включає написання стратегії, настройку параметрів, backtesting на кількох інструментах та настройку алертів для автоматичного виконання.