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

hans123 Стратегия прорыва внутридневного использования

Автор:Доброта, Создано: 2020-08-12 11:38:39, Обновлено: 2023-10-10 21:15:02

img

Преамбула

Стратегия HANS123 впервые была в основном применена на валютном рынке. Ее метод торговли относительно прост и относится к системе прорыва тренда. Этот метод торговли может войти на рынок, как только формируется тренд, поэтому он пользуется предпочтением многих трейдеров. До сих пор HANS123 расширил множество версий, давайте вместе поймем и развернем стратегию HANS123.

img

Принцип стратегии

Некоторые люди считают, что открытие рынка утром - это время, когда рынок имеет наибольшую дивергенцию. Через около 30 минут рынок полностью переварил все виды ночной информации, и ценовая тенденция будет рациональной и вернется к нормальной. Другими словами: рыночная тенденция в первые 30 минут или около того в основном составляет общую модель торговли сегодня.

  • Верхняя рельса: самая высокая цена в течение 30 минут с момента открытия
  • Нижняя рельса: самая низкая цена в течение 30 минут с момента открытия

Относительные высокие и низкие точки, генерируемые в это время, образуют эффективные высокие и низкие точки в теории Дау, и стратегия HANS123 является логикой торговли, установленной этим. На внутреннем фьючерсном рынке рынок открывается в 09:00 утра, и в 09:30 вы можете судить, длинный или короткий сегодня. Когда цена проходит через высокую точку вверх, цена легко продолжит расти; когда цена проходит через низкую точку вниз, цена легко продолжит падать.

  • Открытие длинной позиции: в настоящее время нет позиции холдинга, и цена превышает верхнюю рельсу
  • Открытие короткой позиции: в настоящее время нет позиции холдинга, и цена прорывается ниже нижней рельсы

Хотя стратегия прорыва может войти на рынок, как только формируется тренд. Но это преимущество также является обоюдоострым мечом. В результате чувствительного входа ценовой прорыв не удалось. Поэтому необходимо установить стоп-лосс. В то же время, для достижения логики стратегии выигрыша и проигрыша, необходимо установить прибыль.

  • Стоп-лосс длинной позиции: текущая длинная позиция достигла суммы потери
  • Стоп-лосс короткой позиции: текущая короткая позиция достигла суммы потери
  • Получить прибыль от длинных позиций, удерживать длинные позиции и достичь суммы прибыли
  • Принимать прибыль от коротких позиций, удерживать короткие позиции и достигать суммы прибыли

Создание стратегии

Открыть в свою очередь:fmz.comСайт> Вход > Приборная панель > Библиотека стратегии > Новая стратегия > Нажмите в разбивке в правом верхнем углу, чтобы выбрать язык Python и начать писать стратегию.

Шаг 1: Составление стратегии

# Strategy main function
def onTick():
    pass


# Program entry
def main():
    while True: # enter infinite loop mode
        onTick() # execute strategy main function
        Sleep(1000) # Sleep for 1 second

Написание стратегии, это было изучено в предыдущей главе, один изonTickФункция, и другой являетсяmainФункция, в которойonTickФункция выполняется в бесконечном цикле вmain function.

Шаг 2: Определите глобальные переменные

up_line = 0 # upper rail
down_line = 0 # lower rail
trade_count = 0 # Number of transactions on the day

Поскольку верхние и нижние рельсы подсчитываются только в 09:30, а в остальное время не делается никакой статистики, нам нужно записать эти две переменные вне петли.trade_countПеред использованием этих двух глобальных переменных в основной функцииonTickСтратегия, вы должны использоватьglobalключевое слово для ссылки.

Шаг 3: Получить данные

exchange.SetContractType("rb888") # Subscribe to futures varieties
bar_arr = _C(exchange.GetRecords, PERIOD_M1) # Get 1-minute K line array
current_close = bar_arr[-1]['Close'] # Get the latest price
if len(bar_arr) <50: # If less than 50 k line bars
    return # Return to continue waiting for data

