Динамическая стратегия оптимизации торговли с использованием комбинации нескольких индикаторов

CCI RSI MFI WMA IFT
Дата создания: 2024-12-20 16:31:21 Последнее изменение: 2024-12-20 16:31:21
Копировать: 1 Количество просмотров: 397
1
Подписаться
1617
Подписчики

Динамическая стратегия оптимизации торговли с использованием комбинации нескольких индикаторов

Обзор

Стратегия представляет собой торговую систему, основанную на комбинации нескольких технических индикаторов, которая создает всеобъемлющую базу для анализа рынка путем интеграции четырех основных индикаторов: CCI, RSI, Stochastic и MFI в сочетании с гладкой обработкой индексов. Стратегия использует IFT (Inverse Fisher Transform) для стандартизации вывода индикаторов и, в конечном итоге, для принятия торговых решений путем синтеза сигналов.

Стратегический принцип

В основе стратегии лежит обеспечение более надежных торговых сигналов с помощью слияния нескольких индикаторов. Сначала проводится стандартизация и сглаживание WMA для каждого индикатора, а затем, с помощью IFT-конвертирования, отображаются значения индикаторов.[-1,1], в частности:

  1. Расчет и унификация четырёх индикаторов CCI, RSI, Stochastic и MFI
  2. Сглаживание показателей с помощью WMA
  3. Преобразование показателя в единый диапазон с помощью IFT-преобразования
  4. Вычислить среднее значение четырех переведенных показателей в качестве конечного сигнала
  5. При прорыве линии сигнала -0.5 образуется многосигнал, при прорыве линии сигнала -0.5 образуется пустой сигнал
  6. Настройка 0.5% стоп-лосса и 1% стоп-стопа для контроля риска

Стратегические преимущества

  1. Объединение нескольких индикаторов дает более полный взгляд на рынок и снижает ограничения одного индикатора
  2. IFT-конвертирование обеспечивает единообразие вывода индикатора и облегчает синтез сигнала
  3. Сглаживание WMA эффективно снижает ложные сигналы
  4. Установка разумного стоп-лосса, чтобы контролировать риски и одновременно гарантировать прибыль
  5. Ясный механизм генерирования сигналов, способный к их настройке и оптимизации

Стратегический риск

  1. Показатели могут отставать в условиях резкого колебания рынка
  2. Фиксированные стоп-стоп параметры могут не подходить для всех рыночных условий
  3. Сглаживание WMA может вызвать задержку сигнала
  4. Параметры показателя должны быть оптимизированы для различных рынков Рекомендуется: динамическая настройка параметров остановки, введение показателя волатильности, оптимизация параметров сглаживания

Направление оптимизации стратегии

  1. Внедрение адаптивного механизма остановки убытков, адаптирующегося к динамике рыночных колебаний
  2. Добавление механизма фильтрации рыночной среды с использованием различных параметров при различной интенсивности тренда
  3. Оптимизация способа синтеза сигналов, рассматриваемая в качестве альтернативных весовых средних
  4. Введение механизмов повышению объемов перевозок и корректировке колебаний
  5. Разработка системы автоматической оптимизации параметров показателей

Подвести итог

Эта стратегия, используя интеграцию нескольких показателей и оптимизацию сигналов, создает относительно целостную торговую систему. Преимущества стратегии заключаются в надежности сигналов и целостности управления рисками, но все же требуется оптимизация параметров в соответствии с особенностями рынка в практическом применении.

Исходный код стратегии
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('wombocombo', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// IFTCOMBO Hesaplamaları
ccilength = input.int(5, 'CCI Length')
wmalength = input.int(9, 'Smoothing Length')
rsilength = input.int(5, 'RSI Length')
stochlength = input.int(5, 'STOCH Length')
mfilength = input.int(5, 'MFI Length')

// CCI
v11 = 0.1 * (ta.cci(close, ccilength) / 4)
v21 = ta.wma(v11, wmalength)
INV1 = (math.exp(2 * v21) - 1) / (math.exp(2 * v21) + 1)

// RSI
v12 = 0.1 * (ta.rsi(close, rsilength) - 50)
v22 = ta.wma(v12, wmalength)
INV2 = (math.exp(2 * v22) - 1) / (math.exp(2 * v22) + 1)

// Stochastic
v1 = 0.1 * (ta.stoch(close, high, low, stochlength) - 50)
v2 = ta.wma(v1, wmalength)
INVLine = (math.exp(2 * v2) - 1) / (math.exp(2 * v2) + 1)

// MFI
source = hlc3
up = math.sum(volume * (ta.change(source) <= 0 ? 0 : source), mfilength)
lo = math.sum(volume * (ta.change(source) >= 0 ? 0 : source), mfilength)
mfi = 100.0 - 100.0 / (1.0 + up / lo)
v13 = 0.1 * (mfi - 50)
v23 = ta.wma(v13, wmalength)
INV3 = (math.exp(2 * v23) - 1) / (math.exp(2 * v23) + 1)

// Ortalama IFTCOMBO değeri
AVINV = (INV1 + INV2 + INVLine + INV3) / 4

// Sinyal çizgileri
hline(0.5, color=color.red, linestyle=hline.style_dashed)
hline(-0.5, color=color.green, linestyle=hline.style_dashed)

// IFTCOMBO çizgisi
plot(AVINV, color=color.red, linewidth=2, title='IFTCOMBO')

// Long Trading Sinyalleri
longCondition = ta.crossover(AVINV, -0.5) 
longCloseCondition = ta.crossunder(AVINV, 0.5) 

// Short Trading Sinyalleri
shortCondition = ta.crossunder(AVINV, 0.5) 
shortCloseCondition = ta.crossover(AVINV, -0.5) 

// Stop-loss seviyesi (%0.5 kayıp)
stopLoss = strategy.position_avg_price * (1 - 0.005) // Long için
takeProfit = strategy.position_avg_price * (1 + 0.01) // Long için


// Long Strateji Kuralları
if longCondition
    strategy.entry('Long', strategy.long)
    strategy.exit('Long Exit', 'Long', stop=stopLoss, limit=takeProfit) // Stop-loss eklendi


if longCloseCondition
    strategy.close('Long')

// Stop-loss seviyesi (%0.5 kayıp)
stopLossShort = strategy.position_avg_price * (1 + 0.005) // Short için
takeProfitShort = strategy.position_avg_price * (1 - 0.01) // Short için

// Short Strateji Kuralları
if shortCondition
    strategy.entry('Short', strategy.short)
    strategy.exit('Short Exit', 'Short', stop=stopLossShort, limit=takeProfitShort) // Stop-loss eklendi


if shortCloseCondition
    strategy.close('Short')

// Sinyal noktalarını plotlama
plotshape(longCondition, title='Long Signal', location=location.belowbar, color=color.purple, size=size.small)
plotshape(shortCondition, title='Short Signal', location=location.abovebar, color=color.yellow, size=size.small)