
Это очень классическая стратегия движущихся средних линий, которая использует движущиеся средние с различными периодами TENKAN и KIJUN, чтобы создать сигналы золотых и мертвых точек для длительных операций.
Эта стратегия основана на методе технического анализа японских акций, называемом “очередной равновесный стол”, который использует множество движущихся средних, таких как линия TENKAN и линия KIJUN, для определения направления тенденций рынка.
Во-первых, линия TENKAN представляет собой 9-дневную линию, которая представляет собой краткосрочную тенденцию; линия KIJUN представляет собой 26-дневную линию, которая представляет собой среднесрочную тенденцию. Когда краткосрочная линия проходит через среднюю, она создает сигнал покупки; когда краткосрочная линия проходит через среднюю, она создает сигнал продажи.
Затем стратегия также вводит воздушную линию и линию светового облака. Воздушная линия - это среднее число краткосрочных и среднесрочных движущихся средних, а линия светового облака B - это 52-дневная движущаяся средняя. Они образуют полосы туманных облаков, которые определяют долгосрочные тенденции.
Наконец, чтобы отфильтровать ложные сигналы, стратегия также обнаруживает, связана ли цена с линией OTO (линией задержки 26-дневной цены). При этом только тогда, когда цена находится ниже линии OTO, появляется сигнал покупки; только тогда, когда цена находится выше линии OTO, появляется сигнал продажи.
Это очень типичная стратегия скользящих средних, преимущества которой проявляются в трёх аспектах:
Используя среднюю линию двух различных периодов, можно эффективно определить направление тенденции в двух временных измерениях в краткосрочной и среднесрочной перспективе.
С помощью световых облаков можно определить долгосрочные тенденции, чтобы избежать долгосрочного падения рынка.
Если вы обнаружите связь между ценой и ценой задержки, вы сможете отфильтровать множество ложных сигналов и сократить количество ненужных сделок.
Таким образом, эта стратегия использует множество функций средней линии, что позволяет вовремя использовать тенденции в коротких, средних и длительных трех измерениях времени.
Основные риски этой стратегии заключаются в следующем:
Если вы не можете хорошо установить параметры, вы можете быть заключены в тюрьму за частые сделки.
Стратегия ориентирована на техническую сторону и не учитывает фундаментальные факторы. Технические сигналы могут также потерять силу, если произойдут существенные изменения в результате деятельности компании или в рыночной политике.
Эта стратегия учитывает только решения о покупке и продаже, без установления механизма остановки убытков. В случае ошибочного решения убытки могут увеличиться.
Таким образом, нам нужно найти более продвинутую линейную систему, или разумно установить стоп-лосс, или добавить базовые сигналы, чтобы улучшить эту стратегию и снизить риск.
Эта стратегия также может быть оптимизирована в следующих аспектах:
Поиск более устойчивых и эффективных комбинаций параметров. Мы можем найти значения параметров, которые делают стратегию более эффективной, используя больше данных.
Увеличение механизма стоп-лосса. Разумный стоп-лосса позволяет эффективно контролировать максимальные потери стратегии.
Добавление базовых сигналов. Например, данные о результатах ожидаемых ревизий могут судить о перспективах компании, что повышает эффективность стратегии.
Оптимизация стратегии OTO-линий. Существующая реализация проста, и мы можем найти более стабильные и точные методы определения отношений цены и исторической цены.
В сочетании с выбором акций. Добавление таких факторов, как PE, ROE, может отфильтровывать более низкое качество.
Это очень типичная и практическая стратегия движущихся средних. Она одновременно обращает внимание на тенденции в коротком, среднем и длинном трехмерном времени, используя различные функции равномерной линии для проектирования торговых сигналов, и она работает хорошо. На этой основе мы можем улучшить ее эффективность методами оптимизации параметров, остановки убытков, выбора акций и т. Д. В целом, это количественная стратегия, которая заслуживает внимания и долгосрочного отслеживания.
/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mdeous
//@version=4
strategy(
title="Ichimoku Kinko Hyo Strategy",
shorttitle="Ichimoku Strategy",
overlay=true,
pyramiding=0,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
initial_capital=1000,
currency="USD",
commission_type=strategy.commission.percent,
commission_value=0.0
)
//
// SETTINGS
//
// Ichimoku
int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1)
int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1)
int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1)
int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1)
// Strategy
int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1)
bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false)
//
// HELPERS
//
color _red = color.red
color _blue = color.blue
color _lime = color.lime
color _fuchsia = color.fuchsia
color _silver = color.silver
color _aqua = color.aqua
f_donchian(_len) => avg(lowest(_len), highest(_len))
//
// ICHIMOKU INDICATOR
//
float tenkan = f_donchian(TENKAN_LEN)
float kijun = f_donchian(KIJUN_LEN)
float ssa = avg(tenkan, kijun)
float ssb = f_donchian(SSB_LEN)
plot(tenkan, title="Tenkan", color=_silver)
plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua)
_ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime)
_ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red)
fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90)
//
// STRATEGY
//
// Check if price is "above or below" Chikou (i.e. historic price line):
// This detection is highly imperfect, as it can only know what Chikou position
// was 2*offset candles in the past, therefore if Chikou crossed the price
// line in the last 2*offset periods it won't be detected.
// Use of this detection is disabled by default,
float _chikou_val = close[OFFSET*2+1]
float _last_val = close[OFFSET+1]
bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true
bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true
// Identify short-term trend with Tenkan
bool _above_tenkan = min(open, close) > tenkan
bool _below_tenkan = max(open, close) < tenkan
// Check price position compared to Kumo
bool _above_kumo = min(open, close) > ssa
bool _below_kumo = max(open, close) < ssb
// Check if Kumo is bullish or bearish
bool bullish_kumo = ssa > ssb
bool bearish_kumo = ssa < ssb
// Correlate indicators to confirm the trend
bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo
bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo
// Build signals
bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA
bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist
bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB
bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist
bool go_long = below_chikou and (bullish_trend and (buy1 or buy2))
bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2))
//
// COOLDOWN
//
f_cooldown() =>
_cd_needed = false
for i = 1 to COOLDOWN by 1
if go_long[i]
_cd_needed := true
break
_cd_needed
go_long := f_cooldown() ? false : go_long
//
// ORDERS
//
strategy.entry("buy", strategy.long, when=go_long)
strategy.close_all(when=exit_long)
//
// ALERTS
//
alertcondition(
condition=go_long,
title="Buy Signal",
message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
)
alertcondition(
condition=exit_long,
title="Sell Signal",
message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
)