Grandmaster-Obi

@grandmasterobi
1st 1,000
Stockmarketloop member

Building a market watchlist and joining ticker streams.

Followers2
Following3
Watchlist0
Chart8
Total Posts21
Profile Views12
Likes Received2
Loop Bucks1,100

Achievement Tracks

Posts, profile views and likes unlock badges, titles and profile status. Loop Bucks are not paid for engagement.
7 levels per track
Total postsLocked

21 / 25 toward Spark Poster

1234567
84% complete | next badge: Spark Poster
Profile viewsLocked

12 / 500 toward Seen on the Radar

1234567
2% complete | next badge: Seen on the Radar
Likes receivedLocked

2 / 250 toward Liked Contributor

1234567
0% complete | next badge: Liked Contributor

Watchlist

No public watchlist yet.

Chart

Sign in to post on this Chart and join the profile conversation.

smartmoneytrades1st 1,000

Give ya boy a follow back

1 likes
Grandmaster-Obi1st 1,000

ILLR Stock Alert: $0.71 to $7.20 Premarket Move CLICK THIS LINK TO READ FULL ARTICLE ON $ILLR #ILLR #ILLRstock #Triller #TrillerGroup #GrandmasterOBI #MakingEasyMoney #MEMDiscord #retailtrading #momentumstocks #premarketmovers #smallcapstocks #stockmarketnews #stockmarketalerts #highvolatilitystocks #NasdaqILLR #stockmarketlive #stockmarketupdate #daytrading #daytrader #swingtrading #momentumtrading #stockrunners #stockspiking #shortsqueeze... https://www.youtube.com/watch?v=qnmfwI0nmKU

ILLR Stock Alert: $0.71 to $7.20 Premarket Move | Open watch page
#illr#illrstock#triller#trillergroup#grandmasterobi#makingeasymoney#memdiscord#retailtrading#momentumstocks#premarketmovers#smallcapstocks#stockmarketnews
0 likes
Grandmaster-Obi1st 1,000

MRAM Gamma Squeeze: Game Over? + SNDK Stock Price Prediction (May 2026 Update) Date: May 27, 2026 In this video, we analyze the current market conditions for MRAM and SNDK as of May 27, 2026. With recent shifts in short-sale activity and technical breakouts, we break down... https://www.youtube.com/watch?v=q12XzLPyc4I

MRAM Gamma Squeeze: Game Over? + SNDK Stock Price Prediction (May 2026 Update) | Open watch page
0 likes
Grandmaster-Obi1st 1,000

MRAM Gamma Squeeze & SNDK $4,000 Target The May 27, 2026 Update Date: May 27, 2026. As of today, the semiconductor sector is seeing massive volatility. In this video, we break down the latest delta data for MRAM, aggressive short-sale activity, and why SNDK is heading... https://www.youtube.com/watch?v=7OcUI_ALOt8

MRAM Gamma Squeeze & SNDK $4,000 Target The May 27, 2026 Update | Open watch page
0 likes
Grandmaster-Obi1st 1,000

Why I’m Selling All My $PLTR & $NVDA for THIS ONE Stock Palantir and Nvidia have been two of the hottest stocks in the market, but now traders are asking a bigger question… Is there another stock with EVEN MORE upside potential heading into 2026? 👀... https://www.youtube.com/watch?v=A1sfxYXwIec

Why I’m Selling All My $PLTR & $NVDA for THIS ONE Stock | Open watch page
0 likes
Grandmaster-Obi1st 1,000

I Sold My Palantir & Nvidia Stock for THIS AI Penny Stock 👀 I sold my Palantir (PLTR) and Nvidia (NVDA) shares for a new stock with massive upside potential. Here’s why this stock could be the next big mover in the market. #pltr #nvda #nvidia #palantir... https://www.youtube.com/watch?v=mclJ0CDOqLw

I Sold My Palantir & Nvidia Stock for THIS AI Penny Stock 👀 | Open watch page
#pltr#nvda#nvidia#palantir
0 likes
Grandmaster-Obi1st 1,000

LIVE NOW: Streaming on StockMarketLoop Chart. Drop in and talk markets.

0 likes

Traders in the Zone

SML
Track 1 Showing traders what Grandmaster-Obi listens to in the zone.
Add up to 5 YouTube links in Profile Studio so other traders can see your in-the-zone music.

Pinned Image

No pinned image yet.

Recent Photos

No public profile images yet.

Pinned Ticker Post

No pinned ticker post yet.

Recent Ticker Posts

$PLTR

YOOO [Trade proof pending: Moomoo]

Open
$AMD

Whos hold $AMD

Open

Profile Activity

Chart posts, photos, pinned calls, watchlist comments and followers all live on this member page.

Profile Studio

Build the room traders land in.

Your colors, banner, music, pinned photos, links and Chart all shape the page.

Top 8 energy, market edition
Identity + ThemePublic profile controls
Choose carefully. Your first @handle claim becomes your permanent profile URL. Balance: 1,100 Loop Bucks.
Theme Deck
Traders in the Zone Music
Social DockProfile links
Reddit Community OwnerOfficial app connect
Owner-only Reddit integrationConnect Reddit Community -> Login with Reddit -> Pick Your Subreddit -> ActivateSubreddit owners approve the official StockMarketLoop Reddit App once, then select a moderated community to show and manage from this profile.
Login with Reddit verifies the owner/admin account and loads the subreddits that account moderates. Reddit does not share member emails.
Admin setup needed: save the Reddit Client ID and Client Secret in Settings -> StockMarketLoop Reddit App before subreddit owners can verify moderated communities.
Reddit App Keys Needed No moderated subreddits loaded yet. Login with Reddit first.
After Reddit app keys are saved in Settings -> StockMarketLoop Reddit App, the Login with Reddit button will verify moderated subreddits automatically.
Image LockerAvatar, banner, album, pin
Images stay under 8MB. Avatar uploads refresh instantly; banner and pinned photo make the profile feel less generic fast.
';} function chartMediaHtml(media){if(!media||!media.url)return"";var name=esc(media.title||media.name||"Chart media");if(media.type==="video"){var watch=media.watch_url?'Open watch page':"",poster=media.thumbnail_url?' poster="'+esc(media.thumbnail_url)+'"':"";if(media.source==="youtube"||media.embed_url){var embed=media.embed_url||"";if(!embed&&media.youtube_id)embed="https://www.youtube.com/embed/"+encodeURIComponent(media.youtube_id)+"?rel=0&playsinline=1";var thumb=media.thumbnail_url?''+name+'':"";return '
'+(embed?'':thumb)+'YouTube '+name+(watch?' | '+watch:'')+'
';}return '
'+name+(watch?' | '+watch:'')+'
';}return '
'+name+''+name+'
';} function chartPostHtml(row){var tickers=(row.tickers||[]).map(function(s){return '$'+esc(s)+'';}).join(""),hashtags=(row.hashtags||[]).map(function(t){return '#'+esc(t)+'';}).join(""),date=row.date?new Date(row.date).toLocaleString():"",liked=row.viewer_liked?"1":"0",likes=parseInt(row.like_count,10)||0;return '
'+esc(row.handle||"Member")+''+badgeChip(row.badge)+'

'+formatChartText(row.text||"",row.mention_users||[])+'

'+chartMediaHtml(row.media)+(tickers?'
'+tickers+'
':"")+(hashtags?'
'+hashtags+'
':"")+'
'+likes+' likes'+(row.can_delete?'':'')+'
'+voteControls(row)+'
';} function renderChart(rows){var list=root.querySelector("[data-chart-list]");if(!list)return;chartRows=rows||[];list.innerHTML=chartRows.length?chartRows.map(chartPostHtml).join(""):'
No Chart posts yet. This is where profile updates, trade notes, screenshots and market thoughts will live.
';} function loadChart(){api("profile-chart?user_id="+encodeURIComponent(root.dataset.userId)+"&_="+Date.now(),{headers:{"X-WP-Nonce":nonce}}).then(function(data){renderChart(data.posts||[]);if(data.count!==undefined){var c=root.querySelector("[data-chart-count]");if(c)c.textContent=data.count;}}).catch(function(){});} function deleteChartPost(postId){if(!postId)return;if(!confirm("Delete this Chart post?"))return;api("profile-chart-delete",{method:"POST",body:JSON.stringify({user_id:root.dataset.userId,post_id:postId})}).then(function(data){renderChart(data.posts||[]);if(data.count!==undefined){var c=root.querySelector("[data-chart-count]");if(c)c.textContent=data.count;}}).catch(function(err){alert((err&&err.message)||"Could not delete this post.");});} function chartVideoTitle(name){return String(name||"StockMarketLoop video").replace(/\.[^.]+$/,"").replace(/[-_]+/g," ").trim()||"StockMarketLoop video";} function chartMediaPreview(file,kind,state,msg){var box=root.querySelector("[data-chart-media-preview]");if(!box)return;var src=(chartMediaPayload&&chartMediaPayload.url)||chartMediaPreviewUrl||"",poster=kind==="video"&&chartMediaPayload&&chartMediaPayload.thumbnail_url?' poster="'+esc(chartMediaPayload.thumbnail_url)+'"':"",tag=kind==="video"?'':'',thumb=kind==="video"&&chartMediaPayload&&chartMediaPayload.url?'':"";box.dataset.open="1";box.innerHTML=tag+''+esc(kind==="video"?"VIDEO":"PHOTO")+' '+esc(state||"selected")+''+esc(msg||"Preview ready.")+''+esc((file&&file.name)||chartMediaName||"media")+''+thumb+'';} function clearChartMedia(){if(chartMediaPreviewUrl&&window.URL&&URL.revokeObjectURL)URL.revokeObjectURL(chartMediaPreviewUrl);chartMediaPayload=null;chartMediaUploading=false;chartMediaPreviewUrl="";chartMediaName="";var box=root.querySelector("[data-chart-media-preview]");if(box){box.dataset.open="0";box.innerHTML="";}root.querySelectorAll("[data-chart-photo-input],[data-chart-video-input]").forEach(function(input){input.value="";});} function uploadChartMedia(file,kind){if(!file)return;clearChartMedia();chartMediaName=file.name;chartMediaUploading=true;if(window.URL&&URL.createObjectURL)chartMediaPreviewUrl=URL.createObjectURL(file);chartMediaPreview(file,kind,"uploading","Uploading...");chartStatus("Uploading "+(kind==="video"?"video":"photo")+" before posting...");var form=new FormData();form.append("kind",kind);form.append("media",file,file.name);fetch("/wp-json/sml-members/v1/chart-media",{method:"POST",credentials:"same-origin",cache:"no-store",headers:{"Accept":"application/json","X-WP-Nonce":nonce},body:form}).then(function(r){return r.json().then(function(data){if(!r.ok)throw new Error((data&&data.message)||"Upload failed.");return data;});}).then(function(data){chartMediaUploading=false;chartMediaPayload={url:data.url,type:data.type,name:data.name||file.name,mime:data.mime||file.type};if(kind==="video"){chartMediaPayload.title=chartVideoTitle(chartMediaPayload.name);chartMediaPayload.description=(root.querySelector("[data-chart-input]")||{}).value||"";chartMediaPayload.visibility="public";}chartMediaPreview({name:chartMediaPayload.name},kind,"complete",data.message||"Upload complete. Add a thumbnail if you want a custom watch page poster.");chartStatus(kind==="video"?"Video upload complete. Add a thumbnail, text, or hit Post.":"Photo upload complete. Add text or hit Post.");}).catch(function(err){chartMediaUploading=false;chartMediaPayload=null;chartMediaPreview(file,kind,"failed",err.message||"Upload failed. Try a smaller file.");chartStatus(err.message||"Upload failed. Try again.");});} function uploadChartThumbnail(file){if(!file||!chartMediaPayload||chartMediaPayload.type!=="video"){chartStatus("Upload a video first, then add a thumbnail.");return;}if(!/^image\//.test(file.type||"")){chartStatus("Thumbnail must be an image file.");return;}chartStatus("Uploading video thumbnail...");var form=new FormData();form.append("kind","thumbnail");form.append("media",file,file.name);fetch("/wp-json/sml-members/v1/chart-media",{method:"POST",credentials:"same-origin",cache:"no-store",headers:{"Accept":"application/json","X-WP-Nonce":nonce},body:form}).then(function(r){return r.json().then(function(data){if(!r.ok)throw new Error((data&&data.message)||"Thumbnail upload failed.");return data;});}).then(function(data){chartMediaPayload.thumbnail_url=data.url;chartMediaPayload.thumbnail_name=data.name||file.name;chartMediaPreview({name:chartMediaPayload.name},"video","complete","Custom thumbnail ready.");chartStatus("Thumbnail uploaded. It will be used on the watch page and video card.");}).catch(function(err){chartStatus(err.message||"Thumbnail upload failed. Try again.");});} function currentMentionToken(input){if(!input)return null;var pos=typeof input.selectionStart==="number"?input.selectionStart:input.value.length,before=input.value.slice(0,pos),at=before.lastIndexOf("@");if(at<0)return null;var prefix=at>0?before.charAt(at-1):" ";if(prefix&&!/[\s([{]/.test(prefix))return null;var token=before.slice(at+1);if(!/^[A-Za-z0-9_.]{0,30}$/.test(token))return null;return {start:at,end:pos,query:token};} var mentionTimer=null,mentionUsers=[],mentionActive=0; function mentionBox(){return root.querySelector("[data-chart-mention-suggest]");} function closeMentionBox(){var box=mentionBox();if(box){box.dataset.open="0";box.innerHTML="";}mentionUsers=[];mentionActive=0;} function renderMentionBox(input,users){var box=mentionBox();if(!box)return;mentionUsers=users||[];mentionActive=0;if(!mentionUsers.length){closeMentionBox();return;}box.innerHTML=mentionUsers.map(function(u,i){return '';}).join("");box.dataset.open="1";} function moveMentionActive(dir){var box=mentionBox();if(!box||box.dataset.open!=="1"||!mentionUsers.length)return false;mentionActive=(mentionActive+dir+mentionUsers.length)%mentionUsers.length;box.querySelectorAll("[data-mention-pick]").forEach(function(btn,i){btn.dataset.active=i===mentionActive?"1":"0";});return true;} function pickMention(input,index){var token=currentMentionToken(input),u=mentionUsers[index==null?mentionActive:index];if(!token||!u||!u.handle)return;var before=input.value.slice(0,token.start),after=input.value.slice(token.end);input.value=before+'@'+u.handle+' '+after;var caret=(before+'@'+u.handle+' ').length;input.focus();input.setSelectionRange(caret,caret);closeMentionBox();} function refreshMentionSearch(input){var token=currentMentionToken(input);if(!token||token.query.length<1){closeMentionBox();return;}clearTimeout(mentionTimer);mentionTimer=setTimeout(function(){api("profile-search?q="+encodeURIComponent(token.query),{headers:{"X-WP-Nonce":nonce}}).then(function(data){var still=currentMentionToken(input);if(!still||still.query!==token.query)return;renderMentionBox(input,data.users||[]);}).catch(function(){closeMentionBox();});},140);} function postChart(){var input=root.querySelector("[data-chart-input]");if(!input)return;if(chartMediaUploading){chartStatus("Wait for the media upload to finish before posting.");return;}var text=input.value.trim();if(chartMediaPayload&&chartMediaPayload.type==="video"){chartMediaPayload.description=text||chartMediaPayload.description||"";}if(chartMode==="live"&&!text&&!chartMediaPayload){text="LIVE NOW: Streaming on StockMarketLoop Chart. Drop in and talk markets.";}else if(chartMode==="live"&&text){text="LIVE: "+text;}if(!text&&!chartMediaPayload){chartStatus("Write something or add a photo/video before posting.");return;}if(!text&&chartMediaPayload){text=chartMediaPayload.type==="video"?(chartMediaPayload.title||"Shared a StockMarketLoop video"):"Shared a photo on the Chart.";}var btn=root.querySelector("[data-chart-post]");if(btn)btn.disabled=true;chartStatus(chartMode==="live"?"Posting live Chart update...":(chartMediaPayload&&chartMediaPayload.type==="video"?"Publishing video and creating watch page...":"Posting to Chart..."));api("profile-chart",{method:"POST",body:JSON.stringify({user_id:root.dataset.userId,text:text,media:chartMediaPayload||{}})}).then(function(data){var watchUrl=data&&data.post&&data.post.media&&data.post.media.watch_url;input.value="";clearChartMedia();renderChart(data.posts||[]);if(data.count!==undefined){var c=root.querySelector("[data-chart-count]");if(c)c.textContent=data.count;}var stat=root.querySelector("[data-ach-stat-posts]");if(stat){var n=parseInt(String(stat.textContent).replace(/,/g,""),10)||0;stat.textContent=(n+1).toLocaleString();}if(watchUrl){chartStatus("Video published. Opening watch page...");setTimeout(function(){location.href=watchUrl;},650);}else{chartStatus(chartMode==="live"?"Live Chart update posted.":"Posted to Chart.");}}).catch(function(err){chartStatus((err&&err.message)||"Could not post to Chart.");}).finally(function(){if(btn)btn.disabled=false;});} function likeChart(postId){if(!postId)return;chartStatus("Updating like...");api("profile-chart-like",{method:"POST",body:JSON.stringify({user_id:root.dataset.userId,post_id:postId})}).then(function(data){renderChart(data.posts||[]);chartStatus(data.liked?"Liked.":"Like removed.");}).catch(function(err){chartStatus(err.message||"Sign in to like Chart posts.");});} function voteChart(postId,vote){if(!postId)return;chartStatus("Updating vote...");api("post-vote",{method:"POST",body:JSON.stringify({target_type:"chart",target_id:postId,user_id:root.dataset.userId,vote:vote})}).then(function(data){renderChart(data.posts||[]);chartStatus("Vote updated.");}).catch(function(err){chartStatus(err.message||"Sign in to vote on Chart posts.");});} function drawChartVoters(holder,data,direction){if(!holder)return;direction=direction||"all";holder.querySelectorAll(".sml-voter-pop").forEach(function(x){x.remove();});function rows(title,items){return '

