Type/to search
8
Follow
1361
Followers
Версия стратегии «погоня за ростом и продажа вниз» на Python
Discussions
Created 2020-01-11 14:49:08  Updated 2024-12-12 20:57:43
 6
 7376

img

Версия стратегии «погоня за ростом и продажа вниз» на Python

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

Код стратегии:

pine
import time basePrice = -1 ratio = 0.05 acc = _C(exchange.GetAccount) lastCancelAll = 0 minStocks = 0.01 def CancelAll(): while True : orders = _C(exchange.GetOrders) for i in range(len(orders)) : exchange.CancelOrder(orders[i]["Id"], orders[i]) if len(orders) == 0 : break Sleep(1000) def main(): global basePrice, acc, lastCancelAll exchange.SetPrecision(2, 3) while True: ticker = _C(exchange.GetTicker) if basePrice == -1 : basePrice = ticker.Last if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio : acc = _C(exchange.GetAccount) if acc.Balance * ratio / ticker.Last > minStocks : exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last) basePrice = ticker.Last if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : acc = _C(exchange.GetAccount) if acc.Stocks * ratio > minStocks : exchange.Sell(ticker.Last, acc.Stocks * ratio) basePrice = ticker.Last ts = time.time() if ts - lastCancelAll > 60 * 5 : CancelAll() lastCancelAll = ts LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc) Sleep(500)

Простой анализ стратегии

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

Длинный триггер:

pine
if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

Используйте текущую цену для сравнения с базовой ценой. Когда текущая цена больше базовой цены, и цена превышаетratio * 100 %, отложенный ордер срабатывает и выставляется длинный ордер.
После размещения заказа базовая цена обновляется до текущей цены.

Триггер короткого ордера:

pine
if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

Принцип коротких продаж тот же. Используйте текущую цену для сравнения с базовой ценой. Когда текущая цена меньше базовой цены, а цена превышаетratio * 100 %, отложенный ордер срабатывает и размещается короткий ордер.
После размещения заказа базовая цена обновляется до текущей цены.

Объем каждого ордера представляет собой стоимость доступных средств.ratio * 100 %
Если рассчитанный объем ордера не меньше минимального объема транзакции, установленного в параметрахminStocks, в противном случае оформите заказ.

Это позволяет стратегии отслеживать изменения цен, гнаться за максимумами и продавать на минимумах.

Бэктестинг

Период бэктестинга составляет приблизительно один год.
img

Результаты операции:
img

img

Недавно некоторые пользователи сказали, что существует относительно мало стратегий Python. В будущем я поделюсь большим количеством стратегий, написанных на Python. Код стратегии также очень прост, что отлично подходит для изучения новичками.
Адрес стратегии: https://www.fmz.com/strategy/181185

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

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)