Premium.php 2.1 KB
<?php

namespace trader\struct;

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

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

    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'];
        $maxRate = $data['maxFundingRate'];
        $minRate = $data['minFundingRate'];
        return new self($symbolSt, $symbolOri, $rate, $settleTs, $settlePeriod, $uts, $maxRate, $minRate, $maxRate, $minRate);
    }
    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, 0, 0);
    }
}