지난 몇 건의 기사에서 우리는 초기의 현장 버전의 콩 재배기 고주파 전략의 아이디어와 코드 구현을 분석했습니다.
많은 사람들이 동전 고리를 측정하는 것에 관심이 있습니다.인쇄금이 모든 것은 우리가 할 수 있는 일입니다.인쇄금대우조선해양은 대우조선해양의 전략으로 거래한다. 관찰과 많은 관심사들의 분석을 통해 알 수 있듯이, 이 높은 빈도 전략은 바늘 재배기의 원리에 유사하다. (그라시온은 또한 높은 빈도 전략의 원리에 대해 비교적 가깝다고 말했다). 그러나 확실히 전략이 안정적인 승률과 적절한 수익/손실 비율을 가질 수 있도록 세련된 부분이 있다.
그래서 기술자 소년이 마법을 바꿀 수 없습니다, 비록 마법의 전략 효과는 대신들의 전략에 의해 찌꺼기로 압축되었다. 그러나 또한 높은 주파수 전략에 대한 학습 연습으로, 관심있는 FMZer 동료가 함께 탐구하고 배우십시오.
var TickInterval = 100
function LeeksReaper() {
var self = {}
self.numTick = 0
self.lastTradeId = 0
self.vol = 0
self.askPrice = 0
self.bidPrice = 0
self.orderBook = {
Asks: [],
Bids: []
}
self.prices = []
self.tradeOrderId = 0
self.account = null
self.buyPrice = 0
self.sellPrice = 0
self.state = 0
self.depth = null
self.updateTrades = function() {
var trades = _C(exchange.GetTrades)
if (self.prices.length == 0) {
while (trades.length == 0) {
trades = trades.concat(_C(exchange.GetTrades))
}
for (var i = 0; i < 15; i++) {
self.prices[i] = trades[trades.length - 1].Price
}
}
self.vol = 0.7 * self.vol + 0.3 * _.reduce(trades, function(mem, trade) {
// Huobi not support trade.Id
if ((trade.Id > self.lastTradeId) || (trade.Id == 0 && trade.Time > self.lastTradeId)) {
self.lastTradeId = Math.max(trade.Id == 0 ? trade.Time : trade.Id, self.lastTradeId)
mem += trade.Amount
}
return mem
}, 0)
}
self.updateOrderBook = function() {
var orderBook = _C(exchange.GetDepth)
self.depth = orderBook
self.buyPrice = orderBook.Bids[pendingLevel].Price
self.sellPrice = orderBook.Asks[pendingLevel].Price
self.orderBook = orderBook
if (orderBook.Bids.length < 3 || orderBook.Asks.length < 3) {
return
}
self.bidPrice = orderBook.Bids[0].Price * 0.618 + orderBook.Asks[0].Price * 0.382 + 0.01
self.askPrice = orderBook.Bids[0].Price * 0.382 + orderBook.Asks[0].Price * 0.618 - 0.01
self.prices.shift()
self.prices.push(_N((orderBook.Bids[0].Price + orderBook.Asks[0].Price) * 0.15 +
(orderBook.Bids[1].Price + orderBook.Asks[1].Price) * 0.1 +
(orderBook.Bids[2].Price + orderBook.Asks[2].Price) * 0.1 +
(orderBook.Bids[3].Price + orderBook.Asks[3].Price) * 0.075 +
(orderBook.Bids[4].Price + orderBook.Asks[4].Price) * 0.05 +
(orderBook.Bids[5].Price + orderBook.Asks[5].Price) * 0.025))
}
self.updateAccount = function() {
var account = exchange.GetAccount()
if (!account) {
return
}
self.account = account
LogProfit(parseFloat(account.Info.totalWalletBalance), account)
}
self.CancelAll = function() {
while (1) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
break
}
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id)
}
Sleep(100)
}
}
self.poll = function() {
self.numTick++
self.updateTrades()
self.updateOrderBook()
var pos = _C(exchange.GetPosition)
var burstPrice = self.prices[self.prices.length - 1] * burstThresholdPct
var bull = false
var bear = false
LogStatus(_D(), "\n", 'Tick:', self.numTick, 'self.vol:', self.vol, ', lastPrice:', self.prices[self.prices.length - 1], ', burstPrice: ', burstPrice)
if (self.numTick > 2 && (
self.prices[self.prices.length - 1] - _.max(self.prices.slice(-6, -1)) > burstPrice ||
self.prices[self.prices.length - 1] - _.max(self.prices.slice(-6, -2)) > burstPrice && self.prices[self.prices.length - 1] > self.prices[self.prices.length - 2]
)) {
bull = true
} else if (self.numTick > 2 && (
self.prices[self.prices.length - 1] - _.min(self.prices.slice(-6, -1)) < -burstPrice ||
self.prices[self.prices.length - 1] - _.min(self.prices.slice(-6, -2)) < -burstPrice && self.prices[self.prices.length - 1] < self.prices[self.prices.length - 2]
)) {
bear = true
}
if (pos.length != 0) {
if (pos[0].Type == PD_LONG) {
self.state = 1
} else {
self.state = 2
}
} else {
self.state = 0
}
if ((!bull && !bear)) {
return
}
if (bull) {
var price = (self.state == 0 || self.state == 1) ? self.buyPrice : self.depth.Bids[coverPendingLevel].Price
var amount = (self.state == 0 || self.state == 1) ? pendingAmount : pos[0].Amount
exchange.SetDirection("buy")
exchange.Buy(price, amount)
} else if (bear) {
var price = (self.state == 0 || self.state == 2) ? self.sellPrice : self.depth.Asks[coverPendingLevel].Price
var amount = (self.state == 0 || self.state == 2) ? pendingAmount : pos[0].Amount
exchange.SetDirection("sell")
exchange.Sell(price, amount)
}
self.numTick = 0
Sleep(TickInterval)
self.CancelAll()
self.updateAccount()
}
while (!self.account) {
self.updateAccount()
Sleep(500)
}
Log("self.account:", self.account)
return self
}
function main() {
LogProfitReset()
exchange.SetPrecision(pricePrecision, amountPrecision)
exchange.SetContractType("swap")
var reaper = LeeksReaper()
while (true) {
reaper.poll()
Sleep(100)
}
}
전략은 비트코인 USDT 계약 시장에서 거래하는 것을 계획하고, 비트코인 계약은 단방향 보유를 지원한다. 그래서 전략은 단방향 보유의 특성에 따라 디자인을 수정한다 ("단방향 보유가 더 편리한 전략 변경), 평형을 고려하지 않고, 판매를 고려한다".
전략은 기본적으로 원본의 단기 가격 트렌드 돌파를 결정하는 기준을 유지하며, 단기 가격 돌파의 폭은 매개 변수에 의해 결정됩니다.burstThresholdPct
이 판단 조건에 따라 단기 가격을 판단하는 것은bull
(소) 또는bear
(곰)
정책은 원래 버전의 일부 모듈, 예를 들어 균형 모듈을 삭제했습니다. 더 큰 변화는 주문을 주문판에 올려서 거래를 기다리는 것으로 변경되었습니다. 오프스케이팅이 격렬한 혼란의 시장을 통해 낮은 비용으로 입장을 개척하고, 단기 트렌드를 따라가며, 단기 트렌드가 반전되면 평형화하고, 반전 단기 입장을 계속합니다.
전략은 다른 쓸모없는 코드를 제거하기 때문에 매우 짧고 간단합니다. 전략은 수익을 내지 못할 전략이지만, FMZer로서는 높은 주파수 전략을 배우고, 높은 주파수 전략의 행동을 관찰하고, 시장의 미세 법칙을 관찰하는 것은 많은 연습, 경험, 이론을 바탕으로 할 수 있는 모델입니다.
시장이 활발하지 않을 때 거래가 더 어렵다는 것을 알 수 있습니다.
현재로서는 최적화의 좋은 방향은 아직 발견되지 않았습니다. 관심있는 학생은 함께 토론을 위해 강연을 할 수 있습니다.
이 전략은 학습을 위한 것뿐이며, 시장이 평평해지면 손실이 발생할 수 있습니다.
바늘 튀김이 계약은 어떻게 제약율을 설정합니까?
궤도 생물이것은 거래량을 더할 수 있는지 결정하거나 자동으로 선택된 화폐를 결정하는 것입니다.
qslll이 자료를 공유할 수 있을까요?
168드림 신 (Dream God) 은 재검토 가능한, 현장에서 사용할 수 있는 버전을 불러줄 수 있나요? 감사합니다.
168main:68:43 - TypeError: undefined의 'totalWalletBalance' 속성을 읽을 수 없습니다 이 자리에서, 이 자리에서, 이 자리에서, 이 자리에서, 이 자리에서, 이 자리에서.
슬프다계약의 트레이드는 얻을 수 없는 것처럼, 전략은 계속 실행되지 않고, 어떻게
발명가들의 수량화 - 작은 꿈단기 기하급수를 조금 낮출 수 있지만, 이 방법은 좋은 깊이와 많은 공간에 대한 격렬한 장면을 필요로 한다.
바늘 튀김꿈은, 이 전략을 계산하면, 100ms 이내에 거래가 안되면 취소됩니다. 저는 한밤중에 (거의 5시간 동안) 5개의 주문을 받았는데, 5개의 주문을 받았는데, 어떻게 그 매개 변수를 바꿀 수 있을까요?
발명가들의 수량화 - 작은 꿈이 자금 거래는 거래소에서 직접 활용을 할 수 있습니다.
발명가들의 수량화 - 작은 꿈哈哈, 좋습니다, 상기시켜 주셔서 감사합니다.
발명가들의 수량화 - 작은 꿈이 전략은 교육 전략이며, 주로 아이디어를 보고, 단지 가르치는 것입니다.
m0606저는 이 제한된 가격도 좋다고 생각합니다.
발명가들의 수량화 - 작은 꿈INFO는 메이어로 되어 있습니다.
지나가면서재검토는 INFO 정보를 지원하지 않습니다.
발명가들의 수량화 - 작은 꿈!>_>! 이것은 단지 프로토타입이고, 수익을 내고, 학습을 하고, 단지 연구 대상을 가지고 있습니다.