Эта стратегия основана на базовой системе мобильной равнолинейности, которая оптимизирована для конкретных точек входа в игру после запуска сигнала.
Основная логика заключается в следующем:
Вычислить скользящую среднюю за определенный период (например, 20 дней)
Сигналы о многомерности возникают, когда цена пересекает равновесную линию, и сигналы о пустоте, когда цена пересекает равновесную линию
Получая сигнал, не сразу вступайте в игру, а ждите лучшей цены
Если в течение определенного числа дней (например, 3 дня) появятся более выгодные цены, то вход
Если нет, то на пятый день вы можете начать торги по цене закрытия, чтобы не пропустить этот день.
Эта стратегия заключается в том, чтобы не спешить войти в рынок после сигнала, а искать возможности для восстановления тренда после свертывания, чтобы создать позицию по более выгодной цене.
Оптимизация входа в игру, чтобы получить лучшие входные точки
Установите максимальный срок ожидания, чтобы не пропустить
Правила просты, понятны и легко применяются
Время ожидания и порог требуют повторного тестирования и оптимизации
Возможно, мы упустили некоторые возможности в короткой линии Тренд
Двойные условия: время и цена
Стратегия была оптимизирована с помощью простого входа, чтобы получить лучшие места для входа при условии, что она не пропустит тенденцию. Однако оптимизация времени ожидания и условий входа имеет решающее значение для эффективности стратегии.
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © dongyun
//@version=4
strategy("等待一个更好的入场机会", overlay=true)
period = input(20,'')
maxwait = input(3,'')
threshold = input(0.01,'')
signal = 0
trend = 0.0
newtrend = 0.0
wait = 0.0
initialentry = 0.0
trend := sma(close,period)
signal := nz(signal[1])
if trend > nz(trend[1])
signal := 1
else
if trend < nz(trend[1])
signal := -1
wait := nz(wait[1])
initialentry := nz(initialentry[1])
if signal != signal[1]
if strategy.position_size > 0
strategy.close('long',comment='trend sell')
signal := -1
else
if strategy.position_size < 0
strategy.close('short',comment='trend buy')
signal := 1
wait := 0
initialentry := close
else
if signal != 0 and strategy.position_size == 0
wait := wait + 1
// test for better entry
if strategy.position_size == 0
if wait >= maxwait
if signal > 0
strategy.entry('long',strategy.long, comment='maxtime Long')
else
if signal < 0
strategy.entry('short',strategy.short, comment='maxtime Short')
else
if signal > 0 and close < initialentry - threshold
strategy.entry('long',strategy.long, comment='delayed Long')
else
if signal < 0 and close > initialentry + threshold
strategy.entry('short',strategy.short, comment='delayed short')