📈
小虾量化
v1.0.11
🏠
首页概览
📈
行情分析
📶
信号监控
⚙
策略参数
📄
交易日志
⚡
监控日志
系统状态
版本
--
余额
--
更新
--
总资产 (USDT)
--
USDT
可用
--
冻结
--
今日收益
--
胜率
--%
累计交易
--
合约量化交易系统正式上线
智能策略 · 自动交易 · 稳健益利
⚡ 快速操作
📶
信号分析
开仓信号
📈
行情分析
ETH/SOL
⚙
策略参数
规则配置
📄
交易日志
历史记录
⚡
监控日志
系统日志
📈 ETH-USDT
--
--
--
24h高
--
24h低
--
ADX
--
RSI
--
EMA10
--
--
📈 SOL-USDT
--
--
--
24h高
--
24h低
--
ADX
--
RSI
--
EMA10
--
--
🛒 当前持仓
0个位置
暂无持仓
📈 行情分析
实时市场数据与指标分析
ETH-USDT
SOL-USDT
实时价格
--
--
24h高
--
24h低
--
量比
--
ATR%
--
策略状态
MACD
--
DIF
--
DEA
--
MACD
KDJ
--
K(9)
--
D(3)
RSI
--
RSI(6)
--
RSI(12)
--
RSI(24)
📶 信号监控
ETH / SOL 开仓信号实时判定
🏆 ETH-USDT 信号分析
🏆 SOL-USDT 信号分析
📶 信号过滤链路追踪
⚙ 量化策略参数
小虹量化交易系统 v1.0.11 · kun 与小虹共同打造
▶ 右侧顺势策略(EMA10拖点)
基本信息
定位
趋势确认后入场,不抄底摧顶
触发
ADX ≥ 30 + EMA10 拖点
主信号
EMA10 拖点(唯一触发源)
过滤链路(顺序,任一失败则过滤)
1.主信号
EMA10 上拖/下拖
2.趋势确认
ADX ≥ 30
3.MA60缓冲
价格距 MA60 ≥ 0.3%
4.坡度对齐
禁止 MA60 反向坡度交易
5.RSI过滤
RSI≤20 禁做多 / RSI≥80 禁做空
6.RSI确认
做多 RSI>40 / 做空 RSI<60
7.RRR
RRR ≥ 1.0
风控
保证金
余额 × 1%
杆杆
固定 20X
止损
ATR × K(A=2.5 / B=2.0 / C=1.5)
止盈
阻力位(做多)/支撑位(做空)
◀ 左侧逆势策略
基本信息
定位
均值回归,跃多抄底,涨多做空
触发
ADX < 30
模式划分
正常
ADX < 20 · 振幅 ≥ 2.0%
兼容
20 ≤ ADX < 30 · 振幅 ≥ 2.5%
风控
保证金
余额 × 1%
杆杆
固定 20X
止损
无固定止损(依负止盈机制)
仓位上限
最大保证金 10%
📄 交易日志
历史交易记录
交易日志请访问
/trades.json
⚡ 监控日志
系统运行日志
监控日志请访问
/logs/auto_trade_loop.log
系统运行中
版本
--
余额
--
更新
--
var $=function(id){return document.getElementById(id);};var F=function(n,d){d=d||2;return n==null||isNaN(n)?"--":Number(n).toFixed(d);};var mSym="ETH";function sp(pg){var pgs=["home","market","signal","strategy","log","log2"];pgs.forEach(function(p){var e=$("pg-"+p);if(e)e.style.display=pg===p?"block":"none";});document.querySelectorAll(".ni").forEach(function(n){n.classList.remove("ac");});var btn=$("btn-"+pg);if(btn)btn.classList.add("ac");window.scrollTo({top:0,behavior:"smooth"});if(pg==="signal")renderSignal();if(pg==="market")loadMarket();}function render(){var x=new XMLHttpRequest();x.open("GET","status.json?t="+Date.now(),true);x.onreadystatechange=function(){if(x.readyState!==4||x.status!==200)return;try{var d=JSON.parse(x.responseText);}catch(e){return;}$("h-bal").textContent=F(d.account_balance,2);var ver=d.strategy_version||"--";$("s-ver").textContent=ver;$("s-bal").textContent=F(d.account_balance,2)+"U";var t=d.last_run||"--";$("s-time").textContent=t;$("f-ver").textContent=ver;$("f-bal").textContent=F(d.account_balance,2)+"U";$("f-time").textContent=t;var tod=d.trade_records||[];var wins=tod.filter(function(t){return t.action==="CLOSE"&&parseFloat(t.pnl||0)>0;}).length;$("h-win").textContent=tod.length>0?F(wins/tod.length*100,1)+"%":"--%";$("h-tt").textContent=tod.length;var pnlt=tod.filter(function(t){return t.action==="CLOSE";}).reduce(function(s,t){return s+(parseFloat(t.pnl)||0);},0);$("h-pnl").textContent=(pnlt>=0?"+":"")+F(pnlt,2)+"U";$("h-pnl").style.color=pnlt>=0?"var(--dn)":"var(--up)";$("h-av").textContent=F(d.account_balance,2);$("h-fr").textContent="0.00";var aE=(d.analyses||[]).find(function(v){return v.symbol==="ETH-USDT-SWAP";});var aS=(d.analyses||[]).find(function(v){return v.symbol==="SOL-USDT-SWAP";});fillSym(aE,"eth");fillSym(aS,"sol");var allPos=[];if(d.positions){Object.keys(d.positions).forEach(function(k){var a=d.positions[k];if(Array.isArray(a)){a.forEach(function(p){if(p.pos>0)allPos.push(p);});}});}$("pos-c").textContent=allPos.length+"\u4e2a\u4f4d\u7f6e";if(allPos.length===0){$("pos-l").innerHTML="
\u6682\u65e0\u6301\u4ed3
";}else{var h="";allPos.forEach(function(p){var side=p.side||"long";var pnl=parseFloat(p.unrealizedPnl||0);var sym=(p.instId||"").replace("-USDT-SWAP","");h+="
"+sym+"
"+(side==="long"?"BUY":"SELL")+"
"+p.pos+"\u5f20
=0?"p":"l")+"\\\">"+(pnl>=0?"+":"")+F(pnl,2)+"U
";});$("pos-l").innerHTML=h;}}};x.send(null);setTimeout(render,30000);}function fillSym(a,sym){if(!a)return;var pct=a.changePct24h||0;var dir=pct>=0?"up":"dn";$(sym+"-p").textContent="$"+F(a.last,2);$(sym+"-p").className="pn "+dir;$(sym+"-c").textContent=(pct>=0?"+":"")+F(pct,2)+"%";$(sym+"-c").className="pct "+dir;$(sym+"-h").textContent="$"+F(a.high24h,2);$(sym+"-l").textContent="$"+F(a.low24h,2);$(sym+"-dx").textContent=F(a.adx,1);$(sym+"-r").textContent=F(a.rsi,1);$(sym+"-e").textContent=a.ema10_crossover||"--";$(sym+"-t").textContent=a.last_update||"";var gr=a.grade||"",d2=a.direction||"";var cl=d2==="\u591a"?"up":d2==="\u7a7a"?"dn":"ne";var lbl=d2==="\u591a"?"\u505a\u591a":d2==="\u7a7a"?"\u505a\u7a7a":"\u65e0\u4fe1\u53f7";$(sym+"-sd").innerHTML="
"+lbl+"
"+(d2?gr+"\u7ea7":"")+"
"+gr+"
";$(sym+"-dt").textContent=(d2?"\u65b9\u5411:"+d2+" ":"")+"ADX:"+F(a.adx,1)+" RSI:"+F(a.rsi,1)+" EMA10:"+(a.ema10_crossover||"--");}function loadMarket(){var x=new XMLHttpRequest();x.open("GET","status.json?t="+Date.now(),true);x.onreadystatechange=function(){if(x.readyState!==4||x.status!==200)return;try{var d=JSON.parse(x.responseText);}catch(e){return;}var a=(d.analyses||[]).find(function(v){return v.symbol===mSym+"-USDT-SWAP";});if(!a)return;var pct=a.changePct24h||0;$("m-p").textContent="$"+F(a.last,2);$("m-p").className="pn "+(pct>=0?"up":"dn");$("m-pct").textContent=(pct>=0?"+":"")+F(pct,2)+"%";$("m-pct").className="pct "+(pct>=0?"up":"dn");$("m-h").textContent="$"+F(a.high24h,2);$("m-l").textContent="$"+F(a.low24h,2);$("m-v").textContent=F(a.vol_ratio,2)+"x";$("m-a").textContent=F(a.atr_pct,2)+"%";var gr=a.grade||"",d2=a.direction||"";var h="
\u57fa\u672c\u4fe1\u606f
";h+="
\u65b9\u5411
"+d2+"
";h+="
\u7b49\u7ea7
"+gr+"\u7ea7
";h+="
EMA10
"+(a.ema10_crossover||"--")+"
";h+="
MA60\u5761\u5ea6
"+(a.ma60_slope||"--")+"
";h+="
RRR
=1?"dn":"up")+"\\\">>1.0 ("+F(a.rrr,2)+")
";h+="
";$("m-st").innerHTML=h;$("m-df").textContent=F(a.macd_dif,4);$("m-da").textContent=F(a.macd_dea,4);$("m-mc").textContent=F(a.macd_histogram,4);$("m-k").textContent=F(a.k,2);$("m-kd").textContent=F(a.d,2);$("m-r6").textContent=F(a.rsi,1);$("m-r12").textContent=F(a.rsi12||a.rsi,1);$("m-r24").textContent=F(a.rsi24||a.rsi,1);}};x.send(null);}function renderSignal(){var x=new XMLHttpRequest();x.open("GET","status.json?t="+Date.now(),true);x.onreadystatechange=function(){if(x.readyState!==4||x.status!==200)return;try{var d=JSON.parse(x.responseText);}catch(e){return;}var aE=(d.analyses||[]).find(function(v){return v.symbol==="ETH-USDT-SWAP";});var aS=(d.analyses||[]).find(function(v){return v.symbol==="SOL-USDT-SWAP";});$("sg-eth").innerHTML=makeSig(aE);$("sg-sol").innerHTML=makeSig(aS);var st=d.signal_stats||{};var rE=st.right_side||{};var lE=st.left_side||{};var sh="
\u53f3\u4fa7\u987a\u52bf
";sh+="
\u68c0\u6d4b
"+rE.detected+"
";sh+="
\u6267\u884c
"+rE.executed+"
";sh+="
ADX\u8fc7\u6ee4
"+(rE.filtered_adx||0)+"
";sh+="
EMA60\u8fc7\u6ee4
"+(rE.filtered_ema60||0)+"
";sh+="
\u5761\u5ea6\u8fc7\u6ee4
"+(rE.filtered_ma60_slope||0)+"
";sh+="
RSI\u8fc7\u6ee4
"+(rE.filtered_rsi||0)+"
";sh+="
\u5de6\u4fa7\u9006\u52bf
";sh+="
\u68c0\u6d4b
"+lE.detected+"
";sh+="
\u6267\u884c
"+lE.executed+"
";sh+="
";$("sg-st").innerHTML=sh;}};x.send(null);}function makeSig(a){if(!a)return"
\u65e0\u6570\u636e
";var gr=a.grade||"",d2=a.direction||"";var h="
\u4fe1\u53f7\u72b6\u6001
";h+="
\u65b9\u5411
"+d2+"
";h+="
\u7b49\u7ea7
"+gr+"\u7ea7
";h+="
EMA10
"+(a.ema10_crossover||"--")+"
";h+="
MA60\u5761\u5ea6
"+(a.ma60_slope||"--")+"
";h+="
ADX
"+F(a.adx,1)+"
";h+="
RSI
"+F(a.rsi,1)+"
";h+="
RRR
=1?"dn":"up")+"\\\">>1.0 ("+F(a.rrr,2)+")
";if(a.conditions&&a.conditions.length>0){h+="
\u5df2\u6ee1\u8db3\u6761\u4ef6
";a.conditions.forEach(function(c){h+="
"+c[0]+"
"+c[1]+"
";});}h+="
";return h;}document.addEventListener("DOMContentLoaded",render);