'+esc(title)+'

'+((items||[]).length?(items||[]).slice(0,16).map(function(u){return ''+esc(u.handle||"Member")+'';}).join(""):'No voters yet.');}var html=direction==="down"?rows("Red candle downvotes",data.downvoters||[]):direction==="up"?rows("Green candle upvotes",data.upvoters||[]):rows("Green candle upvotes",data.upvoters||[])+rows("Red candle downvotes",data.downvoters||[]);holder.insertAdjacentHTML("beforeend",'
'+html+'
');} function loadChartVoters(postId,holder,direction){direction=direction||"all";api("post-voters?target_type=chart&target_id="+encodeURIComponent(postId||"")+"&user_id="+encodeURIComponent(root.dataset.userId)+"&direction="+encodeURIComponent(direction)+"&_="+Date.now()).then(function(data){drawChartVoters(holder,data,direction||data.direction||"all");}).catch(function(err){chartStatus(err.message||"Only the author can view voter details.");});} function profileMusicPlaylist(){var rows=[];root.querySelectorAll("[data-profile-music-slot]").forEach(function(input){var url=input.value.trim();if(url)rows.push({url:url,title:"Track "+(rows.length+1)});});return rows.slice(0,5);} function profileSocialLinks(){var links={};root.querySelectorAll("[data-social-link]").forEach(function(input){var url=input.value.trim();if(url)links[input.dataset.socialLink]=url;});return links;} function profileRedditOwner(){return {enabled:root.querySelector("[data-reddit-owner-enabled]")?root.querySelector("[data-reddit-owner-enabled]").checked:false,subreddit:root.querySelector("[data-reddit-owner-subreddit]")?root.querySelector("[data-reddit-owner-subreddit]").value:"",reddit_username:root.querySelector("[data-reddit-owner-username]")?root.querySelector("[data-reddit-owner-username]").value:"",invite_url:root.querySelector("[data-reddit-owner-invite]")?root.querySelector("[data-reddit-owner-invite]").value:"",landing_title:root.querySelector("[data-reddit-owner-title]")?root.querySelector("[data-reddit-owner-title]").value:"",notes:root.querySelector("[data-reddit-owner-notes]")?root.querySelector("[data-reddit-owner-notes]").value:""};} function redditStatus(t,bad){var s=root.querySelector("[data-reddit-owner-status]");if(s){s.textContent=t||"";s.dataset.error=bad?"1":"0";}} function showRedditCallbackStatus(){var params=new URLSearchParams(location.search),code=params.get("reddit_status")||"";if(!code)return;var messages={missing_app_keys:"Reddit app keys are missing. Save them in Settings -> StockMarketLoop Reddit App first.",cancelled:"Reddit login was cancelled.",token_failed:"Reddit login connected back, but token exchange failed. Check the Client ID, Secret, and redirect URI.",api_failed:"Reddit login succeeded, but moderated subreddit lookup failed. Try again in a minute.",connected:"Reddit verified your moderated subreddits. Pick one below and activate it.",no_mod_subreddits:"Reddit connected, but this account does not moderate any subreddits."};var bad={missing_app_keys:1,cancelled:1,token_failed:1,api_failed:1,no_mod_subreddits:1};redditStatus(messages[code]||("Reddit status: "+code),!!bad[code]);} function activateRedditCommunity(){var sel=root.querySelector("[data-reddit-owner-select]"),sub=sel?sel.value:(root.querySelector("[data-reddit-owner-subreddit]")?root.querySelector("[data-reddit-owner-subreddit]").value:"");if(!sub){redditStatus("Pick a subreddit first.",true);return;}redditStatus("Activating r/"+sub+"...",false);api("reddit/activate",{method:"POST",body:JSON.stringify({subreddit:sub})}).then(function(p){applySavedProfile(p,false);redditStatus("r/"+sub+" is active on your profile.",false);}).catch(function(err){redditStatus((err&&err.message)||"Could not activate subreddit.",true);});} function cleanPublicHandle(v){return String(v||"").toLowerCase().replace(/^@+/,"").replace(/[^a-z0-9_.]/g,"").slice(0,30);} function renderHandlePolicy(policy){var note=root.querySelector("[data-handle-policy-note]");if(!note)return;policy=policy||handlePolicy||{};var balance=parseInt(policy.loop_bucks_balance,10);if(isNaN(balance))balance=0;note.textContent=(policy.message||"Choose carefully. Your @handle becomes your permanent profile URL.")+" Balance: "+balance.toLocaleString()+" Loop Bucks.";} function confirmHandleChange(){var input=root.querySelector("[data-profile-public-handle]");if(!input)return true;var next=cleanPublicHandle(input.value),current=cleanPublicHandle(originalPublicHandle);input.value=next;if(next&&!/^[a-z0-9_.]{3,30}$/.test(next)){status("Handles need 3-30 letters, numbers, underscores, or dots. No spaces.");return false;}if(!next||next===current)return true;if(handlePolicy&&handlePolicy.locked){input.value=current;status("Your @handle is permanent once claimed and cannot be changed.");renderHandlePolicy(handlePolicy);return false;}return true;} function profilePayload(extra){extra=extra||{};var music=profileMusicPlaylist();return Object.assign({handle:root.querySelector("[data-profile-handle]")?root.querySelector("[data-profile-handle]").value:"",public_handle:root.querySelector("[data-profile-public-handle]")?root.querySelector("[data-profile-public-handle]").value:"",first_name:root.querySelector("[data-profile-first-name]")?root.querySelector("[data-profile-first-name]").value:"",last_name:root.querySelector("[data-profile-last-name]")?root.querySelector("[data-profile-last-name]").value:"",show_real_name:root.querySelector("[data-profile-show-real-name]")?root.querySelector("[data-profile-show-real-name]").checked:false,tagline:root.querySelector("[data-profile-tagline]")?root.querySelector("[data-profile-tagline]").value:"",bio:root.querySelector("[data-profile-bio]")?root.querySelector("[data-profile-bio]").value:"",theme:root.querySelector("[data-profile-theme]")?root.querySelector("[data-profile-theme]").value:"green",font:root.querySelector("[data-profile-font]")?root.querySelector("[data-profile-font]").value:"inter",accent_color:root.querySelector("[data-profile-accent]")?root.querySelector("[data-profile-accent]").value:"",background_color:root.querySelector("[data-profile-background]")?root.querySelector("[data-profile-background]").value:"",text_color:root.querySelector("[data-profile-text-color]")?root.querySelector("[data-profile-text-color]").value:"",card_color:root.querySelector("[data-profile-card-color]")?root.querySelector("[data-profile-card-color]").value:"",music_url:music[0]?music[0].url:"",music_playlist:music,music_autoplay:root.querySelector("[data-profile-music-autoplay]")?root.querySelector("[data-profile-music-autoplay]").checked:false,social_links:profileSocialLinks(),reddit_owner:profileRedditOwner()},extra);} var themePresets={green:{accent:"#62f3a6",background:"#05070b",text:"#f4f7fb",card:"#0d141b"},blue:{accent:"#72d7ff",background:"#050812",text:"#f4f7fb",card:"#0d1826"},gold:{accent:"#f5c542",background:"#070603",text:"#fff8df",card:"#171207"},red:{accent:"#ff5264",background:"#090506",text:"#fff4f5",card:"#1a0d11"}}; function setStudioInput(selector,value){var input=root.querySelector(selector);if(input)input.value=value;} function applyThemePreset(name){var preset=themePresets[name];if(!preset)return;setStudioInput("[data-profile-theme]",name);setStudioInput("[data-profile-accent]",preset.accent);setStudioInput("[data-profile-background]",preset.background);setStudioInput("[data-profile-text-color]",preset.text);setStudioInput("[data-profile-card-color]",preset.card);root.style.setProperty("--sml-accent",preset.accent);root.style.setProperty("--sml-bg",preset.background);root.style.setProperty("--sml-text",preset.text);root.style.setProperty("--sml-card",preset.card);status("Theme deck changed. Save Profile to keep it.");} function socialIconHtml(p){return p.icon?'':esc(p.glyph||"");} function socialButtonHtml(key,url){var p=socialPlatforms[key]||{label:key,glyph:key.slice(0,1),color:"#72d7ff"};return ''+socialIconHtml(p)+''+esc(p.label)+'';} function socialStatus(t,bad){var s=root.querySelector("[data-social-status]");if(s){s.textContent=t||"";s.dataset.error=bad?"1":"0";}} function syncSocialInputs(profile){var links=(profile&&profile.social_links)||{};root.querySelectorAll("[data-social-link]").forEach(function(input){input.value=links[input.dataset.socialLink]||"";});} function syncRedditOwner(profile){var r=(profile&&profile.reddit_owner)||{};var set=function(sel,val){var el=root.querySelector(sel);if(el)el.value=val||"";};var check=root.querySelector("[data-reddit-owner-enabled]");if(check)check.checked=!!r.enabled;set("[data-reddit-owner-subreddit]",r.subreddit);set("[data-reddit-owner-username]",r.reddit_username);set("[data-reddit-owner-invite]",r.invite_url);set("[data-reddit-owner-title]",r.landing_title);set("[data-reddit-owner-notes]",r.notes);var link=root.querySelector(".sml-reddit-connect");if(link&&r.connect_url)link.href=r.connect_url;} function socialCardHtml(card){card=card||{};var p=socialPlatforms[card.platform]||{label:card.label||"Platform",glyph:"",color:card.color||"#72d7ff",icon:card.icon||""},icon=socialIconHtml({icon:card.icon||p.icon,glyph:card.glyph||p.glyph}),image=card.image?'':"";return ''+image+'Connected Platform | '+esc(card.label||p.label||"Platform")+''+esc(card.title||((card.label||p.label||"Platform")+" profile"))+''+esc(card.description||"Connected social profile.")+''+esc(card.display_url||card.url||"")+'';} function renderSocials(profile){var box=root.querySelector("[data-social-buttons]");if(!box)return;var cards=(profile&&profile.social_cards)||[],links=(profile&&profile.social_links)||{},html="";if(cards.length){html=cards.map(socialCardHtml).join("");}else{Object.keys(socialPlatforms).forEach(function(key){if(links[key])html+=socialButtonHtml(key,links[key]);});}box.innerHTML=html||'

