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

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

Автор:Соленые бобы, Дата: 2020-04-18 22:54:45
Тэги:ATR

Полная публикация: T.S.S. Ниже приведены трансляции. Пожалуйста, обратите внимание на "Квантифицированный мир в тысячах" и получите больше стратегического исходного кода! И еще он сделал себе рекламу. Общественный журнал "Квантированный журнал о соленой фасоле" Онлайн количественное банкротство - публичное наказание каждый день. Если вы хотите получить больше пособий, приезжайте.

Это просто Демо! Демо! Тетя Демо! Родители, будьте осторожны!


Если вы хотите, чтобы ваши деньги были доступны для вас, вы должны использовать их, чтобы заработать деньги в биткоин. Оригинальное: Океан Океан Миллионы Количественный мир 3 дня назад Разработка и разработка количественной стратегии на самом деле является двусторонней, очень сложной для тех, кто только начинает, сложной не только для кода на уровне хитрости хитрости, но также сложной и для стратегического логического мышления на уровне хитрости.

Здравствуйте, тысячи количественных друзей!

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

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

В следующей статье мы рассмотрим некоторые из них.

01

Преамбула

Здравствуйте, сегодня мне посчастливилось поделиться статьей в количественном общественном номере, а также поблагодарить Т-босса за приглашение (один из тысяч посторонних номеров). Впервые написал статью Т-боссу, полностью свободно играть, позаимствовал свободное время после работы, качество и ошибки.

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

После того, как мы закончили с этим, мы начинаем с основного вопроса.

02

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

Люди, которые знают меня, знают, что лично я не очень люблю играть в альфа, относительно я больше доверяю бетам, больше изучаю беты. Что касается того, почему, e.........mmmmm, не знаю, мама ответила, пожалуйста, пополните свой мозг.

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

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

Конкретный графический визуализационный интерфейс можно найти в следующем PPT. Этот график сам нарисовал с помощью Pyecharts.

img

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

img

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

img

На самом деле, после прочтения данных, с помощью панды можно вычислить показатели.

img

После завершения вычисления можно вывести данные с помощью функции pd.to_csv и визуализировать вывод pyecharts, используемых в скриншоте выше (примечание: я использую старые версии pyecharts).

Все конкретные стратегии, визуализации и коды показателей эффективности - это болтовня Т-диагона.

03

Разговоры о количестве

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

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

В конце концов, количественная стратегия была обычным предметом, программируемые сделки принадлежат к подмножеству количественных, уже в свое время в университете (около 2009 года), когда кто-то охотился за программированием, например, ТБ, пирамида, и т. д. Если это будет продолжаться сегодня, можно сказать, что эта часть первых пророков уже 10 лет назад, в том числе и те, кто не включает высокочастотные стратегии и системы, которые вернулись из Уолл-стрит. Поэтому количественная стратегия или так называемая программируемая стратегия в Китае существует уже некоторое время, но в настоящее время она является частью рынка и участников, а также политической поддержки.

В заключение, я хочу поблагодарить тысячи людей за доверие к моей профессии и приглашение написать статью. Если у вас есть какие-либо конкретные проблемы с кодом и стратегией, пожалуйста, напишите мне лично или T-Dawg, я тоже в группе T-Dawg.

В конце концов, еще раз благодарю вас за замечательную лекцию!

Для тех, кто еще не присоединился к группе по количественному обсуждению, присоединяйтесь и получите информацию!

"Сегодня мы должны быть готовы к тому, что мы не сможем выжить.

img

Вейчмены стерли Обратите внимание на этот номер


/*backtest
start: 2019-04-18 00:00:00
end: 2020-04-17 23:59:00
period: 15m
exchanges: [{"eid":"Futures_BitMEX","currency":"XBT_USD"}]
*/

// 胖友们!! 实盘前请注意!! 此内容仅是吕神翻译demo, 上实盘请自行添加相关内容.
// 是Demo!!! 实盘谨慎!!!

// 初始化
exchange.SetContractType('XBTUSD')
var vix_arr = []
var vix_ma = []
var vix_ma_up = []
var vix_ma_dw = []
var LastBarTime = 0
var isFirst = true

