| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- #include "platformobject.h"
- #include "qjsonobject.h"
- #include "qjsondocument.h"
- #include <time.h>
- #include "qnetworkaccessmanager.h"
- #include "qnetworkrequest.h"
- #include "qnetworkreply.h"
- PlatformObject::PlatformObject(QObject *parent)
- : QObject(parent)
- {
- m_bOrderDirection = false;
- m_isPositionOpen = false;
- m_deviationPercentage = 0;
- m_deviationCompensation = 0;
- m_pNetworkManager = nullptr;
- m_nLever = 100;
- m_bCon = false;
- }
- PlatformObject::~PlatformObject()
- {
- }
- const int nTimeStand = 5 * 60 * 1000;
- void PlatformObject::MinData(const DataPlatform &item )
- {
- //QMutexLocker lock(&m_QMutex);
- m_QMutex.lock();
- m_vDataVec.push_back(item);
- auto it = m_vDataVec.begin();
- DataPlatform &temp = *it;
- m_price = item.fPrice;
- if (item.nData - temp.nData > nTimeStand)
- {
- m_vDataVec.erase(it);
- m_bCon = true;
- }
- m_QMutex.unlock();
- }
- float PlatformObject::CalcAverageSelf()
- {
- m_QMutex.lock();
- double dAverage = 0.0;
- auto it = m_vDataVec.begin();
- for (;it != m_vDataVec.end();it++)
- {
- dAverage += it->fPrice;
- }
- if (m_vDataVec.size() > 0)
- {
- dAverage /= m_vDataVec.size();
- }
- m_dAverage = dAverage;
- m_QMutex.unlock();
- return dAverage;
- }
- void PlatformObject::SetPlatformName( QString strName )
- {
- m_strPlatName = strName;
- }
- double PlatformObject::GetAverage()
- {
- return m_dAverage;
- }
- void PlatformObject::CalcdeviationCompensation( double dBinance )
- {
- m_deviationCompensation = dBinance - m_dAverage;
- }
- double PlatformObject::GetDeviationCompensation()
- {
- return m_deviationCompensation;
- }
- void PlatformObject::executeTradingLogic( double entryThreshold )
- {
- if (m_bCon)
- {
- //if (m_bOrderDirection)
- {
- if (m_nLever * m_deviationPercentage > entryThreshold) //开多
- {
- if (!m_isPositionOpen)
- {
- m_isPositionOpen = true;
- m_isDealState = true;
- //tianjiadaima
- qDebug() << "OpenContractMore_XJ";
- OpenContractMore_XJ();
- //
- }
- }
- else if (m_nLever * m_deviationPercentage < entryThreshold)//平仓
- {
- m_isPositionOpen = false;
- //tianjiadaima
- CloseContractMore();
- qDebug() << "CloseContractMore";
- }
- }
- //else
- {
- if (m_nLever * m_deviationPercentage < entryThreshold*-1) //开多
- {
- if (!m_isPositionOpen)
- {
- m_isPositionOpen = true;
- m_isDealState = false;
- //tianjiadaima
- qDebug() << "OpenContractEmpty_XJ";
- OpenContractEmpty_XJ();
- }
- }
- else if (m_nLever * m_deviationPercentage > entryThreshold*-1)//平仓
- {
- m_isPositionOpen = false;
- //tianjiadaima
- qDebug() << "CloseContractEmpty";
- CloseContractEmpty();
- }
- }
- }
- }
- void PlatformObject::CalcdeviationPercentage( double dBinancePrice )
- {
- m_deviationPercentage = (dBinancePrice - (m_deviationCompensation + dBinancePrice)) / dBinancePrice;
- }
- double PlatformObject::GetRealPrice()
- {
- return m_price;
- }
- void PlatformObject::OpenContractMore_XJ()
- {
- OpenContractInfo item;
- item.delegatePrice = GetRealNewPrice();
- QByteArray dataArray = PackJson_Open(item);
- QString strUrl = "https://www.bitget.com/v1/mcp/order/openContract";
- SendPostRequst(strUrl,dataArray);
- }
- void PlatformObject::OpenContractEmpty_XJ()
- {
- OpenContractInfo item;
- item.delegateType = 2;
- item.delegatePrice = GetRealNewPrice();
- QByteArray dataArray = PackJson_Open(item);
- QString strUrl = "https://www.bitget.com/v1/mcp/order/openContract";
- SendPostRequst(strUrl,dataArray);
- }
- QByteArray PlatformObject::PackJson_Open( const OpenContractInfo &item )
- {
- QJsonObject jsonobject;
- jsonobject.insert("tokenId", item.tokenId);
- jsonobject.insert("symbolId", item.symbolId);
- jsonobject.insert("businessLine", item.businessLine);
- jsonobject.insert("secondBusinessLine", item.secondBusinessLine);
- jsonobject.insert("businessSource", item.businessSource);
- jsonobject.insert("enterPointSource", item.enterPointSource);
- jsonobject.insert("delegateCount", item.delegateCount);
- jsonobject.insert("orderType", item.orderType);
- jsonobject.insert("delegateType", item.delegateType);
- jsonobject.insert("pricedSymbol", item.pricedSymbol);
- jsonobject.insert("timeInForceValue",item.timeInForceValue);
- jsonobject.insert("delegatePrice", item.delegatePrice);
- jsonobject.insert("languageType",item.languageType);
- QJsonDocument doc(jsonobject);
- return doc.toJson(QJsonDocument::Compact);
- }
- void PlatformObject::OpenContractEmpty_SJ()
- {
- OpenContractInfo item;
- item.orderType = 1;
- item.delegateType = 2;
- QByteArray dataArray = PackJson_Open(item);
- QString strUrl = "https://www.bitget.com/v1/mcp/order/openContract";
- SendPostRequst(strUrl,dataArray);
- }
- void PlatformObject::SetPostionState()
- {
- if (m_isPositionOpen)
- {
- static float fTime = clock();
- float fTimeReal = clock();
- if (fTimeReal - fTime > 300)
- {
- //平仓
- fTime = clock();
- if (m_isDealState )
- {
- //tianjaidaima
- CloseContractMore();
- qDebug() << "CloseContractMore";
- }
- else
- {
- CloseContractEmpty();
- qDebug() << "CloseContractEmpty";
- }
- }
- }
- }
- void PlatformObject::SendPostRequst(QString strUrl,QByteArray &dataArray)
- {
- if (m_pNetworkManager == nullptr)
- {
- m_pNetworkManager = new QNetworkAccessManager(this);
- }
- if (m_pNetworkManager)
- {
- QNetworkRequest _quest;
- _quest.setUrl((QUrl(strUrl)));
- // _quest.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
- _quest.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
- QNetworkReply *mReply = m_pNetworkManager->post(_quest,dataArray);
- QByteArray _data = mReply->readAll();//读出数据
- connect(mReply,&QNetworkReply::finished,this,&PlatformObject::ReplyFinshed);//方式一
- }
- }
- void PlatformObject::ReplyFinshed()
- {
- }
- void PlatformObject::CloseContractMore()
- {
- CloseContractInfo item;
- QByteArray dataArray = PackJson_Close(item);
- QString strUrl = "https://www.bitget.com/v1/mcp/order/closeContract";
- SendPostRequst(strUrl,dataArray);
- }
- void PlatformObject::CloseContractEmpty()
- {
- CloseContractInfo item;
- item.delegateType = 4;
- QByteArray dataArray = PackJson_Close(item);
- QString strUrl = "https://www.bitget.com/v1/mcp/order/closeContract";
- SendPostRequst(strUrl,dataArray);
- }
- QByteArray PlatformObject::PackJson_Close( const CloseContractInfo &item )
- {
- QJsonObject jsonobject;
- jsonobject.insert("tokenId", item.tokenId);
- jsonobject.insert("symbolId", item.symbolId);
- jsonobject.insert("businessLine", item.businessLine);
- jsonobject.insert("businessSource", item.businessSource);
- jsonobject.insert("enterPointSource", item.enterPointSource);
- jsonobject.insert("secondBusinessLine", item.secondBusinessLine);
- jsonobject.insert("timeInForceValue", item.timeInForceValue);
- jsonobject.insert("cancelOrder", item.cancelOrder);
- jsonobject.insert("delegateCount", item.delegateCount);
- jsonobject.insert("orderType", item.orderType);
- jsonobject.insert("delegateType", item.delegateType);
- jsonobject.insert("languageType",item.languageType);
- QJsonDocument doc(jsonobject);
- return doc.toJson(QJsonDocument::Compact);
- }
- QByteArray PlatformObject::PackJson_Cancle( const CancleContractInfo &item )
- {
- QJsonObject jsonobject;
- jsonobject.insert("businessLine", item.businessLine);
- jsonobject.insert("orderId", item.orderId);
- jsonobject.insert("tokenId", item.tokenId);
- jsonobject.insert("symbolId", item.symbolId);
- jsonobject.insert("secondBusinessLine",item.secondBusinessLine);
-
- jsonobject.insert("languageType",item.languageType);
- QJsonDocument doc(jsonobject);
- return doc.toJson(QJsonDocument::Compact);
- }
- double PlatformObject::GetRealNewPrice()
- {
- vector<DataPlatform>::iterator it = m_vDataVec.end() - 1;
- return it->fPrice;
- }
|