原理:超短线,只看前一分钟起始价和结束价的斜率趋势,3 倍杠杠,止损 2%,最低止盈 0.5%,最高允许的净收益跌幅 40%,基本两分钟左右一次自动平仓,在模拟上测效果还可以,上线实盘有什么可能的缺陷呢
js 伪代码
// 获取前一分钟 K 线图数据,拿到起始和结束的价格
const [startPrice, endPrice] = await getCandles({ time: "1m" });
// 判断 startPrice 到 endPrice 的斜率|角度
const edge = getEdge(startPrice, endPrice);
// 如果角度大于 75 度(无论正负),证明趋势明显,达到开仓条件,跟趋势的方向
const orderPrice = await getCurrentPrice();
if (edge > 75) {
// 开看涨单
await createOrder({
price: orderPrice,
direction: "up",
count: await getMaxBuyCount(orderPrice),
});
}
if (edge < -75) {
// 开看空单
await createOrder({
price: orderPrice,
direction: "down",
count: await getMaxSellCount(orderPrice),
});
}
// 开单后进入循环,判断是否达到平仓时机
while (true) {
// 每隔 5s 获取一次现价
const currentPrice = await getCurrentPrice();
// 计算收益
const income = getIncome(currentPrice, orderPrice);
// 计算总手续费
const totalFee = getTotalFee(currentPrice, orderPrice);
// 计算净收益率
const pureIncomRate = getPureIncomRate(income, totalFee)
// 首先判断止损条件, 如果达到止损线(-2%), 立刻平仓, 然后重新等待下一次开仓机会
if(pureIncomRate <= -2%){
await finishOrder()
await runApp()
}else{
// 如果净收益率超过最低预期净收益率( 0.5%),不平仓,让盈利奔跑
let maxPureIncomRate=0
if(pureIncomRate >= 0.5%){
// 记录净收益率的最高点
maxPureIncomRate = Math.max(maxPureIncomRate,pureIncomRate)
// 如果当前净收益率相比最高点下降 40%,则达到盈利平仓条件, 立刻平仓, 然后重新等待下一次开仓机会
const downRate = getDownRate(maxPureIncomRate,pureIncomRate)
if(downRate >= 0.4){
await finishOrder()
await runApp()
}
}
}
}
1
BingoXuan 340 天前
滑点,行情突变,行情盘整等
|
2
gochendong 340 天前
市价成交 滑点 实际收益率会更低
不挂止损 极端行情亏损远大于预期 行情不佳 频繁止损 换币种? 调整止盈止损? 无解矛盾 止盈高了 胜率就低 止盈低了 还 cover 不住磨损 结局 死 |
3
zictos 340 天前
你测了几年的数据?我觉得起码要测 3 年以上,而且我觉得这策略不太可能有正向收益。
仅仅看一分钟的 k 线根本说明不了什么,一分钟的走势的随机性也很大。而且你的策略的多空界限不明显,比如你开了一个多头,可能下一根 k 线又满足你的开空条件,不过你不会平掉多头,还是继续持有多头。 而且频率也会比较高,等于要一直持有仓位,很容易触发信号,几乎没有什么空仓期,其实大部分时候市场没明显趋势的时候完全没必要持仓,保持大部分时候空仓会更好,避免在震荡中反复磨损。频率太高导致手续费也是一个问题。如果资金比较大还要考虑滑点问题。 2%的止损也比较机械,根据市场波动来比较好,常见的就是参考 ATR 指标。 |
4
Ericcccccccc 340 天前
你拿点小钱几千块试试不就知道了吗...
|
5
NoOneNoBody 340 天前
风险:涨停买不进,跌停卖不出;实际价格比期望价格变化快
电脑交易应该要机构席位 一般散户说的“电脑交易”,只是指电脑下单,网速不够快(注意应该不纯粹是速度问题,更大可能是人为延时) |
6
agdhole 340 天前
滑点,手续费,这两个是大头
|