function initVix() {
    records = _C(exchange.GetRecords)
    Log(records.length)
    if (records && records.length > 2 * N + 2) {
        // 初始化前N个vix值
        for (var i = -2; i < N - 1; i++) {
            Bar = records[records.length - N + i]
            lastNbar = records[records.length - N + i - N]
            Vix()
        }
    }
    // Log("vix_arr", vix_arr.length, vix_arr)
    // Log("vix_ma", vix_ma.length, vix_ma)
    // Log("vix_ma_up", vix_ma_up.length, vix_ma_up)
    // Log("vix_ma_dw", vix_ma_dw.length, vix_ma_dw)
}

// 获取交易所信息
function UpdateInfo() {
    account = _C(exchange.GetAccount)
    pos = _C(exchange.GetPosition)
    records = _C(exchange.GetRecords)
    Bar = records[records.length - 1]
    lastNbar = records[records.length - N]
    ticker = _C(exchange.GetTicker)
}

// 计算波动率及上下轨
function Vix() {
    // 当每K结束时计算
    if (LastBarTime !== Bar.Time) {
        // 当K达到计算根数开始计算vix_arr
        if (records && records.length > N) {
            // 获取vix 当前close自然对数 除以 前90根自然对数 减一
            vix = Math.log(Bar.Close) / Math.log(lastNbar.Close) - 1
            vix_arr.push(vix)
            //Log("vix_arr", vix_arr)
        }
        // 当vix_arr达到计算根数时开始计算vix_ma
        if (vix_arr && vix_arr.length > N) {
            // 获取对应周期vix算其移动平均值
            vix_ma = TA.MA(vix_arr, N)
            // 去除ma中的null值
            vix_ma = vix_ma.filter(function(val) {
                return !(!val || val === "");
            })
            //Log("vix_ma", vix_ma)
            // 获取上下通道
            vix_up = TA.Highest(vix_arr, N)
            vix_dw = TA.Lowest(vix_arr, N)
            vix_ma_up.push(vix_up)
            vix_ma_dw.push(vix_dw)
            // Log("vix_ma_up", vix_ma_up)
            //Log("vix_ma_dw", vix_ma_dw)
            // 限制所有数组长度
            if (vix_arr.length > 2000) {
                vix_arr.splice(0, 1);
            }
            if (vix_ma.length > 2000) {
                vix_ma.splice(0, 1);
            }
            if (vix_ma_up.length > 2000) {
                vix_ma_up.splice(0, 1);
            }
            if (vix_ma_dw.length > 2000) {
                vix_ma_dw.splice(0, 1);
            }
        }
        LastBarTime = Bar.Time
    }
}

// 画线
function PlotMA_Kline(records, isFirst) {
    //$.PlotRecords(records, "K")
    if (isFirst) {
        for (var i = records.length - 1 - N; i <= records.length - 1; i++) {
            if (vix_ma[i] !== null) {
                $.PlotLine("vix_arr", vix_arr[i], records[i].Time)
                $.PlotLine("vix_ma", vix_ma[i], records[i].Time)
                $.PlotLine("vix_ma_up", vix_ma_up[i], records[i].Time)
                $.PlotLine("vix_ma_dw", vix_ma_dw[i], records[i].Time)
            }
        }
        PreBarTime = records[records.length - 1].Time
    } else {
        if (PreBarTime !== records[records.length - 1].Time) {
            $.PlotLine("vix_arr", vix_arr[vix_arr.length - 2], records[records.length - 2].Time)
            $.PlotLine("vix_ma", vix_ma[vix_ma.length - 2], records[records.length - 2].Time)
            $.PlotLine("vix_ma_up", vix_ma_up[vix_ma_up.length - 2], records[records.length - 2].Time)
            $.PlotLine("vix_ma_dw", vix_ma_dw[vix_ma_dw.length - 2], records[records.length - 2].Time)
            PreBarTime = records[records.length - 1].Time
        }
        $.PlotLine("vix_arr", vix_arr[vix_arr.length - 1], records[records.length - 1].Time)
        $.PlotLine("vix_ma", vix_ma[vix_ma.length - 1], records[records.length - 1].Time)
        $.PlotLine("vix_ma_up", vix_ma_up[vix_ma_up.length - 1], records[records.length - 1].Time)
        $.PlotLine("vix_ma_dw", vix_ma_dw[vix_ma_dw.length - 1], records[records.length - 1].Time)
    }
}

