Эта стратегия разрабатывает долгосрочную торговую стратегию, которая контролирует риск каждой сделки на основе индикатора MACD. По сравнению с традиционными долго-короткими стратегиями перевёртывания, эта стратегия больше сосредоточена на контроле риска каждой сделки. Расчитывая разумные уровни стоп-лосса и прибыли и устанавливая соответствующие размеры позиций, она ограничивает максимальный убыток для каждой сделки. Это может эффективно контролировать снижения и достигать устойчивой прибыли в долгосрочной перспективе.
Стратегия сначала рассчитывает линию MACD и линию сигнала индикатора MACD. Когда линия MACD пересекает линию сигнала, она определяется как сигнал покупки. Чтобы отфильтровать ложные прорывы, стратегии требуется barsince ((crossover ((macd_line, signal_line)) <= 5, что означает, что прорыв произошел в пределах последних 5 баров. Она также требует, чтобы как линии MACD, так и линии сигнала были ниже 0, что указывает на условие перепродажи, а закрытие было выше линии WMA, что указывает на тенденцию к росту.
Для каждой сделки стратегия рассчитывает разумные уровни стоп-лосса и прибыли. Стоп-лосс устанавливается на самое низкое из последних 3 баров. Прибыль устанавливается на цену входа плюс 4 раза расстояние между стоп-лосом и ценой входа.
Ключевым является то, что стратегия рассчитывает конкретный размер позиции на основе максимально доступного риска. Параметр capital_risk устанавливает процент от общего капитала, который может быть потерян для каждой сделки. Размер позиции в долларах США затем рассчитывается на основе диапазона стоп-лосса. Затем он конвертируется в контракты для исполнения.
Риск каждой сделки контролируется в пределах 1% от общего капитала, что позволяет эффективно контролировать снятие средств.
Возможные улучшения:
Эта стратегия определяет направление тренда с использованием MACD и принимает контроль риска в качестве приоритета для торговли с оптимизированным размером позиции. Ключевыми являются контроль риска и размером позиции, которые могут достичь устойчивой прибыли в долгосрочной перспективе. Но MACD имеет некоторые недостатки, и механизмы остановки потери / получения прибыли нуждаются в дальнейшей оптимизации. Дальнейшая оптимизация использования индикатора, настройки остановки потери / получения прибыли и снижение частоты торговли могут сделать стратегию еще более мощной.
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD ) capital_risk = input( 1.0, "% capital risk per trade" ) / 100 r_exit = input( 4.0, "Take Profit in 'R'" ) wma_length = input( 150, 'WMA Bias Length' ) [macd_line, signal_line, hist ] = macd(close, 12, 26, 9) w_line = wma( close, wma_length ) golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0 float stop = na float tp = na // For a stop, use a recent low stop := golong ? lowest(low, 3)[1] : stop[1] range = abs(close - stop) tp := golong ? close + (r_exit * range) : tp[1] // This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity` how_much_willing_to_lose = strategy.equity * capital_risk // Spread the risk across the stop range position_size_in_usd = how_much_willing_to_lose / (range / close) // Sized specified in base contract position_size_in_contracts = position_size_in_usd / close // Enter the position if golong strategy.entry("long", strategy.long, qty=position_size_in_contracts) strategy.exit("long exit","long", stop=stop, limit=tp) // experimental exit strategy // hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' ) // if hist < 0 and hist_strength == 'strong' and falling( hist, 8 ) // strategy.close("long") plot( strategy.equity, color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )