A bot is a short list of rules you write, like "buy when the price crosses above the 20 EMA, sell when it gets back below it". It trades on your account while you are away, with the same fees, cooldowns and limits as your own clicks. Bots come with Meme Street Expert, which includes everything in Pro.
NVXA, CLDR), up to 10. The candle size is 1m, 5m, 15m, 30m or 1h: the bot thinks once each candle of that size closes.price.flat and in front of a buy, but it does no harm.ema(200) is fine, while sma(400) never has one in a running bot, so a comparison with it is always false.A condition is a small formula that is either true or false. Some examples:
cross_above(close, ema(20)) and rsi(14) < 70 price >= ema(200) or pnl_pct <= -5 news_score > 2 and change(12) > 0 close > highest(20) and volume > volume_sma(20) * 1.5
+ - * / % and brackets. A division by zero gives "no value".< <= > >= == !=. A comparison with something that has no value yet (an indicator still warming up) is false.and, or, not, and the words true and false. and is worked out before or; use brackets when in doubt.close, not Close); spaces are optional.| Word | What it is |
|---|---|
open high low close volume | The last finished candle. |
price | The price right now (inside the candle that is still forming). |
prev(x, n) | Anything x as it was n candles ago (1 to 200): prev(close, 1) is the close before, prev(rsi(14), 3) the RSI three candles back. |
The numbers in brackets are lengths in candles (1 to 500) and must be plain numbers. Leave one out to get the default shown.
| Indicator | What it is |
|---|---|
sma(n) | Simple moving average of the closes over n candles. |
ema(n) | Exponential moving average: like the SMA, but recent candles count more. |
wma(n) | Weighted moving average: weights n, n−1, … 1, newest first. |
rsi(n=14) | Relative strength index, 0 to 100. Below 30 is often called oversold, above 70 overbought. |
macd(fast=12, slow=26) | The MACD line: ema(fast) − ema(slow). |
macd_signal(12, 26, 9) | The signal line: an EMA of the MACD line. |
macd_hist(12, 26, 9) | The histogram: MACD line minus signal line. |
atr(n=14) | Average true range: how far a candle typically moves, in MB. |
bb_upper(n=20, k=2)bb_mid(n=20)bb_lower(n=20, k=2) | Bollinger bands: the SMA, and k standard deviations above and below it. |
stoch_k(n=14)stoch_d(n=14, d=3) | Stochastic oscillator, 0 to 100: where the close sits in the range of the last n candles; %D is its d-candle average. |
highest(n)lowest(n) | The highest high and lowest low of the n candles before this one, so a breakout reads close > highest(20). |
change(n) | The % change of the close over n candles: change(12) > 3 means up more than 3%. |
volume_sma(n) | Average volume over n candles. |
vwap() | Volume-weighted average price since the start of the game day (30 real minutes). |
| Word | What it is |
|---|---|
cross_above(a, b) | True on the candle where a went from at or below b to above it. |
cross_below(a, b) | True on the candle where a went from at or above b to below it. |
abs(x) min(a, b) max(a, b) | Size without sign, the smaller, the larger. |
| Word | What it is |
|---|---|
position | Shares held: positive when long, negative when short, 0 when flat. |
long short flat | 1 (true) or 0 (false). |
entry | Your average entry price (0 when flat). |
pnl_pct | The open position's move from the entry in %, your way: +4 means 4% in your favour, long or short. |
cash equity | Your free cash, and what the whole account is worth, in MB. |
calls puts | How many call or put positions you hold on this stock. |
| Word | What it is |
|---|---|
news_score | The score of this stock's recent headlines, with your words (below). |
market_news | The same for headlines about no single company: the economy, rates, the market. |
| Action | What it does | Acts only when |
|---|---|---|
| Buy | Opens a long | you hold none of the stock |
| Sell | Closes the whole long | you are long |
| Short | Opens a short | you hold none of the stock |
| Cover | Closes the whole short | you are short |
| Close the position | Closes a long or a short | you hold some |
| Buy calls / Buy puts | Buys whole 100-share option contracts | you don't hold a call (or put) on it |
| Sell its options | Sells every option you hold on the stock | you hold some |
A bot can read the news wire the way you do. Each headline about the stock is scored by adding up the weights of your words that appear in it. Older headlines count less: a headline's score halves every half-life (30 real minutes unless you change it, 1 to 1,440). news_score is the total for the stock; market_news for headlines about no single company.
In the editor, under News words, write one per line: a word or phrase, =, and its weight. A word ending in * matches any word it starts: upgrade* matches "upgraded" and "upgrades". Up to 200 words. Back to the default words restores the starting list:
beat* = 2 raise* = 1.5 record = 1 surge* = 1.5 soar* = 2 jump* = 1 win* = 1.5 upgrade* = 2 approv* = 2 expand* = 1 strong = 1 buyback = 1.5 partnership = 1 contract = 1 rebound* = 1 rall* = 1.5 rescue* = 1.5 above the forecast = 1 miss* = -2 cut* = -1.5 downgrade* = -2 recall* = -2 lawsuit* = -1.5 probe* = -1.5 investigation = -1.5 warn* = -1.5 delay* = -1 fall* = -1 plunge* = -2 slump* = -1.5 weak* = -1 loss* = -1 layoff* = -1 fraud = -3 bankrupt* = -3 default* = -2 resign* = -1 shortage* = -1 offering = -1 dilut* = -1.5 below the forecast = -1
It only reads the headline text, exactly what you could read yourself, never anything hidden behind the prices.
A backtest runs the bot over the past: rules at each candle's close, orders filled at the next candle's open, the same fee, leverage with its interest, stops and targets on the candles' highs and lows, options priced the way the game prices them, and the news score from the headlines the stock has kept. It can use up to 2,000 candles of each size (three real days of 1-minute candles).
The result shows the return against just holding the stock, the number of trades, how many won, the average win and loss, the profit factor (money won ÷ money lost), the worst drawdown, the fees, the time in the market, an equity curve and every trade.
A backtest only shows the past. The market has no free money in it: a rule that did well over a few days has usually found luck, not an edge. Try it on several stocks and candle sizes, and be wary of rules tuned until the curve looks perfect.
Buy 20%: flat and cross_above(close, ema(20)) and close > ema(200) Sell: long and (close >= ema(200) * 1.03 or cross_below(close, ema(20)))
Buy 15%: flat and rsi(14) < 30 and close > sma(50) Sell: long and rsi(14) > 60
Buy 20%: flat and close > highest(20) and volume > volume_sma(20) * 1.5 Sell: long and close < ema(20)
Buy 10%: flat and news_score >= 2 Short 10%: flat and news_score <= -2 Close: not flat and abs(news_score) < 0.5
Buy calls 20%, 2% out, next close: calls == 0 and news_score >= 2 Sell its options: calls > 0 and news_score < 0
Buy on a MACD turn: cross_above(macd(), macd_signal()) Buy a bounce off the band: close < bb_lower(20, 2) and rsi() < 35 Buy above the VWAP: cross_above(close, vwap()) and market_news >= 0 Sell before a gain goes: pnl_pct > 5 and close < prev(low, 1)
| What | Limit |
|---|---|
| Bots a player | 5 |
| Stocks a bot | 10 |
| Rules a bot | 10, each at most 300 characters |
| Candle sizes | 1m, 5m, 15m, 30m, 1h |
| Indicator lengths | 1 to 500 (a running bot sees the last 300 candles) |
| Trades a game day | 1 to 500 (30 to start) |
| Stop / target | up to 90% / up to 1,000% |
| News words | 200; half-life 1 to 1,440 real minutes |
| Backtests | one every 3 seconds; 50 to 5,000 candles |