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

3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

Создано: 2017-01-04 19:00:10, Обновлено: 2017-10-11 10:27:01
comments   19
hits   5333

3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)


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

3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

На сайте “Стратегический площадь” опубликовано:

3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

  • ### В наличии:

Накопительная торговля, как и в предыдущих криптовалютах.

  • ### Фьючерсы:

параметр: 3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

Тест-код, придуманный для стратегии:

  function main() {
    if (exchange.GetName() === 'Futures_OKCoin') {
        var info = exchange.SetContractType("this_week");
        Log("info 返回值:", info);
        Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
        var depth = exchange.GetDepth();
        var p = $.NewPositionManager();
        p.OpenShort("this_week", 10, depth.Bids[0].Price - 2);
        Log(exchange.GetPosition());
        Sleep(500 * 1000);
        depth = exchange.GetDepth();
        var ret = p.Cover("this_week", depth.Bids[0].Price + 2, 5);
        Log("cover ret:", ret);
        //LogProfit(p.Profit());
        Log(exchange.GetPosition());
        Log("-----------------------------测试分割线----------------------------------------");
        var depth = exchange.GetDepth();
        p.OpenLong("this_week", 20, depth.Bids[0].Price + 2);
        Log(exchange.GetPosition());
        Sleep(500 * 1000);
        depth = exchange.GetDepth();
        var ret = p.Cover("this_week", depth.Bids[0].Price - 2, 10, PD_LONG);
        Log("cover ret:", ret);
        Log(exchange.GetPosition());
        Log("-----------------------------测试分割线----------------------------------------");
        var ret = p.Cover("this_week", depth.Bids[0].Price - 3, 10, PD_LONG);
        Log("cover ret:", ret);
        var ret = p.Cover("this_week", depth.Bids[0].Price + 3, 5, PD_SHORT);
        Log("cover ret:", ret);
        Log(exchange.GetPosition());
    } else if (exchange.GetName() === 'Futures_BitVC') {
        var info = exchange.SetContractType("week");
        Log("info 返回值:", info);
        Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
        var depth = exchange.GetDepth();
        var p = $.NewPositionManager();
        p.OpenLong("week", 500, depth.Bids[0].Price + 2);
        Log(exchange.GetPosition());
        Sleep(500 * 1000);
        depth = exchange.GetDepth();
        var ret = p.Cover("week", depth.Bids[0].Price - 2, 500);
        Log("cover ret:", ret);
        Log(exchange.GetPosition());
        Log("-----------------------------测试分割线----------------------------------------");
        var info = exchange.SetContractType("week");
        Log("info 返回值:", info);
        Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
        var depth = exchange.GetDepth();
        p.OpenShort("week", 600, depth.Bids[0].Price - 2);
        Log(exchange.GetPosition());
        Sleep(500 * 1000);
        depth = exchange.GetDepth();
        var ret = p.Cover("week", depth.Bids[0].Price - 2, 500, PD_SHORT);
        Log("cover ret:", ret);
        Log(exchange.GetPosition());
        Log("-----------------------------测试分割线----------------------------------------");
        var ret = p.Cover("week", depth.Bids[0].Price + 3, 100, PD_SHORT);
        Log("cover ret:", ret);
        //p.Cover("week", depth.Asks[0].Price - 3, 300, PD_LONG);
        Log(exchange.GetPosition());
    } else if(exchange.GetName() === 'huobi' || exchange.GetName() === 'OKCoin'){
        Log($.GetAccount());
        Log($.Buy(0.5));
        Log($.Sell(0.5));
        exchange.Buy(1000, 3);
        $.CancelPendingOrders(exchanges[0]);
        Log($.Cross(30, 7));
        Log($.Cross([1,2,3,2.8,3.5], [3,1.9,2,5,0.6]));
    }
  }

Использование: 3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

Тест-код в стратегии ((Выберите шаблон ссылки))

3.2 Шаблон: Библиотека торговли цифровой валютой (интегрированная поддержка спотовых и фьючерсных сделок OKCoin/BitVC)

Стратегия тестирования:

function main(){
    var p = $.NewPositionManager();
    var i = 0;
    exchanges[0].SetContractType("this_week");
    var isFirst = true;
    var ret = null;
    while(true){
        var depth = _C(exchanges[0].GetDepth);
        var positions = _C(exchanges[0].GetPosition);
        var len = positions.length;
        if(isFirst === true && i % 3 === 0 && len === 0){
            ret = p.OpenLong("this_week", 1 + (i % 3) + (i % 2), depth.Asks[0].Price);
            isFirst = false;
        }else if(isFirst === false){
            ret = p.OpenShort("this_week", 1 + (i % 3) + (i % 2), depth.Bids[0].Price);
            isFirst = true;
        }else{
            for(var j = 0 ; j < len; j++){
                if(positions[j].Type === PD_LONG){
                    ret = p.Cover("this_week", depth.Bids[0].Price - 2, positions[j].Amount, PD_LONG);
                }else if(positions[j].Type === PD_SHORT){
                    ret = p.Cover("this_week", depth.Asks[0].Price + 2, positions[j].Amount, PD_SHORT);    
                }
                Log("ret:", ret);
            }
        }
        Log("ret", ret, "---------------------#FF0000");
        i++;
        Sleep(1000 * 60 * 15);
    }
}

Если у вас есть какие-либо вопросы, BUG, пожалуйста, свяжитесь с автором, спасибо!