合约跟单交易所系统开发(搭建)

合约,又称期货合约,是指由期货交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量和质量商品的标准化合约。简单来说就是做未来的生意。
合约交易是一种金融衍生品,它是相对于现货市场的交易,用户可以在期货合约交易中通过判断涨跌,选择买入做多或者卖出做空合约,来获得价格上涨或者下跌带来的收益,这是合约交易的基本逻辑。简单来说就是,对于开了多仓的用户,开仓后比特币涨了就赚钱,跌了就亏钱。相反,对于开了空仓的用户,开仓后比特币涨了就亏钱,跌了就赚钱。绝大多数用户都是利用期货合约的保证金制度,加十倍甚至百倍杠杆撬动大资金,再利用指数波动,低买高卖交易合约,从而赚取成倍的利润。
按照交割方式的不同,合约可以分为永续合约和定期合约。两者之间的主要区别在于定期合约有固定交割日,而永续合约没有。其中定期合约按照交割时间的不同又可以分成三类,即:当周合约、次周合约和季度合约。当然,不同的交易所的交易合约也不尽相同,因时而异。
数字货币交易所有很多种交易所,其中使用较多的是币币、OTC、C2C、期货、杠杆等,而合约交易系统又分为很多种类型。
随着数字货币交易市场发展,整个交易所市场中,合约交易一直是交易所交易量占比比重高的场所,而合约跟单模式的出现让更多新玩家参与到合约模式中。
而合约跟单对于系统的要求比较高,跟单必须要实现几乎完全同步、分毫不差,要实现才行。想要解决这个问题,人工跟单难以做到,只有系统跟单可以,而且对系统的处理要求技术更强。好的系统配上好的策略投资者才能盈利,这样才会源源不断吸引更多用户进来。

  constructor(address ownerAddress) public {
    levelPrice[1] = 0.025 ether;
    for (uint8 i = 2; i <= LAST_LEVEL; i++) {
        levelPrice[i] = levelPrice[i-1] * 2;
    }
    
    owner = ownerAddress;
    
    User memory user = User({
        id: 1,
        referrer: address(0),
        partnersCount: uint(0)
    });
    
    users[ownerAddress] = user;
    idToAddress[1] = ownerAddress;
    
    for (uint8 i = 1; i <= LAST_LEVEL; i++) {
        users[ownerAddress].activeX3Levels[i] = true;
        users[ownerAddress].activeX6Levels[i] = true;
    }
    
    userIds[1] = ownerAddress;
}

function() external payable {
    if(msg.data.length == 0) {
        return registration(msg.sender, owner);
    }
    
    registration(msg.sender, bytesToAddress(msg.data));
}

function registrationExt(address referrerAddress) external payable {
    registration(msg.sender, referrerAddress);
}

function buyNewLevel(uint8 matrix, uint8 level) external payable {
    require(isUserExists(msg.sender), "user is not exists. Register first.");
    require(matrix == 1 || matrix == 2, "invalid matrix");
    require(msg.value == levelPrice[level], "invalid price");
    require(level > 1 && level <= LAST_LEVEL, "invalid level");

    if (matrix == 1) {
        require(!users[msg.sender].activeX3Levels[level], "level already activated");

        if (users[msg.sender].x3Matrix[level-1].blocked) {
            users[msg.sender].x3Matrix[level-1].blocked = false;
        }

        address freeX3Referrer = findFreeX3Referrer(msg.sender, level);
        users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
        users[msg.sender].activeX3Levels[level] = true;
        updateX3Referrer(msg.sender, freeX3Referrer, level);
        
        emit Upgrade(msg.sender, freeX3Referrer, 1, level);

    } else {
        require(!users[msg.sender].activeX6Levels[level], "level already activated"); 

        if (users[msg.sender].x6Matrix[level-1].blocked) {
            users[msg.sender].x6Matrix[level-1].blocked = false;
        }

        address freeX6Referrer = findFreeX6Referrer(msg.sender, level);
        
        users[msg.sender].activeX6Levels[level] = true;
        updateX6Referrer(msg.sender, freeX6Referrer, level);
        
        emit Upgrade(msg.sender, freeX6Referrer, 2, level);
    }
}    

猜你喜欢

转载自blog.csdn.net/m0_51754086/article/details/109315376