No connected social platforms yet.

';} function youtubeVideoId(url){var m=String(url||"").match(/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/shorts\/|youtube\.com\/embed\/)([A-Za-z0-9_-]{6,})/i);return m?m[1]:"";} function youtubePlaylistId(url){try{var u=new URL(url);return (u.searchParams.get("list")||"").replace(/[^A-Za-z0-9_-]/g,"");}catch(e){return "";}} function musicEmbedUrl(track,autoplay,mute){if(!track)return"";var base=track.embed_url||"",list=track.playlist_id||youtubePlaylistId(track.url),video=track.video_id||youtubeVideoId(track.url);if(!base&&list)base="https://www.youtube.com/embed/videoseries?list="+encodeURIComponent(list);if(!base&&video)base="https://www.youtube.com/embed/"+encodeURIComponent(video);if(!base)return"";try{var u=new URL(base);u.searchParams.set("enablejsapi","1");u.searchParams.set("rel","0");u.searchParams.set("playsinline","1");if(autoplay)u.searchParams.set("autoplay","1");if(mute)u.searchParams.set("mute","1");return u.toString();}catch(e){return base;}} function renderMusicList(rows){var list=root.querySelector("[data-music-track-list]");if(!list)return;list.innerHTML=rows.length?rows.map(function(track,i){return '';}).join(""):'No in-the-zone tracks yet.';} function updateMusicChrome(){var box=root.querySelector("[data-music-box]"),title=root.querySelector("[data-music-title]"),caption=root.querySelector("[data-music-caption]"),unmute=root.querySelector("[data-music-unmute]");if(box)box.dataset.hasMusic=musicRows.length?"1":"0";if(title)title.textContent=musicRows.length?(musicRows[activeTrack]&&musicRows[activeTrack].title?musicRows[activeTrack].title:"Track "+(activeTrack+1)):"No in-the-zone music yet";if(caption)caption.textContent=musicRows.length?"Showing traders what "+profileName+" listens to in the zone.":"Add YouTube tracks to show other traders what gets you in the zone.";if(unmute)unmute.textContent=musicRows.length?"Play / Unmute in-the-zone music":"Waiting for in-the-zone track";} function initMusicPlayer(){if(!musicRows.length||!window.YT||!YT.Player||player||!document.getElementById("sml-profile-music-player"))return;try{player=new YT.Player("sml-profile-music-player",{events:{onReady:function(){if(root.dataset.musicAutoplay==="1"){try{player.mute();player.playVideo();}catch(e){}}}}});}catch(e){}} function resetMusicPlayer(){if(player&&player.destroy){try{player.destroy();}catch(e){}}player=null;setTimeout(initMusicPlayer,450);} function setTrack(index,autoplay){var frame=root.querySelector("[data-music-frame]");if(!musicRows.length){if(frame)frame.removeAttribute("src");activeTrack=0;renderMusicList(musicRows);updateMusicChrome();return;}activeTrack=(index+musicRows.length)%musicRows.length;var track=musicRows[activeTrack];renderMusicList(musicRows);updateMusicChrome();if(player&&track.video_id&&player.loadVideoById){player.loadVideoById(track.video_id);if(!autoplay&&player.pauseVideo)player.pauseVideo();return;}if(frame){frame.src=musicEmbedUrl(track,autoplay,autoplay);resetMusicPlayer();}} function refreshMusicPlayer(rows,autoplay){musicRows=rows||[];activeTrack=0;renderMusicList(musicRows);updateMusicChrome();setTrack(0,!!autoplay);} function renderAlbum(profile){var box=root.querySelector("[data-profile-album]"); if(!box)return; var rows=(profile.album||[]).slice(0,5); box.innerHTML=rows.length?rows.map(function(i){return '
Profile album image
';}).join(""):'

