3.5 Шаблон стратегии

Автор:Маленькие мечты, Создано: 2017-01-19 16:04:24, Обновлено: 2017-10-11 10:27:27

3.5 Шаблон стратегии


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

img

  • Шаги к использованию:

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

    • 2, При написании политики используйте ссылку на шаблоны рамки стратегии в таблице, приведенной ниже:

      img

  • Вставьте код к шаблону шаблона для проверки шаблона рамки политики (в шаблоне шаблона, который уже написан на странице политики, выберите шаблон шаблона рамки политики):

    var TASK_IDLE = 0;          // 空闲状态命令
    var TASK_OPEN_LONG = 1;     // 建多仓命令
    var TASK_OPEN_SHORT = 2;    // 建空仓命令
    var TASK_ADD = 3;           // 加仓命令
    var TASK_ST = 4;            // 止损命令
    var TASK_COVER = 5;         // 平仓命令
    function onTick1() {        // 趋势系统1: 均线  具体买卖逻辑实现
        // MA 
        var records = _C(exchanges[0].GetRecords);
        if(records.length < 11){
            return $.TaskCmd(TASK_IDLE);
        }
        var ema_fast = TA.MA(records, 7);
        var ema_slow = TA.MA(records, 10);
        var data = "fast[-2]:" + ema_fast[ema_fast.length - 2] + " slow[-2]" + ema_slow[ema_slow.length - 2] + " fast[-1]:" + ema_fast[ema_fast.length - 1] + " slow[-1]:" + ema_slow[ema_slow.length - 1];
        $.AddData(0, "MA", data);
        if (ema_fast[ema_fast.length - 1] < ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] > ema_slow[ema_slow.length - 2]) {
            return $.TaskCmd(TASK_COVER);
        }else if(ema_fast[ema_fast.length - 1] > ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] < ema_slow[ema_slow.length - 2]){
            return $.TaskCmd(TASK_OPEN_LONG, 0.5);
        }
        return $.TaskCmd(TASK_IDLE);
    }
    function onTick2() {        // 趋势系统2:MACD  具体买卖逻辑实现
        // MACD
        var records = _C(exchanges[1].GetRecords);
        if(records.length < 15){
            return $.TaskCmd(TASK_IDLE);
        }
        var macd = TA.MACD(records);
        var dif = macd[0];
        var dea = macd[1]; 
        var data = "dif[-2]:" + dif[dif.length - 2] + " dea[-2]" + dea[dea.length - 2] + " dif[-1]:" + dif[dif.length - 1] + " dea[-1]:" + dea[dea.length - 1];
        $.AddData(1, "MACD", data);
        if (dif[dif.length - 1] > dea[dea.length - 1] && dif[dif.length - 2] < dea[dea.length - 2]) {
            return $.TaskCmd(TASK_COVER);
        }else if(dif[dif.length - 1] < dea[dea.length - 1] && dif[dif.length - 2] > dea[dea.length - 2]){
            return $.TaskCmd(TASK_OPEN_LONG, 0.8);
        }
        return $.TaskCmd(TASK_IDLE);
    }
    function main() {
        $.Relation_Exchange_onTick(exchanges[0], onTick1);    // 把 添加的第一个交易所  关联  趋势系统1 即 均线MA 
        $.Relation_Exchange_onTick(exchanges[1], onTick2);    // 把 添加的第二个交易所  关联  趋势系统2 即 MACD
        $.Trend();  // 不用传参数。                             // 启动模板
    }
    
  • Описание функций экспорта:

    • Приказ:
    TASK_IDLE = 0;          // 空闲状态命令
    TASK_OPEN_LONG = 1;     // 建多仓命令
    TASK_OPEN_SHORT = 2;    // 建空仓命令
    TASK_ADD = 3;           // 加仓命令
    TASK_ST = 4;            // 止损命令
    TASK_COVER = 5;         // 平仓命令
    

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

    • 1, $.Relation_Exchange_onTick ((p1, p2)); Параметры p1 : Объект биржи, например exchanges[0], то есть страница конфигурации робота Первый объект биржи, добавленный. Параметры p2 : настраиваемые логические функции, такие как onTick1 в примере, могут передавать имена функций.

    • 2, $.TaskCmd ((p1, p2)); Параметры p1 : отправляется команда для выполнения шаблона, например: TASK_OPEN_LONG // создание команды для множества лагерей Параметр p2: При отправке команды TASK_IDLE, TASK_COVER параметры не могут быть переданы. Другие команды должны следовать за количественным параметром p2, который указывает количество операций. Вызов требует return $.TaskCmd ((p1, p2); возвращается в функции onTick.

    • 3, $.Тренд ((); Без параметров

    • 4, $.AddData ((p1, p2, p3); // добавляется к концу таблицы в строке состояния. Параметры p1 : индекс таблицы, которую нужно добавить, 0 - первый, 1 - второй ((при условии, что второй обмен уже связан с $.Relation_Exchange_onTick) Параметр p2 : имя свойства добавленного контента, в данном случае данные добавленного показателя отображаются в таблице состояния; (MA и MACD)

      Параметр p3 : строка, преобразует данные, которые вы хотите показать, в строку, передаваемую в p3.

  • Вот пример анализа кода для функции onTick1 в логике транзакций:

    function onTick1() {        // 趋势系统1: 均线  具体买卖逻辑实现
        // MA 
        var records = _C(exchanges[0].GetRecords); // 用跟 onTick1 函数 绑定的交易所 exchanges[0] 对象 获取该交易所的K线数据。
        if(records.length < 11){                   // 判断K线数据是否足够长度
            return $.TaskCmd(TASK_IDLE);           // K线数据长度不足时,发送等待命令。程序则不执行下面的代码。
        }
        var ema_fast = TA.MA(records, 7);          // 根据长度足够的K线数据计算 周期为7 的均线数据 即: 快线
        var ema_slow = TA.MA(records, 10);         // 计算 慢线
        var data = "fast[-2]:" + ema_fast[ema_fast.length - 2] + " slow[-2]" + ema_slow[ema_slow.length - 2] + " fast[-1]:" + ema_fast[ema_fast.length - 1] + " slow[-1]:" + ema_slow[ema_slow.length - 1];
        // 处理数据 组合为 字符串 data
        $.AddData(0, "MA", data);                  // 向状态栏表格 添加数据显示
        if (ema_fast[ema_fast.length - 1] < ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] > ema_slow[ema_slow.length - 2]) {               // 平仓触发判断
            return $.TaskCmd(TASK_COVER);          // 发送平仓命令
        }else if(ema_fast[ema_fast.length - 1] > ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] < ema_slow[ema_slow.length - 2]){           // 开仓触发判断
            return $.TaskCmd(TASK_OPEN_LONG, 0.5); // 发送开多仓命令
        }
        return $.TaskCmd(TASK_IDLE);               // 没有任何 触发,发送等待命令。
    }
    
  • Он показывает:

    img

    img

  • Интерактивность шаблонов стратегии

    Поскольку в шаблоне не добавляется функциональность для интерактивного контроля, интерактивный контроль может быть добавлен только по ссылке на политику шаблона в рамке.Шаги: 1, в взаимодействии с политикой добавляется элемент типа строки, и имя элемента пишется как JS_code:img

    2, затем нажмите на зеленый знак плюс, нажмите на сохранить.img

    3, когда политика выполняется, все команды отображаются и могут быть непосредственно скопированы и отправлены в политику.img

    Формат команды CMD ((index, CMD_STR, amount) Первый параметр: индекс обозначает, на какой бирже работает, местоположение индекса написано на 0, то есть представляет операцию первой биржи, и так далее. Второй параметр: команды, отображаемые в начале формы. Третий параметр: количество операций.

    Например:img

    Другие команды используют тот же метод.

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


Больше

РитуалКогда я сомневаюсь, я всегда нахожу направление в совокупности снов.

Маленькие мечтыОчень важно, чтобы вы были готовы к этому.