小言_互联网的博客

技术图文:如何通过挂单刷 BigOne 的贡献值?

339人阅读  评论(0)

背景

这段时间 BigOne 开启了「挂单捡钱七天乐」活动,凡在活动期间进行有效挂单的用户均可获得「贡献值」奖励。

详细情况如下:

1. 参与交易对

BTC/USDT, EOS/USDT, ETH/USDT, ONE/USDT, EOS/BTC, ETH/BTC, EOS/ETH,共 7 个交易对。

2. 奖励额度

每个交易对每天的奖励额度为 10,000 「贡献值」,7 天共 490,000 「贡献值」。

3. 奖励获取方式

计算每个用户在各交易对的当日挂单得分,根据用户在某交易对的当日挂单得分占比瓜分相应的「贡献值」奖励。

4. 挂单得分计算方式

每分钟对每个交易对的挂单进行一次随机快照,并分别计算用户买单和卖单的挂单得分。

单次快照的买(卖)挂单得分 = 该用户在该交易对本次快照的有效挂单范围内的买(卖)挂单量 * 买(卖)挂单权重

选取用户单次快照期间,买单得分和卖单得分中较小的得分,作为用户该次快照的挂单得分。如果某位用户只挂买单或只挂卖单,最终的挂单得分将为 0。

用户当日在某交易对所有快照的挂单得分相加即为该用户当日在该交易对的最终挂单得分。

5. 「贡献值」使用说明

用户可以在每期「贡献值」开启兑换后,在 https://b1.run/one 可以用 1 「贡献值」+ 1 ONE 兑换 0.14 USDT 等值的 BTC 或 ONE。

6. 参考公告

  • 第一期「挂单捡钱七天乐」参见网址:

https://bigone.zendesk.com/hc/zh-cn/articles/360033862274-BigONE-%E5%B0%86%E5%BC%80%E5%90%AF-%E6%8C%82%E5%8D%95%E6%8D%A1%E9%92%B1%E4%B8%83%E5%A4%A9%E4%B9%90-%E6%B4%BB%E5%8A%A8

  • 第二期「挂单捡钱七天乐」参见网址:

https://bigone.zendesk.com/hc/zh-cn/articles/360034159754-%E7%AC%AC%E4%BA%8C%E6%9C%9F-%E6%8C%82%E5%8D%95%E6%8D%A1%E9%92%B1%E4%B8%83%E5%A4%A9%E4%B9%90-%E5%BC%80%E5%90%AF-%E7%8B%82%E9%80%81%E4%BB%B7%E5%80%BC%E7%BA%A6-38-%E4%B8%87-CNY-%E8%B4%A1%E7%8C%AE%E5%80%BC-

  • BigOne贡献值 参见网址:

https://bigone.zendesk.com/hc/zh-cn/articles/360024599514–%E7%99%BE%E5%80%8D%E5%AE%9A%E5%90%91%E5%9B%9E%E8%B4%AD-ONE-%E6%88%98%E7%95%A5%E5%8D%87%E7%BA%A7-%E8%AE%A9%E8%B4%A1%E7%8C%AE%E8%80%85%E4%B9%9F%E6%88%90%E4%B8%BA%E8%8E%B7%E7%9B%8A%E8%80%85


技术分析

开始没有关注这个活动,但在群里看到秒哥发了以下的消息:

哇,这比跑量化来钱快多了。我居然一天拿了3万贡献值。

大家快来挂单捡钱呀!

3万贡献值,哪怕花一年才能兑完。也是实实在在的3万人民币了。兑付时间久一点没关系,反正能兑出来的。

受到秒哥的刺激,我开始研究 BigOne 活动规则。

只要在 BigOne 快照时,挂单价格距离最新成交价上下 5% 以内就可以记分。想赚这个贡献值可以在 1分钟内 距离中线价格,上下 4% 循环挂单即可。

想明白之后,就开始写这块的代码。估计很多人看到这个捡钱的机会,加入了进来。从第二天开始获得的贡献值就很少了。跟秒哥交流也证明了这一点,不管怎样蚊子腿也是肉啊。


代码实现

1. 计算挂单价格

参考图文:

public class AskBidInfor
{
    //挂单百分比
    public double Rate = 0.04;
    public string MarketId { get; set; }
    public double Bid1Price { get; set; }
    public double Bid1Amount { get; set; }
    public double Ask1Price { get; set; }
    public double Ask1Amount { get; set; }
    
    // 挂买单的价格
    public double BidPrice
    {
        get
        {
            double avg = (Bid1Price + Ask1Price)/2.0;
            return avg*(1 - Rate);
        }
    }
    
    // 挂卖单的价格
    public double AskPrice
    {
        get
        {
            double avg = (Bid1Price + Ask1Price) / 2.0;
            return avg*(1 + Rate);
        }
    }
}

