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

Альтернативные торговые идеи — стратегия торговли в области K-линии

Создано: 2023-11-03 17:12:42, Обновлено: 2024-11-08 09:08:54
comments   0
hits   1617

Альтернативные торговые идеи — стратегия торговли в области K-линии

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

Основная идея стратегии зоны К-линии

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

Принцип стратегии зоны К-линии

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

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

Преимущества стратегии зоны K-line

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

  • Он предоставляет простой и интуитивно понятный способ определения возможности разворота тренда, помогая трейдерам лучше понимать рыночные тенденции.
  • Сочетание индикаторов K-line и KDJ повышает надежность и точность стратегии.
  • Он очень гибкий и может корректировать параметры в соответствии с рыночными условиями для удовлетворения различных торговых потребностей.

Риски стратегии зоны К-линии

Хотя стратегия «область свечей» имеет определенные преимущества, она также несет в себе некоторые риски, в том числе:

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

Направление оптимизации стратегии зоны K-line

Для оптимизации стратегии зоны К-линии можно рассмотреть следующие направления:

  • Оптимизация параметров: постоянно корректируйте и оптимизируйте пороговые значения и параметры индикатора KDJ для адаптации к различным рыночным условиям и торговым потребностям.
  • Управление рисками: Внедряйте эффективные стратегии управления рисками, включая правила стоп-лосса и тейк-профита, чтобы снизить риск убытков.
  • Комбинация нескольких стратегий: Объедините стратегию области K-линии с другими стратегиями, чтобы улучшить эффективность комплексной торговой стратегии.
  • Мониторинг и корректировка в режиме реального времени: регулярно контролируйте эффективность стратегии и вносите корректировки и улучшения на основе фактических условий.

Реализуйте эту стратегию с помощью JavaScript

  • Рассчитайте площадь подсвечника

  • Сигнал на открытие длинной позиции:

(1) «Зона К-линии» нисходящего тренда достигает порога, который может быть установлен до

(2) Значение индикатора KDJ больше 80

  • Сигнал на открытие короткой позиции:

(1) «Зона К-линии» восходящего тренда достигает порога, который может быть установлен до

(2) Значение индикатора KDJ меньше 20

  • Длинный/короткий выход: отслеживание ATR стоп-лосса и тейк-профита

Реализация кода

// 参数
var maPeriod = 30
var threshold = 50000
var amount = 0.1

// 全局变量
let c = KLineChart({})
let openPrice = 0
let tradeState = "NULL"  // NULL BUY SELL

function calculateKLineArea(r, ma) {
    var lastCrossUpIndex = null
    var lastCrossDownIndex = null
    for (var i = r.length - 1 ; i >= 0 ; i--) {
        if (ma[i] !== null && r[i].Open < ma[i] && r[i].Close > ma[i]) {
            lastCrossUpIndex = i
            break
        } else if (ma[i] !== null && r[i].Open > ma[i] && r[i].Close < ma[i]) {
            lastCrossDownIndex = i
            break
        }

        if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close < ma[i - 1] && r[i].Close > ma[i]) {
            lastCrossUpIndex = i
            break
        } else if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close > ma[i - 1] && r[i].Close < ma[i]) {
            lastCrossDownIndex = i
            break
        }
    }

    var area = 0
    if (lastCrossDownIndex !== null) {
        for (var i = r.length - 1 ; i >= lastCrossDownIndex ; i--) {
            area -= Math.abs(r[i].Close - ma[i])
        }
    } else if (lastCrossUpIndex !== null) {
        for (var i = r.length - 1 ; i >= lastCrossUpIndex ; i--) {
            area += Math.abs(r[i].Close - ma[i])
        }
    }

    return [area, lastCrossUpIndex, lastCrossDownIndex]
}

function onTick() {
    var r = _C(exchange.GetRecords)
    if (r.length < maPeriod) {
        LogStatus(_D(), "K线数量不足")
        return 
    }
    var ma = TA.MA(r, maPeriod)
    var atr = TA.ATR(r)
    var kdj = TA.KDJ(r)
    var lineK = kdj[0]
    var lineD = kdj[1]
    var lineJ = kdj[2]
    var areaInfo = calculateKLineArea(r, ma)
    var area = _N(areaInfo[0], 0)
    var lastCrossUpIndex = areaInfo[1]
    var lastCrossDownIndex = areaInfo[2]
    
    r.forEach(function(bar, index) {
        c.begin(bar)
        c.plotcandle(bar.Open, bar.High, bar.Low, bar.Close, {overlay: true})
        let maLine = c.plot(ma[index], "ma", {overlay: true})
        let close = c.plot(bar.Close, 'close', {overlay: true})
        c.fill(maLine, close, {color: bar.Close > ma[index] ? 'rgba(255, 0, 0, 0.1)' : 'rgba(0, 255, 0, 0.1)'})
        if (lastCrossUpIndex !== null) {
            c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
        } else if (lastCrossDownIndex !== null) {
            c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
        }
        c.plot(lineK[index], "K")
        c.plot(lineD[index], "D")
        c.plot(lineJ[index], "J")

        c.close()
    })
    
    if (tradeState == "NULL" && area < -threshold && lineK[lineK.length - 1] > 70) {
        // long
        let tradeInfo = $.Buy(amount)
        if (tradeInfo) {
            openPrice = tradeInfo.price
            tradeState = "BUY"
        }
    } else if (tradeState == "NULL" && area > threshold && lineK[lineK.length - 1] < 30) {
        // short
        let tradeInfo = $.Sell(amount)
        if (tradeInfo) {
            openPrice = tradeInfo.price
            tradeState = "SELL"
        }
    }
    
    let stopBase = tradeState == "BUY" ? Math.max(openPrice, r[r.length - 2].Close) : Math.min(openPrice, r[r.length - 2].Close)
    if (tradeState == "BUY" && r[r.length - 1].Close < stopBase - atr[atr.length - 2]) {
        // cover long
        let tradeInfo = $.Sell(amount)
        if (tradeInfo) {
            tradeState = "NULL"
            openPrice = 0
        }        
    } else if (tradeState == "SELL" && r[r.length - 1].Close > stopBase + atr[atr.length - 2]) {
        // cover short 
        let tradeInfo = $.Buy(amount)
        if (tradeInfo) {
            tradeState = "NULL"
            openPrice = 0
        }        
    }

    LogStatus(_D(), "area:", area, ", lineK[lineK.length - 2]:", lineK[lineK.length - 2])
}


