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

Альтернативные торговые идеи - стратегия торговли площадью K-линии

Автор:Изобретатели количественного измерения - мечты, Создано: 2023-11-03 17:12:42, Обновлено: 2024-11-08 09:08:54

img

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

Основные идеи стратегии K-линии

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

Принципы стратегии K-линейной площади

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

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

Преимущества стратегии K-линейной площади

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

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

Риски стратегии K-линии

Несмотря на некоторые преимущества стратегии K-линии, она также сопряжена с некоторыми рисками, включая:

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

Оптимизация стратегии K-линейной площади

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

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

Использование языка JavaScript для реализации этой стратегии

  • Вычислить площадь линии K

  • Появились несколько сигналов:

    (1) Площадь линии K с понижающимся трендом достигает порога, до того как она будет сформирована.

    (2) Значение показателя KDJ больше 80

  • Сигнал открытия:

    (1) Площадь линии K с повышающимся трендом достигает порога, до того как она будет сформирована.

    (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)
    }
}

В этом случае, если вы не хотите, чтобы ваши дети были убиты, вы должны быть готовы.

Первое - это определение глобальных переменных и параметров, в том числе:

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

  • maPeriod: цикл движущегося среднего.
  • threshold: используется для определения порога покупки или продажи.
  • amount: Количество транзакций в каждой транзакции.

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

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

Вычислительная функция

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

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

  • Функция onTick: это основная функция, выполняющая политику, и следующие действия внутри функции:

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

    b. Вычислить движущиеся средние ma и ATR, а также KDJ.

    c. Получить информацию о площади из areaInfo, индекс K-строки, прошедшей последний раз на пересечении, и индекс K-строки, прошедшей последний раз на пересечении.

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

    e. Время покупки и продажи в зависимости от условий:

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

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

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

在FMZ.COM上使用JavaScript语言没有用多少行代码,很简单的就实现了这个模型。并且使用KLineChart函数很容易实现了K线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。

Стратегическая рецензия

img

img

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

img

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

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

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


Больше