Стратегия Turtle Trading — это стратегия следования за трендом, разработанная Ричардом Деннисом и Уильямом Экхардтом. Стратегия основана на наборе правил, которые определяют, когда входить и выходить из сделки на основе ценового действия актива. Стратегия известна своей простотой и способностью приносить прибыль в долгосрочной перспективе.
Основная идея стратегии Turtle Trading заключается в том, чтобы определить направление тренда и войти в сделку в этом направлении. Стратегия использует две скользящие средние для определения направления тренда: долгосрочную скользящую среднюю и краткосрочную скользящую среднюю. Когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю, это сигнал к покупке актива. Когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю, это сигнал к продаже актива.
Теперь давайте посмотрим на код Python, реализующий стратегию Turtle Trading. Первые две строки кода вычисляют две скользящие средние:
df['SMA1']=((ta.trend.sma_indicator(close=df['close'], window=55,fillna= True)) ) df['SMA2']=((ta.trend.sma_indicator(close=df['close'], window=20,fillna= True)) )
Здесь мы используем функцию sma_indicator()
из библиотеки ta
(технический анализ) для расчета простых скользящих средних (SMA) цен закрытия. Первая скользящая средняя имеет окно 55 дней, а вторая скользящая средняя имеет окно 20 дней.
Затем мы используем цикл для перебора каждой строки в DataFrame и генерации торговых сигналов на основе положения цены закрытия относительно скользящих средних:
signals.append(0) for i in range(1, len(df)-1): # Your trading strategy goes here # For example, you could use a simple moving average crossover strategy if df.iloc[i]['close'] > df.iloc[i]['SMA1'] : signals.append(-1) elif df.iloc[i]['close'] < df.iloc[i]['SMA2'] : signals.append(1) else : signals.append(0) signals.append(0)
Если цена закрытия выше долгосрочной скользящей средней, мы добавляем сигнал -1 к списку signals
, что указывает на сигнал продажи. Если цена закрытия ниже краткосрочной скользящей средней, мы добавляем сигнал 1, который указывает на сигнал покупки. Если цена закрытия находится между двумя скользящими средними, мы добавляем сигнал 0, что указывает на то, что торговать не следует.
После того, как мы сгенерировали торговые сигналы, мы используем другой цикл для имитации сделок и расчета прибыли:
df["signal"] = signals print(signals) investment = 1000 current_investment = 1000 invested_amount = 0 fees = 0 profit = 0 is_invested = False best_trade = -99999999 worst_trade = 99999999 largest_loss = 0 largest_gain = 0 total_trades = 0 loss_threshold = 0.03 # Stop loss threshold at 5% loss loss_amount = 0 # variable to track loss amount for i in range(500, len(df)): signal = df.iloc[i]['signal'] close = df.iloc[i]['close'] if signal == 1 and not is_invested: Entrypoint = close print(signal) print(close) quantity = (current_investment / close) print(current_investment) print(quantity) invested_amount = quantity * close is_invested = True elif signal == -1 and is_invested: print(signal) print('close', close) profit = quantity * ( close - Entrypoint) - 2 print('profit' ,profit) current_investment += profit invested_amount = 0 total_trades += 1 is_invested = False if profit > largest_gain: largest_gain = profit if profit < largest_loss: largest_loss = profit if profit > best_trade: best_trade = profit if profit < worst_trade: worst_trade = profit loss_amount = 0 # reset loss_amount when position is closed elif is_invested: # check if stop loss threshold has been reached loss = invested_amount - (quantity * close) if loss > invested_amount * loss_threshold: print("Stop loss triggered!") profit = invested_amount * (1 - loss_threshold) - invested_amount - 2 current_investment += profit invested_amount = 0 total_trades += 1 is_invested = False if profit > largest_gain: largest_gain = profit if profit < largest_loss: largest_loss = profit if profit > best_trade: best_trade = profit if profit < worst_trade: worst_trade = profit loss_amount = 0 # reset loss_amount when position is closed else: loss_amount = loss # update loss_amount else: pass final_profit = current_investment - investment print("Final Profit: ", final_profit) print("Best Trade: ", best_trade) print("Worst Trade: ", worst_trade) print("Largest Loss: ", largest_loss) print("Largest Gain: ", largest_gain) print("Total Trades: ", total_trades)
После запуска бэктеста на часовом таймфрейме в ETHUSDT мы можем увидеть результаты:
Тестирование на истории показывает общую прибыль в размере 250 391 долларов США при 2069 сделках. Лучшая сделка привела к прибыли в размере 26 299 долларов, а худшая сделка привела к убытку в размере 7 870 долларов.
Хотя эти результаты впечатляют, важно отметить, что прошлые результаты не гарантируют будущих результатов. Стратегия торговли черепахами была успешной в прошлом, но в будущем она может оказаться нерентабельной. Кроме того, бэктест не учитывает проскальзывание, торговые сборы или другие рыночные условия, которые могут повлиять на прибыльность.
Результаты ретроспективного тестирования показывают, что стратегия хорошо зарекомендовала себя на данном наборе данных, принося прибыль в размере 250 000 долларов США за определенный период времени. Однако важно иметь в виду, что прошлые результаты не гарантируют будущих результатов, и стратегия может работать по-разному на других наборах данных или в других рыночных условиях.
Как и в случае с любой торговой стратегией, важно тщательно протестировать и оптимизировать параметры на ряде наборов данных, чтобы убедиться, что стратегия надежна и эффективна. Также важно эффективно управлять рисками, используя стоп-лоссы, размер позиции и другие методы управления рисками, чтобы минимизировать убытки и максимизировать прибыль.
В целом, торговая стратегия черепах является полезной и эффективной стратегией для трейдеров, которые хотят следовать тенденциям и получать прибыль на рынках. Сочетая технический анализ и разумные принципы управления рисками, трейдеры могут использовать эту стратегию для получения стабильной прибыли в долгосрочной перспективе.
Сообщение от InsiderFinance
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в InsiderFinance Wire
- 📚 Пройдите наш БЕСПЛАТНЫЙ мастер-класс
- 📈 Откройте для себя Мощные торговые инструменты