এফএমজেড (FMZ) -এর ফসল কাটা যন্ত্রের কৌশলঃ https://www.fmz.com/strategy/34388
মূল কোডঃ https://github.com/richox/okcoin-leeks-reaper
বিদেশে বেশ কয়েকটি ফ্রি এক্সচেঞ্জ রয়েছে যেখানে আপনি এপিআই ইন্টারফেস ব্যবহার করে দেখতে পারেন।
আমি কিছু সমস্যার সম্মুখীন হয়েছি এবং সাহায্যের জন্য এখানে এসেছি। ধন্যবাদ!
- আমি মনে করি, এই কোডের মূল লেখকের কোডের মধ্যে একটি এক মিনিটের বিলম্ব রয়েছেঃ sleep 60000, কিন্তু আমি বুঝতে পারছি না এটা কি কাজে লাগবে?
- ট্রান্সপোর্ট করা সংস্করণে লেনদেনের মূল্যের কোড ভুলঃ
self.prices[i] = trades[trades.length - 1].Price
এখানে, সমস্ত মূল্য সর্বশেষ মূল্যের মধ্যে পরিবর্তিত হয়। - অন্যদিকে, BurstThresholdPct এর ডিফল্ট প্যারামিটারটি খুব ছোট।
你好,请问还在跑吗?不知python版可否发我一份学习一下。。实在看不太来Javascript。
我是币安做市商账户,负手续费。
q。515051842
新手,我也想知道这个程序的交易思路,例如:本次tick交易量 = 上次tick交易量0.7 + 本次tick期间实际发生的交易量0.3,用于平滑和减少噪音;本次tick价格 = (买1+卖1)*0.35 + (买2+卖2) * 0.10 + (买3+卖3)*0.05;bidPrice = orderBook.bids[0].limitPrice * 0.618 + orderBook.asks[0].limitPrice * 0.382 + 0.01,等等这些是按照什么来确定的?个人经验、喜好或是根据什么策略?
那是我误解了。这种高频对时间当然很敏感,如果延迟太大,我觉得只能把第一个参数百分比的阈值调高。
不过这个策略我运行了半个月,调了很多参数都还不能盈利,目前放弃了。
分享自己移植的原代码里对价格的处理
// 2A. 价格未突破,减小力度
if (bull && (self.prices[self.prices.length-1] < _.max(self.prices.slice(0, -1)))) {
tradeAmount *= 0.90 // 价格未创新高
}
if (bear && (self.prices[self.prices.length-1] > _.min(self.prices.slice(0, -1)))) {
tradeAmount *= 0.90 // 价格未创新低
}
// 3. 短时价格波动过大,减小力度
if (Math.abs(self.prices[self.prices.length-1] - self.prices[self.prices.length-2]) > burstPrice * 2) {
tradeAmount *= 0.90 // 2倍价格波动
}
if (Math.abs(self.prices[self.prices.length-1] - self.prices[self.prices.length-2]) > burstPrice * 3) {
tradeAmount *= 0.90 // 3倍价格波动
}
if (Math.abs(self.prices[self.prices.length-1] - self.prices[self.prices.length-2]) > burstPrice * 4) {
tradeAmount *= 0.90 // 4倍价格波动
}
// 4. 盘口价差过大,减少力度
if (self.orderBook.Asks[0][0] - self.orderBook.Bids[0][0] > burstPrice * 2) {
tradeAmount *= 0.90 // 2倍盘口价差
}
if (self.orderBook.Asks[0][0] - self.orderBook.Bids[0][0] > burstPrice * 3) {
tradeAmount *= 0.90 // 3倍盘口价差
}
if (self.orderBook.Asks[0][0] - self.orderBook.Bids[0][0] > burstPrice * 4) {
tradeAmount *= 0.90 // 4倍盘口价差
}
// 更新时间价格序列
// 本次tick价格 = (买1+卖1)*0.35 + (买2+卖2) * 0.10 + (买3+卖3)*0.05
prices = prices[1 .. -1] + [(
(orderBook.bids[0].limitPrice + orderBook.asks[0].limitPrice) / 2 + 0.7 +
(orderBook.bids[1].limitPrice + orderBook.asks[1].limitPrice) / 2 + 0.2 +
(orderBook.bids[2].limitPrice + orderBook.asks[2].limitPrice) / 2 + 0.1)]
//=======================================
这里原作者的注释里写的思路很明白(权重之和==1.0), 而实际代码里却看不明白是什么思路(难道原作者自己代码写错了?把乘号错写成了+号。。。或者是故意的?)
//=================后记==================
好吧,去github看了一下,果然原作者10天前修正了一次,把这个加号改成乘号了。这样的话,说明最初放出的代码是《修饰》过的,很难想像是发生了什么情况会把乘号复制成加号?
原代码里很重要的一些策略没有移植过来,建议自己加上。
// 2A. 价格未实现突破,减小力度
if (bull && prices[-1] < prices[0 .. -1].max()) tradeAmount *= 0.90
if (bear && prices[-1] > prices[0 .. -1].min()) tradeAmount *= 0.90
// 3. 短时价格波动过大,减小力度
if (Math.abs(prices[-1] - prices[-2]) > burstPrice * 2) tradeAmount *= 0.90
if (Math.abs(prices[-1] - prices[-2]) > burstPrice * 3) tradeAmount *= 0.90
if (Math.abs(prices[-1] - prices[-2]) > burstPrice * 4) tradeAmount *= 0.90
// 4. 盘口价差过大,减少力度
if (orderBook.asks[0].limitPrice - orderBook.bids[0].limitPrice > burstPrice * 2) tradeAmount *= 0.90
if (orderBook.asks[0].limitPrice - orderBook.bids[0].limitPrice > burstPrice * 3) tradeAmount *= 0.90
if (orderBook.asks[0].limitPrice - orderBook.bids[0].limitPrice > burstPrice * 4) tradeAmount *= 0.90
嗯,看代码也发现这几个问题:
1、self.prices[i] = trades[trades.length - 1].Price 数组里的值都更新为最新价了?
2、self.prices.push(_N((orderBook.Bids[0].Price + orderBook.Asks[0].Price) * 0.35 这里的0.35+0.1+0.05合计为0.5,而原作者代码是0.7+0.2+0.1
哦,原来那些进程是同步运行的。Javascript 里好像没法这么执行,只能去判断订单的时间了。
BurstThresholdPct 在策略里用于判断价格是否出现方向上的突破,这么小的比例感觉不合适。也许以前在OK那种交易量下还行?
免交易费的交易所看这里的统计: https://coinmarketcap.com/exchanges/volume/24-hour/no-fees/
Quoine 深度不行,还是别去了。
Zaif 的交易量排行在 https://zaif.jp/public_trade_user/btc_jpy/1 。公开自己的交易量,需要在 Social Settings 页面最下面打开。
- 1








