Williams’ Percent Range (SDK Trading)
Williams’ Percent Range was developed by Larry Williams, a promoter and publisher of trading materials. It is a type of momentum indicator that moves between -100 and 0 and measures oversold and overbought levels. The Williams %R always is used to find how to enter or exit in the market.
Fintechee is the most promising Forex trading platform. Please access Fintechee's website to know more details. Fintechee provides cryptocurrency price on their website. Here is the link: https://www.brokerless.cc, the frontend is based on Fintechee WEB Trader. AngelInvestmentNetwork.org has some cases. You can find news at Fintecher.org, the blog of Fintechee's founder, PlaygroundFX and LetplayFX
Williams’ Percent Range (SDK Trading)
registerIndicator("wpr", "Williams' Percent Range(v1.0)", function (context) {
var dataInputClose = getDataInput(context, 0)
var dataInputHigh = getDataInput(context, 1)
var dataInputLow = getDataInput(context, 2)
var dataOutput = getDataOutput(context, "wpr")
var dataOutputHL = getDataOutput(context, "wprHighLevel")
var dataOutputLL = getDataOutput(context, "wprLowLevel")
var highLevel = getIndiParameter(context, "highLevel")
var lowLevel = getIndiParameter(context, "lowLevel")
var period = getIndiParameter(context, "period")
var calculatedLength = getCalculatedLength(context)
var ptr = calculatedLength
if (ptr > 0) {
ptr--
} else {
ptr = period - 1
for (var i = 0; i < period - 1; i++) {
dataOutput[i] = 0
dataOutputHL[i] = highLevel
dataOutputLL[i] = lowLevel
}
}
while (ptr < dataInputClose.length) {
var maxArr = []
for (var i = 0; i < period; i++) {
maxArr.push(dataInputHigh[ptr - i])
}
var highest = Math.max.apply(null, maxArr)
var minArr = []
for (var i = 0; i < period; i++) {
minArr.push(dataInputLow[ptr - i])
}
var lowest = Math.min.apply(null, minArr)
if (0 == highest - lowest) {
dataOutput[ptr] = 0
} else {
dataOutput[ptr] = -100 * (highest - dataInputClose[ptr]) / (highest - lowest)
}
dataOutputHL[ptr] = highLevel
dataOutputLL[ptr] = lowLevel
ptr++
}
},[{
name: "period",
value: 14,
required: true,
type: PARAMETER_TYPE.INTEGER,
range: [1, 100]
},{
name: "highLevel",
value: -20,
required: false,
type: PARAMETER_TYPE.NUMBER,
range: [-100, 0]
},{
name: "lowLevel",
value: -80,
required: false,
type: PARAMETER_TYPE.NUMBER,
range: [-100, 0]
}],
[{
name: DATA_NAME.CLOSE,
index: 0
},{
name: DATA_NAME.HIGH,
index: 1
},{
name: DATA_NAME.LOW,
index: 2
}],
[{
name: "wpr",
visible: true,
renderType: RENDER_TYPE.LINE,
color: "steelblue"
},{
name: "wprHighLevel",
visible: true,
renderType: RENDER_TYPE.DASHARRAY,
color: "#AAAAAA"
},{
name: "wprLowLevel",
visible: true,
renderType: RENDER_TYPE.DASHARRAY,
color: "#AAAAAA"
}],
WHERE_TO_RENDER.SEPARATE_WINDOW)