Количественная стратегия торговли, основанная на ежедневной ценовой сравнении

Автор:Чао Чжан, Дата: 2023-11-21 14:34:11
Тэги:

img

Обзор

Эта стратегия называется Стратегия сравнения цен на ежедневный закрытие. Это количественная стратегия торговли, которая принимает торговые решения на основе ежедневных цен на закрытие. Стратегия генерирует торговые сигналы путем расчета разницы между текущей ежедневной ценой закрытия и предыдущей ежедневной ценой закрытия. Когда разница превышает установленный порог, заказы на покупку или продажу выполняются.

Логика стратегии

Основная логика этой стратегии заключается в сравнении цен на закрытие между текущим свечником/баркой и предыдущим.

  1. Вычислить разницу между текущей суточной ценой закрытия и предыдущей суточной ценой закрытия (сегодня - вчера)
  2. Вычислить соотношение между разницей и ценой закрытия вчерашнего дня (разница / закрытие вчерашнего дня)
  3. Если коэффициент превышает установленный положительный порог, генерируется сигнал покупки. Если коэффициент ниже установленного отрицательного порога, генерируется сигнал продажи.
  4. Введите длинные или короткие позиции в соответствии с сигналами

Стратегия не устанавливает условия остановки потерь или получения прибыли и опирается на сигналы, запускаемые порогом для входа и выхода.

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

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

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

  • Строгое изменение
  • Может генерировать последовательные торговые сигналы, приводящие к переоценке
  • Снижение может быть большим, не может хорошо контролировать общие потери

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

  • Добавить логику остановки потери для контроля потери одной сделки
  • Предельное количество записей для предотвращения чрезмерной торговли
  • Оптимизировать параметры для поиска оптимальной частоты торговли

Заключение

Эта стратегия генерирует торговые сигналы путем сравнения ежедневных цен закрытия. Логика проста и подходит для обучения новичков. Но она содержит определенные риски и требует дальнейшей оптимизации для живой торговли.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Daily Close Comparison Strategy (by ChartArt) correct results", shorttitle="CA_-_Daily_Close_Strat", overlay=false)

// ChartArt's Daily Close Comparison Strategy
//
// Version 1.0
// Idea by ChartArt on February 28, 2016.
//
// This strategy is equal to the very
// popular "ANN Strategy" coded by sirolf2009,
// but without the Artificial Neural Network (ANN).
//
// Main difference besides stripping out the ANN
// is that I use close prices instead of OHLC4 prices.
// And the default threshold is set to 0 instead of 0.0014
// with a step of 0.001 instead of 0.0001.
//
// This strategy goes long if the close of the current day
// is larger than the close price of the last day.
// If the inverse logic is true, the strategy
// goes short (last close larger current close).
//
// This simple strategy does not have any
// stop loss or take profit money management logic.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 

threshold = input(title="Price Difference Threshold correct results", type=float, defval=0, step=0.004)

getDiff() =>
    yesterday=request.security(syminfo.tickerid, 'D', close[1])
    today=close
    delta=today-yesterday
    percentage=delta/yesterday
    
closeDiff = getDiff()
 
buying = closeDiff > threshold ? true : closeDiff < -threshold ? false : buying[1]

hline(0, title="zero line")

bgcolor(buying ? green : red, transp=25)
plot(closeDiff, color=silver, style=area, transp=75)
plot(closeDiff, color=aqua, title="prediction")

longCondition = buying
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = buying != true
if (shortCondition)
    strategy.entry("Short", strategy.short)

Больше