// 获取挂单价格的方法
public AskBidInfor GetAskBidInfor(string marketId, out bool isTrue)
{
    AskBidInfor result = new AskBidInfor();
    try
    {
        List<PriceLevel> ask;
        List<PriceLevel> bid;
        BigOneUtility.GetOrderBook(marketId, out ask, out bid);
        result.MarketId = marketId;
        result.Ask1Price = double.Parse(ask[0].price);
        result.Bid1Price = double.Parse(bid[0].price);
        isTrue = true;
    }
    catch
    {
        isTrue = false;
    }
    return result;
}

2. 刷单的代码

参考图文:

private static readonly BigOneUtility BigOneUtility = new BigOneUtility();
private static readonly List<JsonCreateOrder.Data> LstBtcusdt = new List<JsonCreateOrder.Data>();//BTC/USDT
private static readonly List<JsonCreateOrder.Data> LstEosusdt = new List<JsonCreateOrder.Data>();//EOS/USDT
private static readonly List<JsonCreateOrder.Data> LstEthusdt = new List<JsonCreateOrder.Data>();//ETH/USDT
private static readonly List<JsonCreateOrder.Data> LstOneusdt = new List<JsonCreateOrder.Data>();//ONE/USDT
private static readonly List<JsonCreateOrder.Data> LstEosbtc = new List<JsonCreateOrder.Data>();//EOS/BTC
private static readonly List<JsonCreateOrder.Data> LstEoseth = new List<JsonCreateOrder.Data>();//EOS/ETH
private static readonly List<JsonCreateOrder.Data> LstEthbtc = new List<JsonCreateOrder.Data>();//ETH/BTC

static void Brush(string marketId,double amount)
{
    bool isTrue;
    // 获取挂单价格
    AskBidInfor askBidInfor = GetAskBidInfor(marketId, out isTrue);
    while (isTrue == false)
    {
        askBidInfor = GetAskBidInfor(marketId, out isTrue);
    }
    
    // 撤销已挂订单
    CancelAllOrder(marketId);
    // 挂入买单        
    JsonCreateOrder.Data bidOrder = BigOneUtility.CreateBidOrder(marketId, askBidInfor.BidPrice, amount);
    // 挂入卖单
    JsonCreateOrder.Data askOrder = BigOneUtility.CreateAskOrder(marketId, askBidInfor.AskPrice, amount);

    switch (marketId)
    {
        case "BTC-USDT":
            LstBtcusdt.Add(bidOrder);
            LstBtcusdt.Add(askOrder);
            break;
        case "EOS-USDT":
            LstEosusdt.Add(bidOrder);
            LstEosusdt.Add(askOrder);
            break;
        case "ETH-USDT":
            LstEthusdt.Add(bidOrder);
            LstEthusdt.Add(askOrder);
            break;
        case "ONE-USDT":
            LstOneusdt.Add(bidOrder);
            LstOneusdt.Add(askOrder);
            break;
        case "EOS-BTC":
            LstEosbtc.Add(bidOrder);
            LstEosbtc.Add(askOrder);
            break;
        case "ETH-BTC":
            LstEthbtc.Add(bidOrder);
            LstEthbtc.Add(askOrder);
            break;
        case "EOS-ETH":
            LstEoseth.Add(bidOrder);
            LstEoseth.Add(askOrder);
            break;
    }
}

3. 主程序

private static Random _rdm = new Random();

static void Main(string[] args)
{
    LSGOTextFileControlFacade fileControl = new LSGOTextFileControlFacade();
    string fileName = Environment.CurrentDirectory + @"\error.txt";
    double coff = 2.0;

    while (true)
    {
        try
        {
            Brush("ONE-USDT", 5705.15*coff);
            Thread.Sleep(_rdm.Next(1, 60)*1000);

            Brush("BTC-USDT", 0.002477*coff);
            Thread.Sleep(_rdm.Next(1, 60)*1000);

            Brush("EOS-USDT", 7.06*coff);
            Thread.Sleep(_rdm.Next(1, 60)*1000);

            Brush("ETH-USDT", 0.13660*coff);
            Thread.Sleep(_rdm.Next(1, 60)*1000);

            Brush("EOS-BTC", 7.11*coff);
            Thread.Sleep(_rdm.Next(1, 60)*1000);

            Brush("ETH-BTC", 0.13627);
            Thread.Sleep(_rdm.Next(1, 60) * 1000);

            Brush("EOS-ETH", 7.13*coff);
            Thread.Sleep(_rdm.Next(1, 60)*1000);
        }
        catch (Exception ex)
        {
            DateTime dt = DateTime.Now;
            string date = LSGOComFun.TranslateToStdDateString(dt);
            string str = Environment.NewLine + date;
            str += Environment.NewLine + ex.StackTrace;
            str += Environment.NewLine + ex.Source;
            str += ex.Message + Environment.NewLine;

            Console.WriteLine(str);
            fileControl.FileWrite(fileName, str, Encoding.Default, true);
            Thread.Sleep(30*10000);
        }
    }
}

总结

以上就是我通过挂单的方式,利用 BigOne 的规则来刷贡献值的方法,怎么样?是不是很有用。

今天就到这里吧!See You!


相关图文


转载:https://blog.csdn.net/LSGO_MYP/article/details/100020750
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场