ProRealCode - Trading & Coding with ProRealTime™
Incidently when doing that challege thing i did not look at any other timeframes i stayed on a 5 min chart, now i have learned to look at a higher timeframe to see overall what direction price is trending. If im on a 30 sec chart i’ll look at the 5 min, if im on a 5 min ill look at the 15 min if im on the hour chart i’ll look at the 4 hour and if im on the 4 hour ill look at the daily chart.
Another realisation i had was that time is very important, we only have so much of it, can’t buy it back so thinking about that i realised that if i had a lot of money as some traders do then i’d be on the lower timeframes there is no way id be wasting my precious time sitting looking at screens so that realisation probably strengthens my scalping beliefs.
Obviously people are living diffrent and some peoples time is used up working so they have to trade higher timeframes and they cant give up there job until they know that what there doing is working for them, been there and got the t-shirt. its not an easy decision and sometimes a happy medium is required.
I’m just rambling any way good luck !
I used to think, if i could see the screen of one of those good traders screen as they traded i might be able to duplicate that screen and make as much money as they did. I was wrong, id need that information but also id need the information in his/her head along with there confidence and beliefs as well as a good chunk of cash to get the same results or simular. Any trading system is only as good as the time and effort you put into it to convince yourself its worth risking money on or not. The way I do my trials and errors with trading systems is that I go as little a point for as long as it takes to strengthen my beliefs in that system before raising the stakes, if it takes a month it takes a month if it takes a year its a year well spent. I might be able to test the same thing by programming it and letting that go over past data or present data but there could be a posibility that it might get it wrong and give me a faulse sense of security which in turn could be costly. There might be hiden varables the program didnt take into consideration or fees or something else that effects it. The same things apply when using a demo account, no emotion needed, its not real money, its not your hard earned money thats at stake so diffrent decisions will be made. they are good however for learning the trading platform your intent on using. Sounds easy when looking at trading when getting into it, hell, use my index finger to click a mouse while sitting on a nice comfortable chair and make more money in a day than i made carring bricks up a ladder all week. The market has a way of humbling everyone who gets into it esspecially stuborn people who refuse to cut losses and refuse to put a lot of effort into 1 thing long enough.
Just a thought or 2
shug wrote: I go as little a point for as long as it takes to strengthen my beliefs in that system before raising the stakes
I did exactly the same Shug!
Also after nearly getting wiped out (a few times!) going back on minimum position size requires loads of patience after trading on much bigger sizes.
Its a bit like boxing, you take a few hits but get back up and learn how not to get hit so hard next time LOL
I have been taking some trades on those 30 second charts you have traded on, didnt take much time for me to get into it fast and furious but to me tunning into the 30 second chart isnt that bad, in the past i wouldnt have dreamed about trading 30 second charts but i see the advantages with really tight stops ect
Not sure if things are changing via A.I I have noticed on a few charts big bars appearing random, a lot more random than usual at strange times, i did look at announcements etc to see what was going on but couldnt find anything. Is it manipulation to ‘get retail traders’ i have no idea but i have been trading a lot of years and it just feels like there is a change of some sort, anyone who watches the charts as i do has to have noticed it as well
A question that comes up quite a lot is, how many trades does it take to get enough confidence in ‘the system’. Its not as clear cut to give a direct answer to. There is a number of factors involved in answering that question. 60 trades on a 1 min chart, 5 trades on a 4 hour chart, trading 2 months on a daily timeframe. It isnt clear cut, depends on a lot of factors i have just mentioned a couple. Someone might get confidence quicker than someone else so this is why its a good idea to go lower on your trades to start with and the longer you can do that the better. In order to experience all market conditions it takes time but a lot of people want to make money quickly as possible, a lot of people don’t want to put the effort required in to the game to master it and even when you think you mastered it there is still suprises so it takes effort to adapt to re evaluate, sometimes your better sitting on your hands. Watch it for a time and when you get your confidence back re enter again.
A number of times I thought thats it i have cracked the code i’m going to be a millionare in no time then the market showed me whos boss LOL
1 more thing id like to mention is expectation, reason i’m saying this is I can recall saying to myself I’d be happy if i made £200 a week, then that changed to 400 a week then a thowsand a week after that id be happy with £5000 a week, I think you people will relate to that. Id suggest not to do it, because unconsciously you are setting yourself up to only get £200 a week, you put an unconscious restriction in your mind and thats all you will end up getting. On the other hand if you start with wanting £5000 a week, depending on your account size and risk appatite, you have an unrealistic goal, esspecially if you have a small account.
Id suggest to be ambiguios and be thankful if you come out without a loss at the end of the week.
Another one of my attempts at using price action. a short video uploaded to youtube here…
The idea was simple, 15 min chart of wall street, if the bar/candle closed red buy, if candle closed green sell, thats it. lets see how i got on.
Video link didn’t appear so here is a screenshot
playing with claud to do some pine script for reversing a 15 min bar on wall st
the above was just buy trades (buying red bars for 5 points or whatever i set it for) the results were very slightly diffrent for just selling, not a lot of diffrence in the 2, the numbers on the bars are from close of the bar to how many points in your favour it goes just on the next bar, the higher the timeframe used the better it gets up to over 90% chance of gaining at least x amount of points. no stop loss installed yet and i didnt turn it into a strategy, just an indicator.
//@version=5
indicator(“Opposite-Direction Extreme (Points)”, overlay=true, max_labels_count=500)
// ── Inputs ─────────────────────────────────────────────────────────
showLabels = input.bool(true, “Show labels”)
downMoveClr = input.color(color.new(color.red, 0), “Label color — down move (after green bar)”)
upMoveClr = input.color(color.new(color.lime, 0), “Label color — up move (after red bar)”)
lblSize = input.string(size.small, “Label size”,
options = [size.tiny, size.small, size.normal, size.large])
decimals = input.int(1, “Decimal places”, minval = 0, maxval = 4)
showTable = input.bool(true, “Show stats table”)
minThreshold = input.float(10.0, “Min favourable move (points)”, minval = 0)
tablePos = input.string(position.top_right, “Table position”,
options = [position.top_right, position.top_left, position.bottom_right, position.bottom_left])
resetDaily = input.bool(false, “Reset counts each new day”)
// ── New: Table view ───────────────────────────────────────────────
tableFilter = input.string(“Both”, “Table view”, options = [“Both”, “Up only”, “Down only”], group = “Table”)
showMissX = input.bool(true, “Show ‘X’ on bars that missed the target”, group = “Table”)
missColor = input.color(color.new(color.orange, 0), “Missed-target ‘X’ color”, group = “Table”)
// ── New: Trading hours & exclusions ──────────────────────────────────
restrictTradingHours = input.bool(false, “Restrict calculations to trading hours”, group = “Trading Hours & Exclusions”)
tradingSession = input.session(“0000-2359”, “Trading hours (exchange time)”, group = “Trading Hours & Exclusions”)
enableExclusions = input.bool(false, “Exclude specific times from calculation”, group = “Trading Hours & Exclusions”)
excludeTimesStr = input.string(“”, “Times to exclude (comma-separated HH:mm, exchange time, e.g. 09:00,13:30)”, group = “Trading Hours & Exclusions”)
// ── Logic ──────────────────────────────────────────────────────────
// bar[1] = the bar that just closed green/red
// current bar = the “next” bar — we measure its extreme in the
// OPPOSITE direction, measured from bar[1]’s close.
prevGreen = close[1] > open[1]
prevRed = close[1] < open[1]
var float pts = na
var bool isDown = false // true = measuring a drop (after a green bar)
var bool valid = false
if prevGreen
// prior bar was green -> opposite direction = down
// how far did THIS bar’s low drop below the prior close?
pts := close[1] – low
isDown:= true
valid := true
else if prevRed
// prior bar was red -> opposite direction = up
// how far did THIS bar’s high rise above the prior close?
pts := high – close[1]
isDown:= false
valid := true
else
valid := false
// ── New: is this bar inside the allowed trading window? ──────────────
// Restricts BOTH the labels and the stats to only the times you want
// to trade, and lets you switch specific times “off” one by one so you
// can compare the table with/without them.
inSession = restrictTradingHours ? not na(time(timeframe.period, tradingSession)) : true
hh = hour(time)
mm = minute(time)
curHHMM = (hh < 10 ? “0” : “”) + str.tostring(hh) + “:” + (mm < 10 ? “0” : “”) + str.tostring(mm)
isExcludedTime = false
if enableExclusions and str.length(excludeTimesStr) > 0
excludedArr = str.split(excludeTimesStr, “,”)
for t in excludedArr
if str.trim(t) == curHHMM
isExcludedTime := true
isTradingTime = inSession and not isExcludedTime
// Only draw once the bar is actually closed (so the number can’t repaint)
// style_none = plain text only, no pin/box shape
if showLabels and valid and barstate.isconfirmed and isTradingTime
if isDown
label.new(bar_index, low, str.tostring(pts, “#.” + str.repeat(“#”, decimals)),
style = label.style_none,
textcolor = downMoveClr,
size = lblSize)
else
label.new(bar_index, high, str.tostring(pts, “#.” + str.repeat(“#”, decimals)),
style = label.style_none,
textcolor = upMoveClr,
size = lblSize)
// ── New: ‘X’ mark on bars that didn’t reach the target ────────────────
if showMissX and valid and barstate.isconfirmed and isTradingTime and pts < minThreshold
barRange = high – low
xOffset = barRange > 0 ? barRange * 0.6 : syminfo.mintick * 10
if isDown
label.new(bar_index, low – xOffset, “✗”, style = label.style_none, textcolor = missColor, size = lblSize)
else
label.new(bar_index, high + xOffset, “✗”, style = label.style_none, textcolor = missColor, size = lblSize)
// ── Stats tracking ─────────────────────────────────────────────────
var int upCount = 0
var int downCount = 0
var int upAtLeastCount = 0 // up moves that hit at least minThreshold pts (WINS)
var int downAtLeastCount = 0 // down moves that hit at least minThreshold pts (WINS)
var int upNoFavCount = 0 // “up” bars that never moved favourably at all (pts <= 0)
var int downNoFavCount = 0 // “down” bars that never moved favourably at all (pts <= 0)
var float upSum = 0.0
var float downSum = 0.0
var float upMax = 0.0
var float downMax = 0.0
var float upWinSum = 0.0 // sum of pts on bars that hit the threshold (for avg win)
var float upLossSum = 0.0 // sum of pts on bars that missed the threshold (for avg loss)
var float downWinSum = 0.0
var float downLossSum = 0.0
var int excludedCount = 0 // bars that would have counted but were outside trading hours / excluded
var int firstBarTime = na // timestamp of the first bar loaded on the chart
var int firstStatTime = na // timestamp of the first bar actually counted into the stats
lastBarTime = time // timestamp of the current bar (== last bar once barstate.islast)
if na(firstBarTime)
firstBarTime := time
if na(firstStatTime) and valid and barstate.isconfirmed and isTradingTime
firstStatTime := time
// optional daily reset
newDay = ta.change(time(“D”)) != 0
if resetDaily and newDay
upCount := 0
downCount := 0
upAtLeastCount := 0
downAtLeastCount := 0
upNoFavCount := 0
downNoFavCount := 0
upSum := 0.0
downSum := 0.0
upMax := 0.0
downMax := 0.0
upWinSum := 0.0
upLossSum := 0.0
downWinSum := 0.0
downLossSum := 0.0
excludedCount := 0
if valid and barstate.isconfirmed
if isTradingTime
if isDown
downCount += 1
downSum += pts
downMax := math.max(downMax, pts)
if pts >= minThreshold
downAtLeastCount += 1
downWinSum += pts
else
downLossSum += pts
if pts <= 0
downNoFavCount += 1
else
upCount += 1
upSum += pts
upMax := math.max(upMax, pts)
if pts >= minThreshold
upAtLeastCount += 1
upWinSum += pts
else
upLossSum += pts
if pts <= 0
upNoFavCount += 1
else
excludedCount += 1
// ── Table ──────────────────────────────────────────────────────────
fmt(x) => str.tostring(x, “#.” + str.repeat(“#”, decimals))
f_fmtDate(t) =>
y = year(t)
mo = month(t)
d = dayofmonth(t)
h = hour(t)
mi = minute(t)
str.tostring(y) + “-“ + (mo < 10 ? “0” : “”) + str.tostring(mo) + “-“ + (d < 10 ? “0” : “”) + str.tostring(d) +
” “ + (h < 10 ? “0” : “”) + str.tostring(h) + “:” + (mi < 10 ? “0” : “”) + str.tostring(mi)
showBoth = tableFilter == “Both”
showUp = tableFilter == “Up only”
showDown = tableFilter == “Down only”
tableCols = showBoth ? 3 : 2
// 11 rows: header, Bars Won, True Loss, Missed Target, Avg pts, Max pts,
// ≥ threshold, % ≥ threshold, Expectancy, Excluded bars, Date Range
var table statsTable = table.new(tablePos, tableCols, 11, border_width = 1)
f_putRow(rowIdx, labelTxt, upVal, downVal) =>
table.cell(statsTable, 0, rowIdx, labelTxt, text_color = color.white, bgcolor = color.new(color.black, 30))
if showBoth
table.cell(statsTable, 1, rowIdx, upVal, text_color = color.white, bgcolor = color.new(color.black, 30))
table.cell(statsTable, 2, rowIdx, downVal, text_color = color.white, bgcolor = color.new(color.black, 30))
else if showUp
table.cell(statsTable, 1, rowIdx, upVal, text_color = color.white, bgcolor = color.new(color.black, 30))
else
table.cell(statsTable, 1, rowIdx, downVal, text_color = color.white, bgcolor = color.new(color.black, 30))
if showTable and barstate.islast
upAvg = upCount > 0 ? upSum / upCount : 0.0
downAvg = downCount > 0 ? downSum / downCount : 0.0
// “Won” = reached the min favourable move threshold; “Lost” = didn’t
upWon = upAtLeastCount
upLost = upCount – upAtLeastCount
downWon = downAtLeastCount
downLost = downCount – downAtLeastCount
// Expectancy (pts) = avg win × win% − avg loss × loss%
// One number that folds win rate and payoff size together, so a
// high win rate with tiny wins vs big losses will show up as
// low/negative expectancy, and vice versa.
upWinPct = upCount > 0 ? upWon / upCount : 0.0
upLossPct = upCount > 0 ? upLost / upCount : 0.0
downWinPct = downCount > 0 ? downWon / downCount : 0.0
downLossPct = downCount > 0 ? downLost / downCount : 0.0
upAvgWin = upWon > 0 ? upWinSum / upWon : 0.0
upAvgLoss = upLost > 0 ? upLossSum / upLost : 0.0 // typically ≤ minThreshold, may be negative
downAvgWin = downWon > 0 ? downWinSum / downWon : 0.0
downAvgLoss = downLost > 0 ? downLossSum / downLost : 0.0
upExpectancy = (upAvgWin * upWinPct) – (math.abs(upAvgLoss) * upLossPct)
downExpectancy = (downAvgWin * downWinPct) – (math.abs(downAvgLoss) * downLossPct)
// header row
table.cell(statsTable, 0, 0, “”, bgcolor = color.new(color.gray, 20))
if showBoth
table.cell(statsTable, 1, 0, “Up (after red)”, text_color = upMoveClr, bgcolor = color.new(color.gray, 20))
table.cell(statsTable, 2, 0, “Down (after green)”, text_color = downMoveClr, bgcolor = color.new(color.gray, 20))
else if showUp
table.cell(statsTable, 1, 0, “Up (after red)”, text_color = upMoveClr, bgcolor = color.new(color.gray, 20))
else
table.cell(statsTable, 1, 0, “Down (after green)”, text_color = downMoveClr, bgcolor = color.new(color.gray, 20))
// Split “Bars Lost” into two distinct outcomes:
// – True Loss: the bar actually moved against the setup (pts ≤ 0)
// – Missed Target: the bar moved favourably, just not far enough
// to clear minThreshold (0 < pts < minThreshold)
upTrueLoss = upNoFavCount
upMissedTarget = upLost – upNoFavCount
downTrueLoss = downNoFavCount
downMissedTarget = downLost – downNoFavCount
f_putRow(1, “Bars Won”, str.tostring(upWon), str.tostring(downWon))
f_putRow(2, “True Loss (≤0)”, str.tostring(upTrueLoss), str.tostring(downTrueLoss))
f_putRow(3, “Missed Target”, str.tostring(upMissedTarget), str.tostring(downMissedTarget))
f_putRow(4, “Avg pts”, fmt(upAvg), fmt(downAvg))
f_putRow(5, “Max pts”, fmt(upMax), fmt(downMax))
f_putRow(6, “≥ “ + fmt(minThreshold) + ” pts”, str.tostring(upAtLeastCount) + ” / “ + str.tostring(upCount), str.tostring(downAtLeastCount) + ” / “ + str.tostring(downCount))
f_putRow(7, “% ≥ thresh.”, upCount > 0 ? fmt(upAtLeastCount / upCount * 100) + “%” : “—”, downCount > 0 ? fmt(downAtLeastCount / downCount * 100) + “%” : “—”)
f_putRow(8, “Expectancy (pts)”, fmt(upExpectancy), fmt(downExpectancy))
// ── Excluded-bar count, so you can see the effect of your
// trading-hours / exclusion settings on the stats above ───────────
table.cell(statsTable, 0, 9, “Excluded bars”, text_color = color.white, bgcolor = color.new(color.black, 30))
table.cell(statsTable, 1, 9, str.tostring(excludedCount), text_color = color.white, bgcolor = color.new(color.black, 30))
if showBoth
table.cell(statsTable, 2, 9, “”, bgcolor = color.new(color.black, 30))
// ── Date range actually being counted, so you can see at a glance
// how much history the chart/feed has loaded (e.g. only 1 week on
// some intraday symbols/feeds) ─────────────────────────────────────
rangeTxt = na(firstStatTime) ? “—” : f_fmtDate(firstStatTime) + ” → “ + f_fmtDate(lastBarTime)
table.cell(statsTable, 0, 10, “Date Range”, text_color = color.white, bgcolor = color.new(color.black, 30))
table.cell(statsTable, 1, 10, rangeTxt, text_color = color.white, bgcolor = color.new(color.black, 30))
if showBoth
table.cell(statsTable, 2, 10, “”, bgcolor = color.new(color.black, 30))
table.merge_cells(statsTable, 1, 10, 2, 10)
// ============================================================
// Standard Deviation Channel (4x) – ProRealTime ProBuilder port
// v2: channel is now a FIXED straight line drawn once across the
// current lookback window (via DRAWSEGMENT + IsLastBarUpdate),
// matching TradingView’s behavior, instead of a per-bar rolling
// regression plotted with RETURN (which looked wavy).
// ============================================================
// STILL NOT INCLUDED (see chat for details):
// – Weekly/Monthly/Yearly H/L lines + labels: no persistent
// line/label drawing equivalent for that use case.
// – alertcondition(): set alerts from PRT’s Alert manager.
// – Filled/shaded bands between channel lines: ProBuilder has
// no area-fill instruction for drawn objects, only lines.
// ============================================================
//—- Parameters (all editable in the indicator Settings panel) —-
Length = 128 //Regression/StdDev lookback
ShowDev1 = 1 //1 = show, 0 = hide
Mult1 = 1
ShowDev2 = 1
Mult2 = 2
ShowDev3 = 0
Mult3 = 3
ShowDev4 = 0
Mult4 = 4
ShowPearsonR = 0 //1 = plot Pearson’s R value, 0 = hide
//– Moving averages (set ShowMAx = 0 to hide) —
//MA type codes: 1 = SMA, 2 = EMA, 3 = WMA, 4 = SMMA(RMA)
ShowMA1 = 0
MA1Type = 2
MA1Length = 20
ShowMA2 = 0
MA2Type = 2
MA2Length = 50
ShowMA3 = 0
MA3Type = 1
MA3Length = 100
ShowMA4 = 0
MA4Type = 1
MA4Length = 200
//—- Linear regression over “Length” bars ending at the current bar —-
// pos = 0 is the oldest bar in the window, pos = Length-1 is the current bar
sumX = 0
sumY = 0
sumXY = 0
sumX2 = 0
FOR k = 0 TO Length – 1 DO
pos = (Length – 1) – k
sumX = sumX + pos
sumY = sumY + close[k]
sumXY = sumXY + pos * close[k]
sumX2 = sumX2 + pos * pos
NEXT
denom = Length * sumX2 – sumX * sumX
IF denom <> 0 THEN
slope = (Length * sumXY – sumX * sumY) / denom
ELSE
slope = 0
ENDIF
avgY = sumY / Length
intercept = avgY – slope * sumX / Length
BaseLine = intercept + slope * (Length – 1) //regression value at current bar
//—- Standard deviation of residuals + Pearson’s R —-
sumSqDiff = 0
dsxx = 0
dsyy = 0
dsxy = 0
regMid = intercept + slope * (Length – 1) / 2
FOR k = 0 TO Length – 1 DO
pos = (Length – 1) – k
predicted = intercept + slope * pos
diff = close[k] – predicted
sumSqDiff = sumSqDiff + diff * diff
dxt = close[k] – avgY
dyt = predicted – regMid
dsxx = dsxx + dxt * dxt
dsyy = dsyy + dyt * dyt
dsxy = dsxy + dxt * dyt
NEXT
StdDev = SQRT(sumSqDiff / Length)
IF dsxx = 0 OR dsyy = 0 THEN
PearsonR = 0
ELSE
PearsonR = dsxy / SQRT(dsxx * dsyy)
ENDIF
//—- Moving averages —-
IF BarIndex = 0 THEN
smma1 = close
smma2 = close
smma3 = close
smma4 = close
ELSE
smma1 = (smma1[1] * (MA1Length – 1) + close) / MA1Length
smma2 = (smma2[1] * (MA2Length – 1) + close) / MA2Length
smma3 = (smma3[1] * (MA3Length – 1) + close) / MA3Length
smma4 = (smma4[1] * (MA4Length – 1) + close) / MA4Length
ENDIF
IF ShowMA1 = 1 THEN
IF MA1Type = 1 THEN
MA1 = Average[MA1Length](close)
ELSIF MA1Type = 2 THEN
MA1 = ExponentialAverage[MA1Length](close)
ELSIF MA1Type = 3 THEN
MA1 = WeightedAverage[MA1Length](close)
ELSE
MA1 = smma1
ENDIF
ELSE
MA1 = BaseLine
ENDIF
IF ShowMA2 = 1 THEN
IF MA2Type = 1 THEN
MA2 = Average[MA2Length](close)
ELSIF MA2Type = 2 THEN
MA2 = ExponentialAverage[MA2Length](close)
ELSIF MA2Type = 3 THEN
MA2 = WeightedAverage[MA2Length](close)
ELSE
MA2 = smma2
ENDIF
ELSE
MA2 = BaseLine
ENDIF
IF ShowMA3 = 1 THEN
IF MA3Type = 1 THEN
MA3 = Average[MA3Length](close)
ELSIF MA3Type = 2 THEN
MA3 = ExponentialAverage[MA3Length](close)
ELSIF MA3Type = 3 THEN
MA3 = WeightedAverage[MA3Length](close)
ELSE
MA3 = smma3
ENDIF
ELSE
MA3 = BaseLine
ENDIF
IF ShowMA4 = 1 THEN
IF MA4Type = 1 THEN
MA4 = Average[MA4Length](close)
ELSIF MA4Type = 2 THEN
MA4 = ExponentialAverage[MA4Length](close)
ELSIF MA4Type = 3 THEN
MA4 = WeightedAverage[MA4Length](close)
ELSE
MA4 = smma4
ENDIF
ELSE
MA4 = BaseLine
ENDIF
PRPlot = ShowPearsonR * PearsonR
//—- Fixed straight channel: drawn once, only on the current/last bar,
// spanning exactly the last “Length” bars – not recalculated per
// historical bar, so it no longer looks like a wavy moving average.
IF IsLastBarUpdate THEN
x1 = BarIndex – (Length – 1)
x2 = BarIndex
DRAWSEGMENT(x1, intercept, x2, BaseLine) COLOURED(128,128,128) STYLE(LINE,2)
IF ShowDev1 = 1 THEN
DRAWSEGMENT(x1, intercept + Mult1 * StdDev, x2, BaseLine + Mult1 * StdDev) COLOURED(0,0,255) STYLE(LINE,1)
DRAWSEGMENT(x1, intercept – Mult1 * StdDev, x2, BaseLine – Mult1 * StdDev) COLOURED(255,0,0) STYLE(LINE,1)
ENDIF
IF ShowDev2 = 1 THEN
DRAWSEGMENT(x1, intercept + Mult2 * StdDev, x2, BaseLine + Mult2 * StdDev) COLOURED(0,128,0) STYLE(LINE,1)
DRAWSEGMENT(x1, intercept – Mult2 * StdDev, x2, BaseLine – Mult2 * StdDev) COLOURED(0,128,0) STYLE(LINE,1)
ENDIF
IF ShowDev3 = 1 THEN
DRAWSEGMENT(x1, intercept + Mult3 * StdDev, x2, BaseLine + Mult3 * StdDev) COLOURED(255,140,0) STYLE(LINE,1)
DRAWSEGMENT(x1, intercept – Mult3 * StdDev, x2, BaseLine – Mult3 * StdDev) COLOURED(255,140,0) STYLE(LINE,1)
ENDIF
IF ShowDev4 = 1 THEN
DRAWSEGMENT(x1, intercept + Mult4 * StdDev, x2, BaseLine + Mult4 * StdDev) COLOURED(255,0,0) STYLE(LINE,1)
DRAWSEGMENT(x1, intercept – Mult4 * StdDev, x2, BaseLine – Mult4 * StdDev) COLOURED(218,165,32) STYLE(LINE,1)
ENDIF
ENDIF
//—- Output (must be a single unbroken line) —-
RETURN MA1 AS “MA 1” COLOURED(255,255,0) STYLE(LINE,2), MA2 AS “MA 2” COLOURED(255,165,0) STYLE(LINE,2), MA3 AS “MA 3” COLOURED(255,0,0) STYLE(LINE,2), MA4 AS “MA 4” COLOURED(160,32,240) STYLE(LINE,2), PRPlot AS “Pearson’s R”
been playing with prorealtime with ai as well
Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.
Trading without indicators
This topic contains 464 replies,
has 22 voices, and was last updated by GraHal
8 minutes ago.
| Forum: | General Trading: Market Analysis & Manual Trading |
| Language: | English |
| Started: | 07/30/2020 |
| Status: | Active |
| Attachments: | 117 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.