4
Подписаться
1271
Подписчики

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

Создано: 2020-01-11 14:49:08, Обновлено: 2024-12-12 20:57:43
comments   6
hits   7100

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

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

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

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

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Управляет запуском открытия позиции.

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

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

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

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

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

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

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

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

Бэктестинг

Период бэктестинга составляет приблизительно один год. Версия стратегии «погоня за ростом и продажа вниз» на Python

Результаты операции: Версия стратегии «погоня за ростом и продажа вниз» на Python

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

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

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