// 交易逻辑
function onTick() {
    // 无仓位时
    if (pos.length == 0) {
        // Long 当前K线的收盘价 > 上轨 && 之前K线的收盘价 <= 上轨
        if (vix_arr[vix_arr.length - 1] > vix_ma_up[vix_ma_up.length - 1] &&
            vix_arr[vix_arr.length - 2] <= vix_ma_up[vix_ma_up.length - 2]) {
            exchange.SetDirection("buy")
            exchange.Buy(ticker.Sell, Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'BK')
        }
        // Short 当前K线的收盘价 < 下轨 && 之前K线的收盘价 >= 下轨
        if (vix_arr[vix_arr.length - 1] < vix_ma_dw[vix_ma_dw.length - 1] &&
            vix_arr[vix_arr.length - 2] >= vix_ma_dw[vix_ma_dw.length - 2]) {
            exchange.SetDirection("sell")
            exchange.Sell(ticker.Buy, Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'SK')
        }
    }
    // 多仓时
    if (pos.length > 0 && pos[0].Type == 0) {
        // 平多 当前K线的收盘价 < 中轨 && 之前K线的收盘价 >= 中轨
        if (vix_arr[vix_arr.length - 1] < vix_ma[vix_ma.length - 1] &&
            vix_arr[vix_arr.length - 2] >= vix_ma[vix_ma.length - 2]) {
            exchange.SetDirection("closebuy")
            exchange.Sell(ticker.Buy, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'SBK')
        }
    }
    // 空仓时
    if (pos.length > 0 && pos[0].Type == 1) {
        // 平空 当前K线的收盘价 > 中轨 && 之前K线的收盘价 <= 中轨
        if (vix_arr[vix_arr.length - 1] > vix_ma[vix_ma.length - 1] &&
            vix_arr[vix_arr.length - 2] <= vix_ma[vix_ma.length - 2]) {
            exchange.SetDirection("closesell")
            exchange.Buy(ticker.Sell, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'PSK')
        }
    }
}

function main() {
    initVix()
    while (1) {
        UpdateInfo()
        Vix()
        onTick()
        if (records) {
            PlotMA_Kline(records, isFirst)
            //Log('画线')
            isFirst = false
        }
        Sleep(5 * 1000)
    }
}

Связанные

Больше

Изобретатель количественныйЯ пришел сюда через https://www.fmz.com/strategy/361827

кореньБобы всегда красивые.

Черный чай.Эта стратегия не имеет большого отношения к колебаниям.

проповедьЯ не могу описать частоту колебаний, кроме того, что я сделал 90 циклов назад, и я едва могу сказать, что это связь между величинами колебаний. Ссылаясь на метод открытия HH, LL, это операция с Dongch'an Channel DC, при которой привязка выбирает однолинейную стратегию. В целом это улучшенная система приморских морей. Я думаю, что мы должны быть готовы к тому, что мы можем сказать о подразумеваемой волатильности, или оставить это для экспертов.

Легкие облака.Сестра Бобо, возьмите багаж?

Стыдно.Если вы спросите меня, поддерживаю ли я, я, конечно, поддерживаю.

Стыдно.Если вы спросите меня, поддерживаю ли я, я, конечно, поддерживаю.

Легкие облака.Хорошо.

Соленые бобыЯ думаю, что в следующем полугодии будет свободно.

Легкие облака.。。。。。。。Отлично.

Соленые бобы(U^) но ~ YO

Соленые бобыСейчас у меня нет времени, и я не думаю о том, чтобы думать об этом в будущем... но я не очень хорошо кодирую... это то, что я не могу использовать серию. /(Ооооооо) /~~