No public profile images yet.

';} function renderPinnedImage(url){var box=root.querySelector("[data-pinned-image]"); if(box&&url)box.innerHTML='Pinned profile image';} function cacheBust(url){return url+(url.indexOf("?")>=0?"&":"?")+"smlv="+Date.now();} function refreshAvatar(url){if(!url)return;var fresh=cacheBust(url);root.querySelectorAll("[data-avatar-preview]").forEach(function(img){img.src=fresh;});document.querySelectorAll("[data-sml-global-avatar]").forEach(function(img){img.src=fresh;});} function refreshBanner(url){var banner=root.querySelector(".sml-profile-banner");if(banner&&url)banner.style.backgroundImage="linear-gradient(90deg,rgba(5,7,11,.35),rgba(5,7,11,.76)),url("+cacheBust(url)+")";} var follow=root.querySelector("[data-follow-button]"); if(follow){follow.addEventListener("click",function(){var following=root.dataset.following==="1";api("follow",{method:"POST",body:JSON.stringify({user_id:root.dataset.userId,action:following?"unfollow":"follow"})}).then(function(r){root.dataset.following=r.following?"1":"0";follow.textContent=r.following?"Following":"Follow";root.querySelector("[data-followers-count]").textContent=r.followers_count;});});} var copy=root.querySelector("[data-copy-profile]"); if(copy){copy.addEventListener("click",function(){navigator.clipboard&&navigator.clipboard.writeText(location.href);copy.textContent="Copied";setTimeout(function(){copy.textContent="Copy Profile";},1600);});} function enterPreview(){root.dataset.preview="1";var url=new URL(location.href);url.searchParams.set("sml_view","visitor");history.replaceState(null,"",url.toString());window.scrollTo({top:0,behavior:"smooth"});} function exitPreview(){root.dataset.preview="0";var url=new URL(location.href);url.searchParams.delete("sml_view");history.replaceState(null,"",url.toString());} function applySavedProfile(p,viewAfter){var real=root.querySelector("[data-real-name-view]");profileName=p.display_name||p.handle||profileName;root.querySelector("[data-display-name-view]").textContent=profileName;root.querySelector("[data-public-handle-view]").textContent="@"+(p.public_handle||"");root.querySelector("[data-tagline-view]").textContent=p.tagline||"Stockmarketloop member";root.querySelector("[data-bio-view]").textContent=p.bio||"Building a market watchlist and joining ticker streams.";if(real){real.textContent=p.real_name||"";real.hidden=!p.real_name;}originalPublicHandle=p.public_handle||originalPublicHandle;handlePolicy=p.handle_policy||handlePolicy;renderHandlePolicy(handlePolicy);root.dataset.musicAutoplay=p.music_autoplay?"1":"0";root.style.setProperty("--sml-accent",p.accent_color||"#62F3A6");root.style.setProperty("--sml-bg",p.background_color||"#05070B");root.style.setProperty("--sml-text",p.text_color||"#F4F7FB");root.style.setProperty("--sml-card",p.card_color||"#0D141B");renderSocials(p);syncSocialInputs(p);syncRedditOwner(p);refreshMusicPlayer(p.music_playlist||[],p.music_autoplay);if(viewAfter)enterPreview();status(viewAfter?"Profile saved. Visitor preview is on.":"Profile saved. Studio changes are live.");} function saveProfile(viewAfter){if(!confirmHandleChange())return;status("Saving...");api("profile",{method:"POST",body:JSON.stringify(profilePayload())}).then(function(p){applySavedProfile(p,viewAfter);}).catch(function(err){status((err&&err.message)||"Could not save profile.");});} function saveSocialDock(){socialStatus("Saving Social Dock...",false);api("profile",{method:"POST",body:JSON.stringify(profilePayload({public_handle:originalPublicHandle}))}).then(function(p){applySavedProfile(p,false);socialStatus("Social Dock saved. Connected Platforms updated.",false);status("Social Dock saved.");}).catch(function(err){socialStatus((err&&err.message)||"Could not save Social Dock.",true);status((err&&err.message)||"Could not save Social Dock.");});} var save=root.querySelector("[data-save-profile]"); if(save){save.addEventListener("click",function(){saveProfile(false);});} var savePreview=root.querySelector("[data-save-preview]"); if(savePreview){savePreview.addEventListener("click",function(){saveProfile(true);});} var saveSocial=root.querySelector("[data-save-social-dock]"); if(saveSocial){saveSocial.addEventListener("click",saveSocialDock);} var redditActivate=root.querySelector("[data-reddit-activate]"); if(redditActivate){redditActivate.addEventListener("click",activateRedditCommunity);} root.querySelectorAll("[data-reddit-app-ready='0']").forEach(function(btn){btn.addEventListener("click",function(ev){ev.preventDefault();redditStatus("Save Reddit app keys in Settings -> StockMarketLoop Reddit App first.",true);});}); showRedditCallbackStatus(); var publicHandleInput=root.querySelector("[data-profile-public-handle]");if(publicHandleInput){publicHandleInput.addEventListener("input",function(){var clean=cleanPublicHandle(publicHandleInput.value);if(publicHandleInput.value!==clean)publicHandleInput.value=clean;});} root.querySelectorAll("[data-preview-profile]").forEach(function(btn){btn.addEventListener("click",enterPreview);}); root.querySelectorAll("[data-edit-profile]").forEach(function(btn){btn.addEventListener("click",exitPreview);}); root.addEventListener("click",function(e){var img=e.target.closest("[data-pin-image]"),post=e.target.closest("[data-pin-post]"),like=e.target.closest("[data-chart-like]"),vote=e.target.closest("[data-chart-vote]"),voters=e.target.closest("[data-chart-voters]"); if(img){status("Pinning image...");api("profile",{method:"POST",body:JSON.stringify(profilePayload({public_handle:originalPublicHandle,pinned_image_url:img.dataset.pinImage}))}).then(function(p){renderPinnedImage(p.pinned_image_url);status("Pinned image saved.");}).catch(function(){status("Could not pin image.");});} if(post){status("Pinning post...");api("profile",{method:"POST",body:JSON.stringify(profilePayload({public_handle:originalPublicHandle,pinned_post_id:post.dataset.pinPost}))}).then(function(){status("Pinned post saved. Reload to see it featured.");}).catch(function(){status("Could not pin that post.");});} if(like){likeChart(like.dataset.chartLike);} if(voters){loadChartVoters(voters.dataset.postId,voters.closest(".sml-vote-row"),voters.dataset.chartVoters||"all");} if(vote){voteChart(vote.dataset.postId,vote.dataset.chartVote);}}); root.querySelectorAll("[data-image-upload]").forEach(function(input){input.addEventListener("change",function(){var file=input.files&&input.files[0],kind=input.dataset.imageUpload;if(!file)return;if(file.size>8388608){status("Image must be under 8MB.");input.value="";return;}var reader=new FileReader();reader.onerror=function(){status("Could not read that image. Try a PNG, JPG, GIF, or WEBP.");input.value="";};reader.onload=function(){status("Uploading "+kind+" image...");api("profile-image",{method:"POST",body:JSON.stringify({type:kind,image:reader.result})}).then(function(r){if(kind==="avatar")refreshAvatar(r.url);else if(kind==="banner")refreshBanner(r.url);else if(kind==="pinned")renderPinnedImage(r.url);renderAlbum(r.profile||{});status(kind==="avatar"?"Avatar updated.":"Image uploaded.");input.value="";}).catch(function(err){status((err&&err.message)||"Image upload failed.");input.value="";});};reader.readAsDataURL(file);});}); root.querySelectorAll("[data-social-connect]").forEach(function(btn){btn.addEventListener("click",function(){var input=root.querySelector('[data-social-link="'+btn.dataset.socialConnect+'"]');if(input){input.focus();input.select();}});}); root.querySelectorAll("[data-theme-preset]").forEach(function(btn){btn.addEventListener("click",function(){applyThemePreset(btn.dataset.themePreset);});}); var chartInputEl=root.querySelector("[data-chart-input]");if(chartInputEl){chartInputEl.addEventListener("input",function(){refreshMentionSearch(chartInputEl);});chartInputEl.addEventListener("click",function(){refreshMentionSearch(chartInputEl);});chartInputEl.addEventListener("keydown",function(e){var box=mentionBox();if(box&&box.dataset.open==="1"){if(e.key==="ArrowDown"){e.preventDefault();moveMentionActive(1);}else if(e.key==="ArrowUp"){e.preventDefault();moveMentionActive(-1);}else if(e.key==="Enter"||e.key==="Tab"){e.preventDefault();pickMention(chartInputEl);}else if(e.key==="Escape"){closeMentionBox();}}});chartInputEl.addEventListener("blur",function(){setTimeout(closeMentionBox,180);});}var mentionPickBox=mentionBox();if(mentionPickBox){mentionPickBox.addEventListener("mousedown",function(e){e.preventDefault();var btn=e.target.closest("[data-mention-pick]");if(btn&&chartInputEl)pickMention(chartInputEl,parseInt(btn.dataset.mentionPick,10)||0);});} root.querySelectorAll("[data-chart-mode]").forEach(function(btn){btn.addEventListener("click",function(){chartMode=btn.dataset.chartMode||"chart";root.querySelectorAll("[data-chart-mode]").forEach(function(x){x.dataset.active=x===btn?"1":"0";});if(chartMode==="photo"){var p=root.querySelector("[data-chart-photo-input]");if(p)p.click();}else if(chartMode==="video"){var v=root.querySelector("[data-chart-video-input]");if(v)v.click();}else if(chartMode==="live"){chartStatus("Live camera/RTMP ready. Post your live title now; provider streaming is handled through StockMarketLoop Live.");}else{chartStatus("Ready to post to this Chart.");}});}); var chartPhotoInput=root.querySelector("[data-chart-photo-input]");if(chartPhotoInput){chartPhotoInput.addEventListener("change",function(){var file=chartPhotoInput.files&&chartPhotoInput.files[0];if(file)uploadChartMedia(file,"photo");});} var chartVideoInput=root.querySelector("[data-chart-video-input]");if(chartVideoInput){chartVideoInput.addEventListener("change",function(){var file=chartVideoInput.files&&chartVideoInput.files[0];if(file)uploadChartMedia(file,"video");});} root.addEventListener("change",function(e){var thumb=e.target.closest("[data-chart-thumb-input]");if(thumb&&thumb.files&&thumb.files[0])uploadChartThumbnail(thumb.files[0]);}); var chartButton=root.querySelector("[data-chart-post]");if(chartButton){chartButton.addEventListener("click",postChart);} root.addEventListener("click",function(e){var b=e.target.closest("[data-chart-delete]");if(b){deleteChartPost(b.getAttribute("data-chart-delete"));}});renderChart(chartRows);setInterval(loadChart,60000); renderMusicList(musicRows);updateMusicChrome();window.onYouTubeIframeAPIReady=initMusicPlayer;if(window.YT&&YT.Player)initMusicPlayer(); var play=root.querySelector("[data-music-play]"),pause=root.querySelector("[data-music-pause]"),next=root.querySelector("[data-music-next]"),unmute=root.querySelector("[data-music-unmute]"),volume=root.querySelector("[data-music-volume]"); if(play)play.addEventListener("click",function(){if(!musicRows.length){status("Add a YouTube in-the-zone track first.");return;}if(player){player.playVideo();}else{setTrack(activeTrack,true);}}); if(pause)pause.addEventListener("click",function(){if(player)player.pauseVideo();}); if(next)next.addEventListener("click",function(){setTrack(activeTrack+1,true);}); if(unmute)unmute.addEventListener("click",function(){if(!musicRows.length){status("Add a YouTube in-the-zone track first.");return;}if(player){player.unMute();player.playVideo();unmute.textContent="Playing in-the-zone music";setTimeout(function(){unmute.textContent="Play / Unmute in-the-zone music";},1400);}else{setTrack(activeTrack,true);}}); if(volume)volume.addEventListener("input",function(){if(player){player.setVolume(parseInt(volume.value,10)||0);if(parseInt(volume.value,10)>0)player.unMute();}}); root.addEventListener("click",function(e){var track=e.target.closest("[data-music-track]");if(track)setTrack(parseInt(track.dataset.musicTrack,10)||0,true);}); })();
Trending Top 12
Stock Market LoopConnect. Learn. Share. Grow.
Stock Market Loop
Join StockmarketloopSign in to post, vote sentiment, save watchlists and view member tools.
Trading Floor
Quick watchlist