Стратегия тренда обычно использует различные индикаторы для оценки направления рынка и использует результаты сравнения различных индикаторов в качестве торговых сигналов. Таким образом, неизбежно использовать параметры и рассчитывать индикаторы. Теперь, когда параметры используются, будет подходящая ситуация. На некоторых рынках стратегия работает очень хорошо, но если вам не повезло, и рыночная тенденция очень недружественна к текущим параметрам, стратегия может работать очень плохо. Поэтому я считаю, что чем проще дизайн стратегии, тем лучше. Эта стратегия будет более надежной. Сегодня мы поделимся стратегией тренда без индикаторов. Код стратегии очень прост, всего 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
установленный параметром.
Таким образом, стратегия следует за изменениями цены, чтобы купить победителей.
Временный диапазон обратного тестирования составляет около одного года.
Результаты работы:
Недавно некоторые пользователи сказали, что стратегий Python мало. Позже я поделюсь еще стратегиями, написанными в Python. Код стратегии также очень прост, что очень подходит для количественных начинающих. Адрес стратегии:https://www.fmz.com/strategy/181185
Если вы заинтересованы, вы можете оптимизировать и обновить его.