function main() {    
    if (exchange.GetName().includes("_Futures")) {
        throw "not support Futures"
    }
    while (true) {
        onTick()
        Sleep(1000)
    }
}

Логика стратегии очень проста:

  1. Сначала определяются некоторые глобальные переменные и параметры, в том числе:

Параметры стратегии

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

Глобальные переменные

  • c: Объект диаграммы K-line, используемый для построения диаграмм.
  • openPrice: записывает цену открытия.
  • tradeState: записывает статус транзакции, который может быть «NULL» (пустая позиция), «BUY» (покупка) или «SELL» (продажа).

Функция расчета

  • Функция calculateKLineArea: эта функция используется для расчета площади между ценой и скользящей средней за определенный период времени на графике японских свечей и возвращает значение площади, индекс японской свечи последнего пересечения и индекс японской свечи последнего пересечения. крест-накрест. Эти значения используются в последующих решениях для определения того, когда покупать и продавать.

Функция основного цикла

  • Функция onTick: Это основная функция выполнения стратегии. Ниже приведены операции внутри функции:

а. Получите последние данные K-линии и убедитесь, что количество K-линий не меньше maPeriod, в противном случае запишите статус и вернитесь.

б) Рассчитайте скользящую среднюю ma и индикатор ATR atr, а также индикатор KDJ.

c. Получите информацию о площади, последний индекс восходящей линии К и последний индекс нисходящей линии К из areaInfo.

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

е. Определить время купли-продажи на основе условий:

Если tradeState равно «NULL», а область меньше -threshold и значение свечи KDJ больше 70, выполняется операция покупки. Если tradeState равно «NULL», а площадь больше порогового значения, а значение свечи KDJ меньше 30, выполнить операцию продажи. е. Установите условия стоп-лосса и тейк-профита и закройте позицию, если условия выполнены:

Если он находится в состоянии покупки, позиция закрывается, когда цена становится ниже цены закрытия предыдущего торгового дня за вычетом ATR предыдущего дня. Если позиция находится в состоянии продажи, то она закрывается, когда цена становится выше цены закрытия предыдущего торгового дня плюс ATR предыдущего дня. основная функция: это основная точка входа выполнения, проверяющая, содержит ли имя обмена «_Futures”, если включено, выдает исключение, в противном случае входит в бесконечный цикл, выполняет функцию onTick в каждом цикле и засыпает на 1 секунду.

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

Эту модель можно легко реализовать с помощью JavaScript на FMZ.COM без использования большого количества строк кода. Графическое представление области К-линии легко достигается с помощью функции KLineChart. Стратегия разработана для спотового рынка криптовалют и использует шаблон «Библиотека спотовой торговли цифровой валютой». Размещение заказов с использованием функций, инкапсулированных в шаблон, также очень простое, легкое в использовании и понятное.

Стратегия бэктестинга

Альтернативные торговые идеи — стратегия торговли в области K-линии

Альтернативные торговые идеи — стратегия торговли в области K-линии

Я случайно выбрал период времени для бэктестинга. Хотя я не терял деньги, я не накапливал прибыль непрерывно, поэтому проблема просадки все еще была довольно большой. Должны быть и другие направления оптимизации и пространство для этой стратегии. Желающие могут попробовать усовершенствовать эту стратегию.

Альтернативные торговые идеи — стратегия торговли в области K-линии

Благодаря этой стратегии, помимо изучения более альтернативной торговой идеи, мы также научились рисовать графики; представлять область, ограниченную линией К и скользящей средней; рисовать индикатор KDJ и т. д.

Подвести итог

Стратегия области K-line — это торговая стратегия, основанная на амплитуде ценового тренда и индикаторе KDJ. Она помогает трейдерам прогнозировать рыночные тренды, анализируя область между K-line и скользящей средней и конвертацию настроений покупки и продажи. Несмотря на определенные риски, благодаря постоянной оптимизации и корректировке эта стратегия может стать мощным торговым инструментом, помогающим трейдерам лучше справляться с колебаниями рынка. Важно, чтобы трейдеры могли гибко настраивать параметры и правила своих стратегий в соответствии с конкретной ситуацией и рыночными условиями для достижения лучших результатов торговли.