В процессе загрузки ресурсов... загрузка...

Эта стратегия генерирует торговые сигналы на основе денежного потока Чайкина (CMF).

Автор:Чао Чжан, Дата: 2024-06-07 17:05:04
Тэги:

КАШИШКИНГ CMF, EMA, SMA

Обзор

Эта стратегия генерирует торговые сигналы, основанные на индикаторе денежного потока (CMF) и экспоненциальных скользящих средних (EMA). Сначала она рассчитывает значения CMF за определенный период, а затем использует две EMA с разными периодами для сглаживания данных CMF. Сигнал покупки генерируется, когда быстрая EMA пересекает более медленной EMA, в то время как сигнал продажи генерируется, когда быстрая EMA пересекает ниже медленной EMA. Стратегия также устанавливает условия остановки потери и получения прибыли для управления рисками и блокировки прибыли.

Принципы стратегии

  1. Вычислить значения денежного потока Chaikin (CMF) за определенный период. CMF включает в себя как цены, так и объем данных для измерения силы денежного потока в и из рынка.
  2. Для сглаживания данных CMF применяют две экспоненциальные скользящие средние (EMAs) с разными периодами.
  3. Создать сигнал покупки, когда быстрая EMA пересекает более медленной EMA, и сигнал продажи, когда быстрая EMA пересекает ниже медленной EMA.
  4. После создания торгового сигнала стратегия ждет подтверждения от двух свечей, чтобы избежать ложных сигналов.
  5. Установите условия стоп-лосса и тек-профита. Стоп-лосс - это определенный процент от входной цены, а тек-профит - это определенный процент от входной цены.

Анализ преимуществ

  1. Комбинирует данные о ценах и объеме: индикатор CMF всесторонне рассматривает как данные о ценах, так и объеме, обеспечивая более надежное отражение денежного потока на рынке и генерируя более точные торговые сигналы.
  2. Отслеживание тенденций: используя EMA с различными периодами, стратегия может отслеживать как краткосрочные, так и долгосрочные тенденции, адаптируясь к различным рыночным условиям.
  3. Подтверждение сигнала: После того, как генерируется торговый сигнал, стратегия ждет подтверждения от двух свечей, эффективно отфильтровывая некоторые ложные сигналы и улучшая уровень успеха сделок.
  4. Управление рисками: стратегия включает в себя условия стоп-лосса и прибыли, что эффективно контролирует риск отдельных сделок при одновременном обеспечении полученной прибыли.

Анализ рисков

  1. Оптимизация параметров: производительность стратегии зависит от выбора периодов CMF и EMA. Различные рыночные условия могут требовать различных настроек параметров, что требует периодической оптимизации параметров.
  2. Признание тренда: на нестабильных рынках или в переломные моменты, стратегия может генерировать больше ложных сигналов, что приводит к частым сделкам и потерям капитала.
  3. Расходы на сдвиг и торговлю: Частая торговля может увеличивать расходы на сдвиг и торговлю, что влияет на общую рентабельность стратегии.

Руководство по оптимизации

  1. Динамическая корректировка параметров: динамическая корректировка параметров периода CMF и EMA на основе изменений рыночных условий для адаптации к различным состояниям рынка.
  2. Включение других индикаторов: объединение других технических индикаторов, таких как индекс относительной силы (RSI) и средний истинный диапазон (ATR), для повышения точности распознавания тренда и надежности сигналов.
  3. Оптимизировать стоп-лосс и получение прибыли: динамически корректировать проценты стоп-лосса и получения прибыли на основе волатильности рынка и предпочтений риска для лучшего управления рисками и закрепления прибыли.
  4. Внедрить размещение позиций: динамически корректировать размеры позиций на основе тенденций рынка и силы сигнала. Увеличить размеры позиций, когда тенденции ясны, и уменьшить размеры позиций в неопределенные периоды.

Резюме

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


/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CASHISKING", overlay=false)

// Kullanıcı girişleri ile parametreler
cmfPeriod = input.int(200, "CMF Periyodu", minval=1)
emaFastPeriod = input.int(80, "Hızlı EMA Periyodu", minval=1)
emaSlowPeriod = input.int(160, "Yavaş EMA Periyodu", minval=1)
stopLossPercent = input.float(3, "Stop Loss Yüzdesi", minval=0.1) / 100
stopGainPercent = input.float(5, "Stop Gain Yüzdesi", minval=0.1) / 100

// CMF hesaplama fonksiyonu
cmfFunc(close, high, low, volume, length) =>
    clv = ((close - low) - (high - close)) / (high - low)
    valid = not na(clv) and not na(volume) and (high != low)
    clv_volume = valid ? clv * volume : na
    sum_clv_volume = ta.sma(clv_volume, length)
    sum_volume = ta.sma(volume, length)
    cmf = sum_volume != 0 ? sum_clv_volume / sum_volume : na
    cmf

// CMF değerlerini hesaplama
cmf = cmfFunc(close, high, low, volume, cmfPeriod)

// EMA hesaplamaları
emaFast = ta.ema(cmf, emaFastPeriod)
emaSlow = ta.ema(cmf, emaSlowPeriod)

// Göstergeleri çiz
plot(emaFast, color=color.blue, title="EMA 23")
plot(emaSlow, color=color.orange, title="EMA 50")

// Alım ve Satım Sinyalleri
crossOverHappened = ta.crossover(emaFast, emaSlow)
crossUnderHappened = ta.crossunder(emaFast, emaSlow)

// Kesişme sonrası bekleme sayacı
var int crossOverCount = na
var int crossUnderCount = na

if (crossOverHappened)
    crossOverCount := 0

if (crossUnderHappened)
    crossUnderCount := 0

if (not na(crossOverCount))
    crossOverCount += 1

if (not na(crossUnderCount))
    crossUnderCount += 1

// Alım ve Satım işlemleri
if (crossOverCount == 2)
    strategy.entry("Buy", strategy.long)
    crossOverCount := na  // Sayaç sıfırlanır

if (crossUnderCount == 2)
    strategy.entry("Sell", strategy.short)
    crossUnderCount := na  // Sayaç sıfırlanır

// Stop Loss ve Stop Gain hesaplama
longStopPrice = strategy.position_avg_price * (1 - stopLossPercent)
shortStopPrice = strategy.position_avg_price * (1 + stopLossPercent)
longTakeProfitPrice = strategy.position_avg_price * (1 + stopGainPercent)
shortTakeProfitPrice = strategy.position_avg_price * (1 - stopGainPercent)

// Stop Loss ve Stop Gain'i uygula
if (strategy.position_size > 0 and strategy.position_avg_price > 0)
    strategy.exit("Stop", "Buy", stop=longStopPrice, limit=longTakeProfitPrice)
else if (strategy.position_size < 0 and strategy.position_avg_price > 0)
    strategy.exit("Stop", "Sell", stop=shortStopPrice, limit=shortTakeProfitPrice)


Больше