Для получения данных сначала используйтеSetContractTypeФункция в платформе FMZ API для подписки на фьючерсные сорта, а затем использоватьGetRecordsВы также можете передать в K-линейный массив указаниеPERIOD_M11минуты при использованииGetRecords function.

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

Шаг 4: функция времени обработки

def current_time():
    current_time = bar_arr[-1]['Time'] # Get current K-line timestamp
    time_local = time.localtime(current_time / 1000) # Processing timestamp
    hour = time.strftime("%H", time_local) # Format the timestamp and get the hour
    minute = time.strftime("%M", time_local) # Format the timestamp and get the minute
    if len(minute) == 1:
        minute = "0" + minute
    return int(hour + minute)

При расчете верхней и нижней рельсов и размещении ордеров необходимо судить, соответствует ли текущее время торговому времени, указанному нами, поэтому для облегчения суждения нам необходимо иметь дело с конкретными часами и минутами текущей K-линии.

Шаг 5: Вычислить верхние и нижние рельсы

global up_line, down_line, trade_count # Introduce global variables
current_time = current_time() # processing time
if current_time == 930: # If the latest K-line time is 09:30
    up_line = TA.Highest(bar_arr, 30,'High') + count # The highest price of the first 30 k line bars
    down_line = TA.Lowest(bar_arr, 30,'Low')-count # The lowest price of the first 30 ke line bars
    trade_count = 0 # Reset the number of transactions to 0

Шаг 6: Получить позиции

position_arr = _C(exchange.GetPosition) # Get position array
if len(position_arr) > 0: # If the position array length is greater than 0
    position_arr = position_arr[0] # Get position dictionary data
    if position_arr['ContractType'] =='rb888': # If the position symbol is equal to the subscription symbol
        if position_arr['Type']% 2 == 0: # If it is a long position
            position = position_arr['Amount'] # The number of assigned positions is a positive number
        else:
            position = -position_arr['Amount'] # Assign a negative number of positions
        profit = position_arr['Profit'] # Get position profit and loss
else:
    position = 0 # The number of assigned positions is 0
    profit = 0 # Assign position profit and loss to 0

Статус позиции включает в себя стратегическую логику.GetPositionфункция получения информации о реальной позиции, включая: направление позиции, прибыль и убыток от позиции, количество позиций и т.д.

Шаг 7: Заказать

# If it is close to market closing or reach taking profit and stopping loss
if current_time > 1450 or profit > stop * 3 or profit < -stop:
    if position > 0: # If holding a long position
        exchange.SetDirection("closebuy") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Close long order
    elif position <0: # If holding an empty order
        exchange.SetDirection("closesell") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Close short order
# If there is no current position, and it is less than the specified number of transactions, and within the specified trading time
if position == 0 and trade_count < 2 and 930 < current_time < 1450:
    if current_close > up_line: # If the price is greater than the upper line
        exchange.SetDirection("buy") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Open long order
        trade_count = trade_count + 1 # Increase the number of transactions
    elif current_close < down_line: # If the price is less than the lower line
        exchange.SetDirection("sell") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Open a short order
        trade_count = trade_count + 1 # Increase the number of transactions

Чтобы избежать ошибок в стратегии, лучше всего написать логику закрытия позиции перед логикой открытия позиции. В этой стратегии при открытии позиции сначала определяется текущее состояние позиции, находится ли она в течение указанного торгового времени, а затем определяется связь между текущей ценой и верхними и нижними рельсами.

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

Полная стратегия

Нажмите, чтобы скопировать исходный код стратегииhttps://www.fmz.com/strategy/179805обратная проверка без настройки

Конец

Выше приведен принцип и анализ кода стратегии HANS123. На самом деле, стратегия HANS123 обеспечивает лучшее время для входа на рынок. Вы также можете улучшить время выхода в соответствии с вашим пониманием рынка и пониманием сделки, или в соответствии с волатильностью разновидности Для оптимизации таких параметров, как получение прибыли и остановка убытков для достижения лучших результатов.


Связанные

Больше