<style>
#tpr-v75-root *{box-sizing:border-box;margin:0;padding:0;}
#tpr-v75-root{position:fixed!important;inset:0!important;z-index:2147483647!important;background:#0a0a0f;overflow-y:auto;overflow-x:hidden;font-family:'Syne',sans-serif;}
#tpr-v75-root::before{content:'';position:fixed;inset:0;background-image:linear-gradient(#1e1e2e 1px,transparent 1px),linear-gradient(90deg,#1e1e2e 1px,transparent 1px);background-size:40px 40px;opacity:.35;pointer-events:none;z-index:0;}
#tpr-v75-root .wrap{position:relative;z-index:1;max-width:920px;margin:0 auto;padding:28px 20px 60px;}
#tpr-v75-root header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;flex-wrap:wrap;gap:12px;}
#tpr-v75-root .brand-tag{font-family:'Space Mono',monospace;font-size:10px;color:#00ff88;letter-spacing:3px;text-transform:uppercase;margin-bottom:3px;}
#tpr-v75-root .brand-name{font-size:22px;font-weight:800;letter-spacing:-.5px;color:#e8e8f0;}
#tpr-v75-root .brand-name span{color:#00ff88;}
#tpr-v75-root .header-right{display:flex;align-items:center;gap:10px;}
#tpr-v75-root .live-badge{display:flex;align-items:center;gap:8px;background:#00ff8822;border:1px solid #00ff88;border-radius:4px;padding:6px 12px;font-family:'Space Mono',monospace;font-size:11px;color:#00ff88;letter-spacing:1px;}
#tpr-v75-root .live-dot{width:7px;height:7px;border-radius:50%;background:#00ff88;animation:tprv75pulse 1.4s ease infinite;}
@keyframes tprv75pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(.7);}}
#tpr-v75-root .close-btn{background:#1e1e2e;border:1px solid #333350;border-radius:4px;color:#555570;font-family:'Space Mono',monospace;font-size:11px;padding:6px 12px;cursor:pointer;letter-spacing:1px;}
#tpr-v75-root .signal-card{border:1px solid #1e1e2e;border-radius:8px;padding:28px;margin-bottom:18px;background:#111118;position:relative;overflow:hidden;transition:border-color .4s;}
#tpr-v75-root .signal-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:#555570;transition:background .4s;}
#tpr-v75-root .signal-card.trend-up{border-color:#00ff8840;}
#tpr-v75-root .signal-card.trend-up::before{background:#00ff88;}
#tpr-v75-root .signal-card.trend-down{border-color:#ff3d5a40;}
#tpr-v75-root .signal-card.trend-down::before{background:#ff3d5a;}
#tpr-v75-root .signal-card.choppy{border-color:#ffb80040;}
#tpr-v75-root .signal-card.choppy::before{background:#ffb800;}
#tpr-v75-root .signal-label{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:3px;color:#555570;text-transform:uppercase;margin-bottom:10px;}
#tpr-v75-root .signal-main{font-size:44px;font-weight:800;letter-spacing:-2px;line-height:1;margin-bottom:8px;transition:color .4s;color:#e8e8f0;}
#tpr-v75-root .signal-main.up{color:#00ff88;}
#tpr-v75-root .signal-main.down{color:#ff3d5a;}
#tpr-v75-root .signal-main.chop{color:#ffb800;}
#tpr-v75-root .signal-sub{font-family:'Space Mono',monospace;font-size:11px;color:#555570;line-height:1.6;}
#tpr-v75-root .signal-icon{position:absolute;right:28px;top:50%;transform:translateY(-50%);font-size:60px;opacity:.1;}
#tpr-v75-root .bot-action{display:inline-block;margin-top:14px;padding:7px 14px;border-radius:4px;font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;}
#tpr-v75-root .bot-action.go{background:#00ff8822;color:#00ff88;border:1px solid #00ff88;}
#tpr-v75-root .bot-action.wait{background:#ffb80022;color:#ffb800;border:1px solid #ffb800;}
#tpr-v75-root .bot-action.caution{background:#ff3d5a22;color:#ff3d5a;border:1px solid #ff3d5a;}
#tpr-v75-root .metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px;}
#tpr-v75-root .metric{background:#111118;border:1px solid #1e1e2e;border-radius:6px;padding:14px;position:relative;overflow:hidden;}
#tpr-v75-root .metric-label{font-family:'Space Mono',monospace;font-size:9px;letter-spacing:2px;color:#555570;text-transform:uppercase;margin-bottom:6px;}
#tpr-v75-root .metric-value{font-family:'Space Mono',monospace;font-size:20px;font-weight:700;color:#e8e8f0;transition:color .3s;}
#tpr-v75-root .metric-sub{font-family:'Space Mono',monospace;font-size:9px;color:#555570;margin-top:3px;}
#tpr-v75-root .metric-bar{position:absolute;bottom:0;left:0;height:2px;background:#555570;transition:width .5s ease,background .3s;}
#tpr-v75-root .chart-wrap{background:#111118;border:1px solid #1e1e2e;border-radius:6px;padding:14px;margin-bottom:18px;}
#tpr-v75-root .chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
#tpr-v75-root .chart-title{font-family:'Space Mono',monospace;font-size:9px;letter-spacing:2px;color:#555570;text-transform:uppercase;}
#tpr-v75-root .chart-price{font-family:'Space Mono',monospace;font-size:13px;color:#e8e8f0;}
#tpr-v75-root canvas{width:100%;height:110px;display:block;}
#tpr-v75-root .log-wrap{background:#111118;border:1px solid #1e1e2e;border-radius:6px;padding:14px;margin-bottom:18px;}
#tpr-v75-root .log-title{font-family:'Space Mono',monospace;font-size:9px;letter-spacing:2px;color:#555570;text-transform:uppercase;margin-bottom:10px;}
#tpr-v75-root .log-entry{font-family:'Space Mono',monospace;font-size:10px;color:#555570;display:flex;gap:10px;align-items:center;padding:4px 0;border-bottom:1px solid #1e1e2e;}
#tpr-v75-root .log-entry:last-child{border-bottom:none;}
#tpr-v75-root .log-time{min-width:60px;}
#tpr-v75-root .log-signal{font-weight:700;min-width:80px;}
#tpr-v75-root .log-signal.up{color:#00ff88;}
#tpr-v75-root .log-signal.down{color:#ff3d5a;}
#tpr-v75-root .log-signal.chop{color:#ffb800;}
#tpr-v75-root .log-detail{color:#44445a;}
#tpr-v75-root .status-bar{display:flex;align-items:center;justify-content:space-between;font-family:'Space Mono',monospace;font-size:10px;color:#555570;flex-wrap:wrap;gap:8px;}
#tpr-v75-root .connecting{text-align:center;padding:30px 20px;font-family:'Space Mono',monospace;color:#555570;font-size:12px;letter-spacing:1px;}
#tpr-v75-root .spinner{width:26px;height:26px;border:2px solid #1e1e2e;border-top-color:#00ff88;border-radius:50%;animation:tprv75spin .8s linear infinite;margin:0 auto 14px;}
@keyframes tprv75spin{to{transform:rotate(360deg);}}
#tpr-v75-root .error-msg{background:#ff3d5a22;border:1px solid #ff3d5a;border-radius:6px;padding:12px 16px;font-family:'Space Mono',monospace;font-size:11px;color:#ff3d5a;margin-bottom:14px;display:none;}
#tpr-v75-root footer{text-align:center;font-family:'Space Mono',monospace;font-size:9px;color:#555570;letter-spacing:2px;margin-top:16px;padding-top:16px;border-top:1px solid #1e1e2e;}
@media(max-width:580px){#tpr-v75-root .metrics{grid-template-columns:1fr 1fr;}}
</style>
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Syne:wght@400;600;700;800&display=swap" rel="stylesheet">
<div id="tpr-v75-root">
<div class="wrap">
<header>
<div class="brand">
<div class="brand-tag">The Payout Report</div>
<div class="brand-name">TPR <span>V75</span> Scanner</div>
</div>
<div class="header-right">
<div class="live-badge"><div class="live-dot"></div>LIVE · R_75</div>
<button class="close-btn" onclick="tprv75Close()">✕ EXIT</button>
</div>
</header>
<div class="error-msg" id="tprv75err">⚠ Connection lost. Reconnecting...</div>
<div class="signal-card" id="tprv75card">
<div class="signal-label">Market Condition</div>
<div class="signal-main" id="tprv75main">
<div class="connecting"><div class="spinner"></div>CONNECTING TO DERIV...</div>
</div>
<div class="signal-sub" id="tprv75sub"></div>
<div id="tprv75action"></div>
<div class="signal-icon" id="tprv75icon"></div>
</div>
<div class="metrics">
<div class="metric"><div class="metric-label">RSI · 12</div><div class="metric-value" id="tprv75rsiV">—</div><div class="metric-sub" id="tprv75rsiS">waiting...</div><div class="metric-bar" id="tprv75rsiB" style="width:0"></div></div>
<div class="metric"><div class="metric-label">SMA 12</div><div class="metric-value" id="tprv75s12V">—</div><div class="metric-sub" id="tprv75s12S">waiting...</div><div class="metric-bar" id="tprv75s12B" style="width:0"></div></div>
<div class="metric"><div class="metric-label">SMA 20</div><div class="metric-value" id="tprv75s20V">—</div><div class="metric-sub" id="tprv75s20S">waiting...</div><div class="metric-bar" id="tprv75s20B" style="width:0"></div></div>
<div class="metric"><div class="metric-label">Price vs SMA12</div><div class="metric-value" id="tprv75pvV">—</div><div class="metric-sub" id="tprv75pvS">waiting...</div><div class="metric-bar" id="tprv75pvB" style="width:50%"></div></div>
<div class="metric"><div class="metric-label">SMA Alignment</div><div class="metric-value" id="tprv75saV">—</div><div class="metric-sub" id="tprv75saS">waiting...</div><div class="metric-bar" id="tprv75saB" style="width:50%"></div></div>
<div class="metric"><div class="metric-label">Signals Agree</div><div class="metric-value" id="tprv75cfV">—</div><div class="metric-sub" id="tprv75cfS">waiting...</div><div class="metric-bar" id="tprv75cfB" style="width:0"></div></div>
</div>
<div class="chart-wrap">
<div class="chart-header">
<div class="chart-title">Price · Last 60 Ticks</div>
<div class="chart-price" id="tprv75price">—</div>
</div>
<canvas id="tprv75chart"></canvas>
</div>
<div class="log-wrap">
<div class="log-title">Signal History</div>
<div id="tprv75log"><div class="log-entry"><span class="log-time">—</span><span class="log-signal">Waiting for data...</span></div></div>
</div>
<div class="status-bar">
<span>SYMBOL: R_75 · SYNTHETIC</span>
<span id="tprv75ticks">TICKS: 0</span>
<span id="tprv75updated">UPDATED: —</span>
</div>
<footer>TPR V75 SCANNER · THE PAYOUT REPORT · DATA: DERIV WEBSOCKET API</footer>
</div>
</div>
<script>
(function(){
var ROOT = document.getElementById('tpr-v75-root');
// Hide all sibling elements on the host page
function lockdown(){
var kids = document.body.children;
for(var i=0;i<kids.length;i++){
if(kids[i].id !== 'tpr-v75-root'){
kids[i].style.cssText += ';display:none!important;visibility:hidden!important;';
}
}
document.body.style.overflow = 'hidden';
document.documentElement.style.overflow = 'hidden';
}
lockdown();
// Re-run if site JS injects new elements
if(window.MutationObserver){
new MutationObserver(lockdown).observe(document.body,{childList:true});
}
window.tprv75Close = function(){
var kids = document.body.children;
for(var i=0;i<kids.length;i++){
kids[i].style.display = '';
kids[i].style.visibility = '';
}
document.body.style.overflow = '';
document.documentElement.style.overflow = '';
ROOT.style.display = 'none';
if(ws) ws.close();
};
var WS_URL = 'wss://ws.binaryws.com/websockets/v3?app_id=1089';
var SYMBOL = 'R_75';
var RSI_PER = 12, SMA_S = 12, SMA_L = 20, NEEDED = 60;
var ticks=[], ws=null, tickCount=0, signalLog=[], reconnectDelay=2000;
function sma(arr,n){
if(arr.length<n) return null;
var s=arr.slice(-n),sum=0;
for(var i=0;i<s.length;i++) sum+=s[i];
return sum/n;
}
function rsiCalc(arr,n){
if(arr.length<n+1) return null;
var s=arr.slice(-(n+1)),g=0,l=0;
for(var i=1;i<s.length;i++){var d=s[i]-s[i-1];d>0?g+=d:l+=Math.abs(d);}
if(l===0) return 100;
return 100-(100/(1+(g/l)));
}
function fmt(n,d){d=d||2;return n===null?'--':n.toFixed(d);}
function nowStr(){return new Date().toLocaleTimeString('en-GB',{hour:'2-digit',minute:'2-digit',second:'2-digit'});}
function connect(){
if(ws){try{ws.close();}catch(e){}}
ws = new WebSocket(WS_URL);
ws.onopen = function(){
reconnectDelay=2000;
document.getElementById('tprv75err').style.display='none';
ws.send(JSON.stringify({ticks:SYMBOL,subscribe:1}));
};
ws.onmessage = function(e){
var msg=JSON.parse(e.data);
if(msg.tick) onTick(msg.tick.quote);
};
ws.onerror = ws.onclose = function(){
document.getElementById('tprv75err').style.display='block';
setTimeout(connect,reconnectDelay);
reconnectDelay=Math.min(reconnectDelay*1.5,15000);
};
}
function onTick(price){
ticks.push(price);
if(ticks.length>200) ticks.shift();
tickCount++;
document.getElementById('tprv75ticks').textContent='TICKS: '+tickCount;
document.getElementById('tprv75updated').textContent='UPDATED: '+nowStr();
document.getElementById('tprv75price').textContent=price.toFixed(2);
drawChart();
if(ticks.length<NEEDED){
var pct=Math.round((ticks.length/NEEDED)*100);
document.getElementById('tprv75main').innerHTML=
'<div class="connecting"><div class="spinner"></div>LOADING DATA... '+pct+'%</div>';
return;
}
compute(price);
}
function compute(price){
var rv=rsiCalc(ticks,RSI_PER), s12=sma(ticks,SMA_S), s20=sma(ticks,SMA_L);
if(rv===null||s12===null||s20===null) return;
var rsiUp=rv>14, rsiDn=rv<14;
var pUp=price>s12, pDn=price<s12;
var aUp=s12>s20, aDn=s12<s20;
var upC=[rsiUp,pUp,aUp].filter(Boolean).length;
var dnC=[rsiDn,pDn,aDn].filter(Boolean).length;
var cond,css,icon,sub,act,actC;
if(upC===3){
cond='▲ TRENDING UP';css='up';icon='↑';
sub='All 3 signals bullish · RSI '+fmt(rv)+' · Price above SMA12 · SMA12 above SMA20';
act='🟢 BOT READY — Safe to run TPR V75';actC='go';
} else if(dnC===3){
cond='▼ TRENDING DOWN';css='down';icon='↓';
sub='All 3 signals bearish · RSI '+fmt(rv)+' · Price below SMA12 · SMA12 below SMA20';
act='🟢 BOT READY — Safe to run TPR V75';actC='go';
} else if(upC>=2||dnC>=2){
cond='~ WEAK TREND';css='chop';icon='~';
sub=Math.max(upC,dnC)+'/3 signals agree · Not fully committed yet';
act='⚠️ CAUTION — Wait for full confirmation';actC='wait';
} else {
cond='⚡ CHOPPY';css='chop';icon='≈';
sub='Signals conflicting · RSI '+fmt(rv)+' · No clear directional bias';
act='🔴 HOLD — Do not run the bot right now';actC='caution';
}
var card=document.getElementById('tprv75card');
card.className='signal-card '+(upC===3?'trend-up':dnC===3?'trend-down':'choppy');
var main=document.getElementById('tprv75main');
main.className='signal-main '+css;
main.innerHTML=cond;
document.getElementById('tprv75sub').innerHTML=sub;
document.getElementById('tprv75icon').innerHTML=icon;
document.getElementById('tprv75action').innerHTML='<span class="bot-action '+actC+'">'+act+'</span>';
var rC=rv>60?'#00ff88':rv<40?'#ff3d5a':'#ffb800';
setM('tprv75rsiV',fmt(rv),rC,'tprv75rsiS',rv>60?'bullish momentum':rv<40?'bearish momentum':'neutral zone','tprv75rsiB',Math.min(100,rv),rC);
var c12=price>s12?'#00ff88':'#ff3d5a';
setM('tprv75s12V',fmt(s12),c12,'tprv75s12S','price is '+(price>s12?'ABOVE ↑':'BELOW ↓'),'tprv75s12B',60,c12);
var c20=s12>s20?'#00ff88':'#ff3d5a';
setM('tprv75s20V',fmt(s20),c20,'tprv75s20S','SMA12 is '+(s12>s20?'ABOVE ↑':'BELOW ↓'),'tprv75s20B',60,c20);
var pvd=((price-s12)/s12*100), pvc=pUp?'#00ff88':'#ff3d5a';
setM('tprv75pvV',(pvd>=0?'+':'')+pvd.toFixed(3)+'%',pvc,'tprv75pvS',pUp?'✓ bullish signal':'✗ bearish signal','tprv75pvB',Math.min(100,Math.abs(pvd)*200+30),pvc);
var sad=((s12-s20)/s20*100), sac=aUp?'#00ff88':'#ff3d5a';
setM('tprv75saV',(sad>=0?'+':'')+sad.toFixed(3)+'%',sac,'tprv75saS',aUp?'✓ bullish alignment':'✗ bearish alignment','tprv75saB',Math.min(100,Math.abs(sad)*300+30),sac);
var tot=Math.max(upC,dnC), cc=tot===3?'#00ff88':tot===2?'#ffb800':'#ff3d5a';
setM('tprv75cfV',tot+'/3',cc,'tprv75cfS',tot===3?'full confluence':tot===2?'partial signal':'no confluence','tprv75cfB',(tot/3)*100,cc);
if(tickCount%30===0){
addLog(cond,css,'RSI '+fmt(rv)+' · SMA12 '+fmt(s12)+' · SMA20 '+fmt(s20));
}
}
function setM(vId,val,col,sId,sub,bId,pct,bCol){
var v=document.getElementById(vId);v.innerHTML=val;v.style.color=col;
document.getElementById(sId).innerHTML=sub;
var b=document.getElementById(bId);b.style.width=pct+'%';b.style.background=bCol;
}
function addLog(sig,cls,detail){
signalLog.unshift({t:nowStr(),s:sig,c:cls,d:detail});
if(signalLog.length>8) signalLog.pop();
document.getElementById('tprv75log').innerHTML=signalLog.map(function(e){
return '<div class="log-entry"><span class="log-time">'+e.t+'</span><span class="log-signal '+e.c+'">'+e.s+'</span><span class="log-detail">'+e.d+'</span></div>';
}).join('');
}
function drawChart(){
var canvas=document.getElementById('tprv75chart');
var ctx=canvas.getContext('2d');
var dpr=window.devicePixelRatio||1;
var W=canvas.parentElement.clientWidth, H=110;
canvas.width=W*dpr; canvas.height=H*dpr;
canvas.style.width=W+'px'; canvas.style.height=H+'px';
ctx.scale(dpr,dpr);
var data=ticks.slice(-60);
if(data.length<2) return;
var mn=Math.min.apply(null,data), mx=Math.max.apply(null,data), rng=mx-mn||1;
var x=function(i){return(i/(data.length-1))*W;};
var y=function(v){return H-10-((v-mn)/rng)*(H-20);};
ctx.clearRect(0,0,W,H);
var isUp=data[data.length-1]>data[0];
var grad=ctx.createLinearGradient(0,0,0,H);
grad.addColorStop(0,isUp?'rgba(0,255,136,0.18)':'rgba(255,61,90,0.18)');
grad.addColorStop(1,'rgba(0,0,0,0)');
ctx.beginPath(); ctx.moveTo(x(0),H);
for(var i=0;i<data.length;i++) ctx.lineTo(x(i),y(data[i]));
ctx.lineTo(x(data.length-1),H); ctx.closePath();
ctx.fillStyle=grad; ctx.fill();
ctx.beginPath();
for(var i=0;i<data.length;i++) i===0?ctx.moveTo(x(i),y(data[i])):ctx.lineTo(x(i),y(data[i]));
ctx.strokeStyle=isUp?'#00ff88':'#ff3d5a'; ctx.lineWidth=1.5; ctx.stroke();
if(data.length>=SMA_S){
var sl=data.map(function(_,i){
var sl2=data.slice(Math.max(0,i-SMA_S+1),i+1);
return sl2.reduce(function(a,b){return a+b;},0)/sl2.length;
});
ctx.beginPath();
for(var i=0;i<sl.length;i++) i===0?ctx.moveTo(x(i),y(sl[i])):ctx.lineTo(x(i),y(sl[i]));
ctx.strokeStyle='rgba(68,136,255,0.5)'; ctx.lineWidth=1;
ctx.setLineDash([3,3]); ctx.stroke(); ctx.setLineDash([]);
}
}
window.addEventListener('resize',drawChart);
connect();
})();
</script>