Мартин Мартин: "Улучшение!

Автор:Маленькие мечты, Создано: 2022-02-07 09:12:36, Обновлено: 2023-09-20 10:11:23

img

Мартин Мартин: "Улучшение!

作为一个教学策略,兼顾一定的实战性能当然是最好的。「数字货币期货类马丁策略」在FMZ.COM围观板块也已经展示了小半年了。经历了好几拨风吹雨打,马丁、网格策略有其风险硬伤,参数保守一点也不是不能用。

  • Фьючерсные диски

    img

  • Диск dYdX

    img

По его словам, в результате не было никакой доходной кривой в производстве кукурузы.

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

В этой статье мы вместе с вами поднимаем уровень этой стратегии стабильности на протяжении полугода.

План модернизации

  • Показаны темы, в которых используются данные, а не данные, которые печатаются. Показаны текущие общие прибыли, плавающие прибыли, фактические прибыли и убытки (всего прибыли и убытки, которые уже учтены).
  • На графике показано, где находится текущая записка.

Версии политики до обновления записываются на странице "Записки" политики.

img

这个也是我的个人开发习惯,在FMZ.COM上很方便记录策略开发、迭代的点点滴滴。

Начинайте модернизацию! Сначала мы оптимизируем статус-лист, чтобы показать, что студенты, которые знакомы с документацией по разработке FMZ, знают, что показать данные статуса в FMZ - это очень важно.LogStatusФункция. Итак, мы находим эту точку входа и начинаем проектировать код.

img

В следующей строке мы добавим большой фрагмент кода:

                    var tblPos = {
                        "type" : "table",
                        "title" : "持仓",
                        "cols" : ["持仓数量", "持仓方向", "持仓均价", "持仓盈亏", "合约代码", "自定义字段 / " + SpecifyPosField],
                        "rows" : []
                    }
                    var descType = ["多头仓位", "空头仓位"]
                    for (var posIndex = 0 ; posIndex < pos.length ; posIndex++) {
                        tblPos.rows.push([pos[posIndex].Amount, descType[pos[posIndex].Type], pos[posIndex].Price, pos[posIndex].Profit, pos[posIndex].ContractType, SpecifyPosField == "" ? "--" : pos[posIndex].Info[SpecifyPosField]])
                    }
                    
                    var tbl = {
                        "type" : "table",
                        "title" : "数据",
                        "cols" : ["当前总权益", "实际盈亏", "当前价格", "买单价格/数量", "卖单价格/数量"],
                        "rows" : []
                    }
                    var buyOrder = null 
                    var sellOrder = null 
                    for (var orderIndex = 0 ; orderIndex < orders.length ; orderIndex++) {
                        if (orders[orderIndex].Type == ORDER_TYPE_BUY) {
                            buyOrder = orders[orderIndex]
                        } else {
                            sellOrder = orders[orderIndex]
                        }
                    }
                    var realProfit = currTotalEq - totalEq
                    if (exchange.GetName() == "Futures_Binance") {
                        _.each(pos, function(p) {
                            realProfit += parseFloat(p.Info.unRealizedProfit)
                        })                        
                    }
                    var t = exchange.GetTicker()
                    tbl.rows.push([currTotalEq, realProfit, t ? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount)])
                    
                    // 更新图表数据             
                    if (t && showLine) {
                        _.each(pos, function(p) {
                            $.PlotLine(descType[p.Type] + "持仓价格", p.Price)
                        })
                        $.PlotLine("买单挂单价格", buyOrder.Price)
                        $.PlotLine("卖单挂单价格", sellOrder.Price)
                        $.PlotLine("当前价格", t.Last)
                    }
                    
                    // 更新状态栏数据
                    LogStatus("时间:" + _D() + "\n" + "`" + JSON.stringify(tblPos) + "`" + "\n" + "`" + JSON.stringify(tbl) + "`")

Заменить простыеLogStatusВывод

LogStatus(_D(), "当前总权益:", currTotalEq, "持仓:", pos)

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

img

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

  • Параметры SpecifyPosField Для настройки первичных полей, в которых должна отображаться информация о хранении, так как названия первичных полей для хранения данных различны для каждой биржи. Поэтому здесь разработан индивидуальный параметр для указания названия полей, которые нужно отображать. Например, мой реальный диск:

    img

    Я хочу отобразить информацию о хранении в поле "Информация"unRealizedProfitПринадлежность, что удерживание не достигло прибыли и убытка. Параметр SpecifyPosField может быть установлен на unRealizedProfit.

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

После политики обновления перезагрузить диск Binance, dYdX

img

img

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


Связанные

Больше

AAA386В общем, n = 1 в исходном коде не имеет смысла?

ОтшельникЯ думаю, что это хорошо, что золото XAUUSD относительно резко падает резко падает не так сильно в монетной системе

О, да.Если вы хотите, чтобы вы могли использовать несколько валют одновременно, вы должны изменить параметр в зависимости от параметра прибыли.

Маленькие мечтыЭто может быть сделано по дизайну, но это кажется более рискованным, поэтому смерть n = 1.

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