В процессе загрузки ресурсов... загрузка...

Стратегия покупки победителей версии Python

Автор:FMZ~Lydia, Создано: 2022-12-22 22:04:41, Обновлено: 2023-09-20 09:22:41

img

Стратегия покупки победителей версии 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:", ticker, "\n", "Account information:", 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установленный параметром.

Таким образом, стратегия следует за изменениями цены, чтобы купить победителей.

Обратный тест

Временный диапазон обратного тестирования составляет около одного года.

img

Результаты работы:

img img img

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

Если вы заинтересованы, вы можете оптимизировать и обновить его.


Связанные

Больше