Эта стратегия оптимизирует точки входа после сигналов от базовой системы скользящих средних.
Главная логика такова:
Расчет скользящей средней за период (например, 20 дней)
Кроссоверы генерируют длинные/короткие сигналы
После сигналов не входите сразу, но ждите более высоких уровней.
Если в течение определенных дней (например, 3 дня) наблюдается улучшение уровня, вводят сделки.
Если нет, входите по цене закрытия на 5-й день, чтобы избежать пропуска
Это позволяет воспользоваться возобновлением тенденций после консолидации, а не сразу же вводить сигналы.
Оптимизация входа для лучших уровней входа
Максимальные дни ожидания позволяют избежать полного отсутствия сделок
Простые и понятные правила
Время ожидания и пороги требуют оптимизации
Возможно, упустить некоторые краткосрочные трендовые возможности.
Необходимо следить как за временными, так и ценовыми условиями
Эта стратегия направлена на улучшение уровня входа через простую оптимизацию входа, обеспечивая при этом, чтобы тенденции не были упущены.
/*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')