www.fmz.com(BotVs로 사용되었던) 은 양적 전략 거래 플랫폼으로 양적 전략을 쉽게 배우고, 작성하고, 공유하고 거래할 수 있습니다.
FMZ (BOTVS) 는 이제 BitMEX의 모든 계약을 지원합니다!
function main() {
exchange.IO("base", "https://testnet.bitmex.com")
}
var initAccount = null;
var nowAccount = null;
function main() {
LogReset(1);
Log("This is BitMEX test bot");
Log("Fee:", exchange.GetFee());
Log("Initial account:", initAccount = _C(exchange.GetAccount));
var info = exchange.SetContractType("XBTUSD"); // BitMEX : XBTUSD , OK : this_week
Log("XBTUSD info:", info);
Log("Use GetTicker to get ticker information:", _C(exchange.GetTicker))
Sleep(1000 * 10);
// make an order
exchange.SetDirection("sell"); // set order direction
var orderId = exchange.Sell(-1, 1); // sell at market price。
Sleep(6000);
// log positions
var positions = null;
Log(positions = _C(exchange.GetPosition));
Log("Account before changing leverage:", _C(exchange.GetAccount));
// change leverage
Log("Change leverage", _C(exchange.SetMarginLevel, positions[0].MarginLevel * 2));
Log("Account after changing leverage:", _C(exchange.GetAccount));
// test GetOrder
if (orderId) {
Log(_C(exchange.GetOrder, orderId));
}
Sleep(1000 * 10);
Log(_C(exchange.GetPosition));
// set direction to close
exchange.SetDirection("closesell");
var go_buy = exchange.Go("Buy", -1, 1);
var orderId2 = go_buy.wait();
Log(_C(exchange.GetOrder, orderId2));
Log("Current account:", nowAccount = _C(exchange.GetAccount));
Log(_C(exchange.GetPosition));
LogProfit(nowAccount.Stocks - initAccount.Stocks, " initAccount:", initAccount, " nowAccount:", nowAccount);
Sleep(1000 * 10);
var ticker = _C(exchange.GetTicker);
exchange.SetDirection("buy");
exchange.Buy(ticker.Last - 50, 1);
exchange.SetDirection("sell");
exchange.Sell(ticker.Last + 50, 1);
// GetOrders
Log("Test GetOrders:", _C(exchange.GetOrders));
var e = exchange;
while (true) {
var orders = _C(e.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(500);
for (var j = 0; j < orders.length; j++) {
e.CancelOrder(orders[j].Id);
if (j < (orders.length - 1)) {
Sleep(500);
}
}
}
Log("Cancel order, test GetOrders again:", _C(exchange.GetOrders));
}
바트로 정보를 기록합니다. BitMEX와 동일합니다.
exchange.SetDirection("closesell");
var go_buy = exchange.Go("Buy", -1, 1);
var orderId2 = go_buy.wait();
Log(_C(exchange.GetOrder, orderId2));
Log("当前账户:", nowAccount = _C(exchange.GetAccount));
Log(_C(exchange.GetPosition));
LogProfit(nowAccount.Stocks - initAccount.Stocks, " initAccount:", initAccount, " nowAccount:", nowAccount);
var ticker = _C(exchange.GetTicker);
exchange.SetDirection("buy");
exchange.Buy(ticker.Last - 50, 1);
exchange.SetDirection("sell");
exchange.Sell(ticker.Last + 50, 1);
// GetOrders
Log("Test GetOrders:", _C(exchange.GetOrders));
var e = exchange;
while (true) {
var orders = _C(e.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(500);
for (var j = 0; j < orders.length; j++) {
e.CancelOrder(orders[j].Id);
if (j < (orders.length - 1)) {
Sleep(500);
}
}
}
Log("orders have been canceled. Now check orders again, order array is empty. GetOrders:", _C(exchange.GetOrders));
The pending orders
information (중계 주문 정보)
[{"Id":4,"Amount":1,"Price":1679.6,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":1,"ContractType":"XBTUSD"},
{"Id":3,"Amount":1,"Price":1579.6,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":0,"ContractType":"XBTUSD"}]
최신 관리자를 사용하여 하위층은 자동으로 K 라인을 합성할 수 있으며, BITMEX가 지원하지 않는 일부 K 라인 주기 데이터도 합성할 수 있으므로 K 라인 주기 설정 시에는 더 이상 제한되지 않습니다.1分钟、5分钟、1小时、1天
이 주기는 모든 주기를 설정할 수 있습니다.
LogReset(1);
var info = exchange.SetContractType("XBTUSD");
exchange.SetDirection("sell");
var orderId = exchange.Sell(-1, 1);
Log(_C(exchange.GetPosition));
Sleep(1000*6);
exchange.SetDirection("buy");
var orderId2 = exchange.Buy(-1, 1);
Log(_C(exchange.GetPosition));
exchange.SetDirection("closesell");
var orderId3 = exchange.Buy(-1, 1);
Log(_C(exchange.GetPosition));
// exchange.IO example
exchange.SetContractType("XBTUSD");
Log(exchange.IO("api", "POST", "position/leverage", "symbol=XBTUSD&leverage=4"));
Log(exchange.IO("api", "GET", "user"));
The raw information of position/leverage API (거래소 API를 직접 호출하면)
{"homeNotional":0,
"sessionMargin":0,
"bankruptPrice":null,
"initMarginReq":0.25,
"execBuyQty":2,
"execComm":184,
"unrealisedCost":0,
"commission":0.00075,
"leverage":4,
"posLoss":0,
"posMargin":0,
"posMaint":0,
"liquidationPrice":null,
"maintMarginReq":0.005,
"grossExecCost":0,
"execCost":7,
"currentTimestamp":"2017-05-08T10:51:20.576Z",
"markValue":0,
"unrealisedGrossPnl":0,
"taxBase":7720,
"unrealisedPnlPcnt":0,
"prevUnrealisedPnl":0,
"openOrderSellCost":0,
"deleveragePercentile":null,
"openingComm":31588,
"openOrderBuyCost":0,
"posCross":0,
"taxableMargin":0,
"simpleCost":0,
"underlying":"XBT",
"quoteCurrency":"USD",
"execBuyCost":122613,
"execSellCost":122620,
"execQty":0,
"realisedCost":-7720,
"unrealisedPnl":0,
"openingQty":0,
"openOrderBuyQty":0,
"initMargin":0,
"unrealisedTax":0,
"simpleQty":0,
"avgCostPrice":null,
"rebalancedPnl":24052,
"openingTimestamp":"2017-05-08T10:00:00.000Z",
"unrealisedRoePcnt":0,
"posCost":0,
"posInit":0,
"posComm":0,
"realisedTax":0,
"indicativeTax":0,
"breakEvenPrice":null,
"isOpen":false,
"riskValue":0,
"posState":"",
"varMargin":0,
"realisedGrossPnl":7720,
"timestamp":"2017-05-08T10:51:20.576Z",
"account":25992,
"foreignNotional":0,
"openOrderSellPremium":0,
"simpleValue":0,
"lastValue":0,
"riskLimit":20000000000,
"openOrderSellQty":0,
"grossOpenPremium":0,
"marginCallPrice":null,
"prevClosePrice":1562.74,
"openOrderBuyPremium":0,
"currentQty":0,
"currentCost":-7720,
"currentComm":31772,
"markPrice":null,
"posCost2":0,
"realisedPnl":-24052,
"prevRealisedPnl":-95,
"execSellQty":2,
"shortBankrupt":0,
"simplePnl":0,
"simplePnlPcnt":0,
"lastPrice":null,
"posAllowance":0,
"targetExcessMargin":0,
"indicativeTaxRate":0,
"grossOpenCost":0,
"maintMargin":0,
"crossMargin":false,
"openingCost":-7727,
"longBankrupt":0,
"avgEntryPrice":null,
"symbol":"XBTUSD",
"currency":"XBt"}
q25459768감사합니다.
쿨롱로컬 호스트를 사용하여 VPN을 열고 shadowsocks, global, bitmex 웹 페이지를 사용할 수 있지만 프로그램이 실행되지 않습니다. 미국 퍼블릭 서버를 선택하면 문제가 없습니다.
꽃이 피어botvs가 bitmex의 제한된 가격 위탁을 지원하는지 물어보십시오. 이는 bitmex에서 주문할 때 문자를 선택하는 것과 같습니다.
bobo188getrecords로 Bitmex는 100개의 데이터를 반환하지만 Bitmex는 최대 500개의 데이터를 지원합니다. 어떻게 더 많은 것을 얻을 수 있습니까? 감사합니다.
영혼GetAccount의 자료가 잘못되었습니다. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance": 0} FrozenStocks는 0을 잃었고 실제로는 0.092248입니다.
빅터997안녕하세요, 드로커를 추가할 수 없습니다, 잘못된 암호가 있습니다. 모든 단계에 대한 도움이 필요해요 가능하다면, 고마워, 빅터997
여덟 명의 오일
케조https://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png 왜 나는 Bitmex를 추가 플랫폼에서 볼 수 없습니까? 스크린 샷을 포함하여 크라켄도 없습니다. 또한 해외 플랫폼에서 몇 가지 검토 할 수 있습니까? 감사합니다.
ytrezq안녕하세요, 저는 botvs에 처음입니다. 어떻게 이것을 bitmex에 사용할 수 있을까요?
루이스루BitMex에 대한 리뷰 시스템이 있는지 물어보세요.
JBitMEX의 GetRecords에서 반환된 K선 데이터의 마지막 값은 실시간이 아니므로 실시간으로 지표를 계산할 수 없습니다. 이 문제는 오래전부터 존재해왔고, BitMEX API 자체의 결함으로 해결되지 않은 방법이다. BotVS는 BitMEX의 실시간 데이터를 수집하고 있으며, 수집된 데이터로 BitMEX의 실시간 데이터를 보충할 수 있습니까?
JBitMEX의 K 라인 데이터를 어떻게 얻습니까?
닌자쿠드림
J이것은 너무 뚱뚱해서 레버 조작이 가능합니다.
발명가들의 수량화 - 작은 꿈shadowsocks는 진정한 글로벌 에이전트가 아니며, 모든 에이전트 컴퓨터의 네트워크 액세스가 없습니다. 현재 가장 간단한 방법은 다른 지역에서 서버를 실행하는 호스트를 사용하는 것입니다.
bobo188예를 들어 주시겠습니까? 감사합니다. 저는 백인입니다.
발명가들의 수량화 - 작은 꿈HttpQuery를 사용하여 직접 액세스 할 수 있습니다. 거래소 인터페이스 파라미터 지정 데이터 획득.
발명가들의 수량화 - 작은 꿈제 QQ: 359706687을 추가하면, 제가 도와드릴게요.
발명가들의 수량화 - 작은 꿈네, 당신이 호출하는 인터페이스는 심층을 얻는 인터페이스입니다. 이 인터페이스는 서명 없이 암호화되어야 합니다. 암호화 요청 인터페이스는 exchange.IO 호출을 사용해야 합니다. 암호화되지 않은 인터페이스는 HttpQuery (python는 urlib 라이브러리를 사용합니다) 를 사용해야 합니다.
발명가들의 수량화 - 작은 꿈응원해주셔서 감사합니다! 도커를 실행하고 싶은 어떤 종류의 시스템에 대한 답을 얻을 수 있습니까? BotVS 지원: - 윈도우 64비트, 32비트 (CLI, 인터페이스) - MAC OSX (cmd 라인) - 리눅스 64비트, 32비트 (cmd 라인) - ARM 리눅스 (cmd 라인) 이 후, 저는 단계적으로 도커를 추가하는 프로세스를 만들 것입니다. 메세지를 기다리고 있어!
발명가들의 수량화 - 작은 꿈현재 BITMEX의 WS 프로토콜은 지원되지 않습니다.
케조저는 ᅳᅳ 정말, ie 할 수 있습니다.
발명가들의 수량화 - 작은 꿈외장판의 플랫폼은 현재 검색 데이터가 없으며 지원이 계획되어 있습니다. 당신은 다른 브라우저를 테스트했습니다. 아마도 브라우저가 다운로드를 표시하지 않는 것을 초래했습니다.
발명가들의 수량화 - 작은 꿈단계 사용: 1, 로봇이라는 프로그램을 실행, 어디서 이 위치에서 다운로드: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、플랫폼 추가: BitMEX의 API 키 구성: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 로봇과 결합 전략을 로봇으로 추가합니다: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png
ytrezq네, 하지만 웹 사이트에서 BitMex를 BotVS에 사용하려면 어떻게 해야 할까요?
발명가들의 수량화 - 작은 꿈BotVS를 사용해서 감사합니다 ^^, BotVS는 이미 BitMEX를 지원합니다.
발명가들의 수량화 - 작은 꿈안녕하세요, 현재 BitMEX 거래소를 지원하는 검증 시스템이 없습니다 ^^.
발명가들의 수량화 - 작은 꿈눌러 넣을 수 있습니다.
J다른 변수를 눌러도 됩니다
발명가들의 수량화 - 작은 꿈J 대 ~ 이 GetRecords에서 가져온 배열은 참조로 전달되며, 만약 push가 들어가면 다음 가져오는 때 push의 요소가 나타난다.
발명가들의 수량화 - 작은 꿈저는 테스트를 해보겠습니다. 잠시만요.
J이 마지막 실시간 데이터를 직접 추가하려고 했지만 문제가 생겼습니다. exchange.SetContractType (('XBTUSD') ' // GetRecords (() 를 통해 데이터를 가져옵니다 records = exchange.GetRecords (역주) 로그 (기록) // 그리고 마지막 값을 직접 추가합니다. 레코드.푸시 타임:records[records.length-1].타임 + 3600000, Close:records[records.length-1]. }) 로그 (기록) // 10초 휴식을 취하고 GetRecords를 다시 호출합니다 ((( 수면 ((10000) records = exchange.GetRecords (역주) // 왜 마지막으로 추가된 데이터가 남아있나요? 로그 (기록)
발명가들의 수량화 - 작은 꿈자, J씨에게 감사드리지만, 제가 테스트를 해보고자 합니다.
발명가들의 수량화 - 작은 꿈이 모든 것이 비트메크스 (BITMEX) 에 대한 계약입니다.
J이 모든 것이 어떻게 이루어질 것인가에 대한 질문입니다. exchanges.SetContractType (('XBTUSD') ' records = exchanges.GetRecords
발명가들의 수량화 - 작은 꿈자, 한번 확인해보자.
닌자쿠음, 이것도 가능해요, 제가 시도해보겠습니다.
발명가들의 수량화 - 작은 꿈N를 사용하여 소수점을 제한할 수 있습니다. 많은 거래소에서는 소수점을 제한하고 일반적으로 4 소수점을 초과하지 않습니다.
닌자쿠꿈은 항상 일찍, Sell ((12319.94890, 100.00000): 400: {"error":{"message":"Invalid price tickSize","name":"HTTPError"}}, 느낌은, 가격을 달러로 변환하지 않고 보고되어서, 가격이 이상적으로 벗어나서,挂牌하지 않습니다.
발명가들의 수량화 - 작은 꿈네, 바로 시험해볼게요.