Premium.php 1.8 KB
<?php

namespace trader\struct;

class Premium
{
    public $symbol; //标准交易对
    public $symbolOri; //原始交易对
    public $rate; //资金费率
    public $settleTs; //下次结算时间
    public $settlePeriod; //结算周期
    public $uts; //最近更新时间

    public function __construct($symbol, $symbolOri, $rate, $settleTs, $settlePeriod, $uts)
    {
        $this->symbol = $symbol;
        $this->symbolOri = $symbolOri;
        $this->rate = $rate;
        $this->settleTs = $settleTs;
        $this->settlePeriod = $settlePeriod;
        $this->uts = $uts;
    }

    public function toArray()
    {
        return [
            'symbol' => $this->symbol,
            'symbolOri' => $this->symbolOri,
            'rate' => $this->rate,
            'settleTs' => $this->settleTs,
            'settlePeriod' => $this->settlePeriod,
            'uts' => $this->uts,
        ];
    }
    public static function transferOkx($data, callable $getSymbolSt): self
    {
        $symbolOri = $data['instId'];
        $symbolSt = $getSymbolSt($symbolOri);
        $rate = $data['fundingRate'];
        $settleTs = $data['fundingTime'];
        $settlePeriod = $data['nextFundingTime'] - $settleTs;
        $uts = $data['ts'];
        return new self($symbolSt, $symbolOri, $rate, $settleTs, $settlePeriod, $uts);
    }
    public static function transferBinance($data, callable $getSymbolSt): ?self
    {
        $symbolOri = $data['symbol'];
        try {
            $symbolSt = $getSymbolSt($symbolOri);
        } catch (\Throwable $th) {
            return null;
        }
        $rate = $data['lastFundingRate'];
        $settleTs = $data['nextFundingTime'];
        $settlePeriod = 0;
        $uts = $data['time'];
        return new self($symbolSt, $symbolOri, $rate, $settleTs, $settlePeriod, $uts);
    }
}