4th_Dimension_Currency_Strength.pine
Copy
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=4
study(title='|AG| 4th Dimension Currency Strength')
f_grad(_value)=>
_value >= 11 ? #0002A2 :
_value == 10 ? #0045A9 :
_value == 09 ? #008EB0 :
_value == 08 ? #00B690 :
_value == 07 ? #00BD4A :
_value == 06 ? #01C400 :
_value == 05 ? #52CA00 :
_value == 04 ? #A8D100 :
_value == 03 ? #D7AC00 :
_value == 02 ? #DE5800 :
_value == 01 ? #FF0000 : color.white
// Switches
bool show_EUR = input(true, "Show EUR?")
bool show_USD = input(true, "Show USD?")
bool show_JPY = input(true, "Show JPY?")
bool show_GBP = input(true, "Show GBP?")
bool show_CHF = input(true, "Show CHF?")
bool show_AUD = input(true, "Show AUD?")
bool show_CAD = input(true, "Show CAD?")
bool show_NZD = input(true, "Show NZD?")
bool show_XX1 = input(true, "Show XAU/XAG?")
string show_XXX = input(defval="XAU", title = " ↳ XAU/XAG ?", options= ["XAU", "XAG"])
bool theme = input(true, "Theme Day?")
string XXX = iff(show_XXX == "XAU", "XAU", "XAG")
//THEME
color_theme = iff(theme == true, color.black, color.aqua)
float src = input(close, "Source", type=input.source)
string BROKER = input("OANDA", "Brokers", options=["OANDA", "FX", "FOREXCOM"])
float EURUSD_CUR = security(BROKER + ":EURUSD", timeframe.period, close)
float USDJPY_CUR = security(BROKER + ":USDJPY", timeframe.period, close)
float USDCHF_CUR = security(BROKER + ":USDCHF", timeframe.period, close)
float GBPUSD_CUR = security(BROKER + ":GBPUSD", timeframe.period, close)
float AUDUSD_CUR = security(BROKER + ":AUDUSD", timeframe.period, close)
float USDCAD_CUR = security(BROKER + ":USDCAD", timeframe.period, close)
float NZDUSD_CUR = security(BROKER + ":NZDUSD", timeframe.period, close)
//For GOLD I Suggest Only OANDA
float XXXUSD_CUR = security(BROKER + ":" + XXX + "USD", timeframe.period, close)
float XXXEUR_CUR = security(BROKER + ":" + XXX + "EUR", timeframe.period, close)
float XXXJPY_CUR = security(BROKER + ":" + XXX + "JPY", timeframe.period, close)
float XXXCHF_CUR = security(BROKER + ":" + XXX + "CHF", timeframe.period, close)
float XXXGBP_CUR = security(BROKER + ":" + XXX + "GBP", timeframe.period, close)
float XXXAUD_CUR = security(BROKER + ":" + XXX + "AUD", timeframe.period, close)
float XXXCAD_CUR = security(BROKER + ":" + XXX + "CAD", timeframe.period, close)
float XXXNZD_CUR = security(BROKER + ":" + XXX + "NZD", timeframe.period, close)
float EURUSD_D = security(BROKER + ":EURUSD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float USDJPY_D = security(BROKER + ":USDJPY", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float USDCHF_D = security(BROKER + ":USDCHF", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float GBPUSD_D = security(BROKER + ":GBPUSD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float AUDUSD_D = security(BROKER + ":AUDUSD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float USDCAD_D = security(BROKER + ":USDCAD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float NZDUSD_D = security(BROKER + ":NZDUSD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXUSD_D = security(BROKER + ":" + XXX + "USD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXEUR_D = security(BROKER + ":" + XXX + "EUR", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXJPY_D = security(BROKER + ":" + XXX + "JPY", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXCHF_D = security(BROKER + ":" + XXX + "CHF", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXGBP_D = security(BROKER + ":" + XXX + "GBP", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXAUD_D = security(BROKER + ":" + XXX + "AUD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXCAD_D = security(BROKER + ":" + XXX + "CAD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
float XXXNZD_D = security(BROKER + ":" + XXX + "NZD", "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
// Functions
get_val (v1_, v2_) =>
float res = 0
if (v2_ == 0)
res := 0
else
res := log(v1_ / v2_) * 10000
res
get_val_m (v1_, v2_, v3_, v4_) =>
float res = 0
v1 = v1_ * v3_
v2 = v2_ * v4_
if (v2 == 0)
res := 0
else
res := log(v1 / v2) * 10000
res
get_val_d (v1_, v2_, v3_, v4_) =>
float res = 0
if (v3_ == 0 or v4_ == 0)
res := 0
else
v1 = v1_ / v3_
v2 = v2_ / v4_
res := log(v1 / v2) * 10000
res
// Calculating
float EURUSD = get_val(EURUSD_D, EURUSD_CUR)
float USDJPY = get_val(USDJPY_D, USDJPY_CUR)
float USDCHF = get_val(USDCHF_D, USDCHF_CUR)
float GBPUSD = get_val(GBPUSD_D, GBPUSD_CUR)
float AUDUSD = get_val(AUDUSD_D, AUDUSD_CUR)
float USDCAD = get_val(USDCAD_D, USDCAD_CUR)
float NZDUSD = get_val(NZDUSD_D, NZDUSD_CUR)
float XXXUSD = get_val(XXXUSD_D, XXXUSD_CUR)
float XXXEUR = get_val(XXXEUR_D, XXXEUR_CUR)
float XXXJPY = get_val(XXXJPY_D, XXXJPY_CUR)
float XXXCHF = get_val(XXXCHF_D, XXXCHF_CUR)
float XXXGBP = get_val(XXXGBP_D, XXXGBP_CUR)
float XXXAUD = get_val(XXXAUD_D, XXXAUD_CUR)
float XXXCAD = get_val(XXXCAD_D, XXXCAD_CUR)
float XXXNZD = get_val(XXXNZD_D, XXXNZD_CUR)
float EURJPY = get_val_m(EURUSD_D, EURUSD_CUR, USDJPY_D, USDJPY_CUR)
float EURCHF = get_val_m(EURUSD_D, EURUSD_CUR, USDCHF_D, USDCHF_CUR)
float EURGBP = get_val_d(EURUSD_D, EURUSD_CUR, GBPUSD_D, GBPUSD_CUR)
float CHFJPY = get_val_d(USDJPY_D, USDJPY_CUR, USDCHF_D, USDCHF_CUR)
float GBPCHF = get_val_m(GBPUSD_D, GBPUSD_CUR, USDCHF_D, USDCHF_CUR)
float GBPJPY = get_val_m(GBPUSD_D, GBPUSD_CUR, USDJPY_D, USDJPY_CUR)
float AUDCHF = get_val_m(AUDUSD_D, AUDUSD_CUR, USDCHF_D, USDCHF_CUR)
float AUDJPY = get_val_m(AUDUSD_D, AUDUSD_CUR, USDJPY_D, USDJPY_CUR)
float AUDCAD = get_val_m(AUDUSD_D, AUDUSD_CUR, USDCAD_D, USDCAD_CUR)
float EURCAD = get_val_m(EURUSD_D, EURUSD_CUR, USDCAD_D, USDCAD_CUR)
float GBPCAD = get_val_m(GBPUSD_D, GBPUSD_CUR, USDCAD_D, USDCAD_CUR)
float GBPAUD = get_val_d(GBPUSD_D, GBPUSD_CUR, AUDUSD_D, AUDUSD_CUR)
float EURAUD = get_val_d(EURUSD_D, EURUSD_CUR, AUDUSD_D, AUDUSD_CUR)
float CADCHF = get_val_d(USDCHF_D, USDCHF_CUR, USDCAD_D, USDCAD_CUR)
float CADJPY = get_val_d(USDJPY_D, USDJPY_CUR, USDCAD_D, USDCAD_CUR)
float AUDNZD = get_val_d(AUDUSD_D, AUDUSD_CUR, NZDUSD_D, NZDUSD_CUR)
float EURNZD = get_val_d(EURUSD_D, EURUSD_CUR, NZDUSD_D, NZDUSD_CUR)
float GBPNZD = get_val_d(GBPUSD_D, GBPUSD_CUR, NZDUSD_D, NZDUSD_CUR)
float NZDCAD = get_val_m(NZDUSD_D, NZDUSD_CUR, USDCAD_D, USDCAD_CUR)
float NZDCHF = get_val_m(NZDUSD_D, NZDUSD_CUR, USDCHF_D, USDCHF_CUR)
float NZDJPY = get_val_m(NZDUSD_D, NZDUSD_CUR, USDJPY_D, USDJPY_CUR)
int PAIRS = 7
float EUR = (( EURUSD + EURJPY + EURCHF + EURGBP + EURAUD + EURCAD + EURNZD) / PAIRS) * -1
float USD = ((-EURUSD + USDJPY + USDCHF - GBPUSD - AUDUSD + USDCAD - NZDUSD) / PAIRS) * -1
float JPY = ((-EURJPY - USDJPY - CHFJPY - GBPJPY - AUDJPY - CADJPY - NZDJPY) / PAIRS) * -1
float CHF = ((-EURCHF - USDCHF + CHFJPY - GBPCHF - AUDCHF - CADCHF - NZDCHF) / PAIRS) * -1
float GBP = ((-EURGBP + GBPUSD + GBPCHF + GBPJPY + GBPAUD + GBPCAD + GBPNZD) / PAIRS) * -1
float AUD = ((-EURAUD + AUDUSD + AUDJPY + AUDCHF - GBPAUD + AUDCAD + AUDNZD) / PAIRS) * -1
float CAD = ((-EURCAD - USDCAD + CADJPY + CADCHF - GBPCAD - AUDCAD - NZDCAD) / PAIRS) * -1
float NZD = ((-EURNZD + NZDUSD + NZDJPY + NZDCHF - GBPNZD + NZDCAD - AUDNZD) / PAIRS) * -1
float XX1 = (( XXXUSD + XXXEUR + XXXJPY + XXXCHF + XXXGBP + XXXAUD + XXXCAD + XXXNZD) / 8) * -1
EUR := show_EUR ? EUR : na
USD := show_USD ? USD : na
JPY := show_JPY ? JPY : na
CHF := show_CHF ? CHF : na
GBP := show_GBP ? GBP : na
AUD := show_AUD ? AUD : na
CAD := show_CAD ? CAD : na
NZD := show_NZD ? NZD : na
XX1 := show_XX1 ? XX1 : na
float feature01 = EUR-EUR[1]
float feature02 = round(rsi(EUR,14)[1]*10)
float feature03 = JPY-JPY[1]
float feature04 = round(rsi(JPY,14)[1]*10)
float feature05 = GBP-GBP[1]
float feature06 = round(rsi(GBP,14)[1]*10)
float feature07 = USD-USD[1]
float feature08 = round(rsi(USD,14)[1]*10)
float feature09 = CHF-CHF[1]
float feature10 = round(rsi(CHF,14)[1]*10)
float feature11 = AUD-AUD[1]
float feature12 = round(rsi(AUD,14)[1]*10)
float feature13 = CAD-CAD[1]
float feature14 = round(rsi(CAD,14)[1]*10)
float feature15 = NZD-NZD[1]
float feature16 = round(rsi(NZD,14)[1]*10)
float feature17 = XX1-XX1[1]
float feature18 = round(rsi(XX1,14)[1]*10)
int data_range = 10
float[] X = array.new_float(data_range, feature01)
float[] Y = array.new_float(data_range, feature02)
float[] X_1 = array.new_float(data_range, feature03)
float[] Y_1 = array.new_float(data_range, feature04)
float[] X_2 = array.new_float(data_range, feature05)
float[] Y_2 = array.new_float(data_range, feature06)
float[] X_3 = array.new_float(data_range, feature07)
float[] Y_3 = array.new_float(data_range, feature08)
float[] X_4 = array.new_float(data_range, feature09)
float[] Y_4 = array.new_float(data_range, feature10)
float[] X_5 = array.new_float(data_range, feature11)
float[] Y_5 = array.new_float(data_range, feature12)
float[] X_6 = array.new_float(data_range, feature13)
float[] Y_6 = array.new_float(data_range, feature14)
float[] X_7 = array.new_float(data_range, feature15)
float[] Y_7 = array.new_float(data_range, feature16)
float[] X_8 = array.new_float(data_range, feature17)
float[] Y_8 = array.new_float(data_range, feature18)
for _i = 0 to data_range -1
array.set(id=X, index=_i, value=feature01[_i])
array.set(id=Y, index=_i, value=feature02[_i])
array.set(id=X_1, index=_i, value=feature03[_i])
array.set(id=Y_1, index=_i, value=feature04[_i])
array.set(id=X_2, index=_i, value=feature05[_i])
array.set(id=Y_2, index=_i, value=feature06[_i])
array.set(id=X_3, index=_i, value=feature07[_i])
array.set(id=Y_3, index=_i, value=feature08[_i])
array.set(id=X_4, index=_i, value=feature09[_i])
array.set(id=Y_4, index=_i, value=feature10[_i])
array.set(id=X_5, index=_i, value=feature11[_i])
array.set(id=Y_5, index=_i, value=feature12[_i])
array.set(id=X_6, index=_i, value=feature13[_i])
array.set(id=Y_6, index=_i, value=feature14[_i])
array.set(id=X_7, index=_i, value=feature15[_i])
array.set(id=Y_7, index=_i, value=feature16[_i])
array.set(id=X_8, index=_i, value=feature17[_i])
array.set(id=Y_8, index=_i, value=feature18[_i])
plotshape(series = array.get(X, 0) ,
title = '',
style = shape.circle,
location = location.absolute,
color = f_grad(3),
textcolor = f_grad(3),
transp = 0,
offset = int(-1000+array.get(Y, 0)),
size = size.normal,
show_last = 1,
text = "EUR")
plotshape(series = array.get(X_1, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = f_grad(2),
textcolor = f_grad(2),
transp = 0,
offset = int(-1000+array.get(Y_1, 0)),
size = size.normal,
show_last = 1,
text = "JPY")
plotshape(series = array.get(X_2, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = f_grad(1),
textcolor = f_grad(1),
transp = 0,
offset = int(-1000+array.get(Y_2, 0)),
size = size.normal,
show_last = 1,
text = "GBP")
plotshape(series = array.get(X_3, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = color.purple,
textcolor = color.purple,
transp = 0 ,
offset = int(-1000+array.get(Y_3, 0)),
size = size.normal,
show_last = 1,
text = "USD")
plotshape(series=array.get(X_4, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = f_grad(7),
textcolor = f_grad(7),
transp = 0,
offset = int(-1000+array.get(Y_4, 0)),
size = size.normal,
show_last = 1,
text = "CHF")
plotshape(series=array.get(X_5, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = color.blue,
textcolor = color.blue,
transp = 0,
offset = int(-1000+array.get(Y_5, 0)),
size = size.normal,
show_last = 1,
text = "AUD")
plotshape(series = array.get(X_6, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = color.green,
textcolor = color.green,
transp = 0,
offset = int(-1000+array.get(Y_6, 0)),
size = size.normal,
show_last = 1,
text = "CAD")
plotshape(series=array.get(X_7, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = color.yellow,
textcolor = color.yellow,
transp = 0,
offset = int(-1000+array.get(Y_7, 0)),
size = size.normal,
show_last = 1,
text = "NZD")
plotshape(series=array.get(X_8, 0),
title = '',
style = shape.circle,
location = location.absolute,
color = f_grad(11),
textcolor = f_grad(11),
transp = 0,
offset = int(-1000+array.get(Y_8, 0)),
size = size.normal,
show_last = 1,
text = "XAU")
plot(wma(array.get(X_3, 0), 14), offset=int(-1000+array.get(Y_3, 0)), color=color.purple)
var line box_top = line.new(x1=bar_index, y1=0.0,x2=bar_index, y2=0.0, xloc=xloc.bar_index, extend=extend.none, color=color_theme, style=line.style_solid, width=3)
var line box_bot = line.new(x1=bar_index, y1=0., x2=bar_index, y2=0., xloc=xloc.bar_index, extend=extend.none, color=color_theme, style=line.style_solid, width=3)
var line box_left = line.new(x1=bar_index, y1=0., x2=bar_index, y2=0., xloc=xloc.bar_index, extend=extend.none, color=color_theme, style=line.style_solid, width=3)
var line box_right = line.new(x1=bar_index, y1=0., x2=bar_index, y2=0., xloc=xloc.bar_index, extend=extend.none, color=color_theme, style=line.style_solid, width=3)
var line box_ob = line.new(x1=bar_index, y1=0., x2=bar_index, y2=0., xloc=xloc.bar_index, extend=extend.none, color=color_theme, style=line.style_dashed, width=2)
var line box_os = line.new(x1=bar_index, y1=0., x2=bar_index, y2=0., xloc=xloc.bar_index, extend=extend.none, color=color_theme, style=line.style_dashed, width=2)
var float top = 0.0
var float bot = 0.0
int left = bar_index-1000
int right = bar_index
int ob = bar_index-250
int os = bar_index-750
top := cum(array.max(id=X)) / (bar_index + 1)//max(nz(top), array.max(id=X))
bot := cum(array.min(id=X)) / (bar_index + 1)//min(nz(bot), array.min(id=X))
// plot(series=top)
// plot(series=bot)
hline(0)
line.set_xy1(id=box_top, x=left, y=top)
line.set_xy2(id=box_top, x=right, y=top)
line.set_xy1(id=box_bot, x=left, y=bot)
line.set_xy2(id=box_bot, x=right, y=bot)
line.set_xy1(id=box_left, x=left, y=top)
line.set_xy2(id=box_left, x=left, y=bot)
line.set_xy1(id=box_right, x=right, y=top)
line.set_xy2(id=box_right, x=right, y=bot)
line.set_xy1(id=box_ob, x=ob, y=top)
line.set_xy2(id=box_ob, x=ob, y=bot)
line.set_xy1(id=box_os, x=os, y=top)
line.set_xy2(id=box_os, x=os, y=bot)
var label _latop = label.new(bar_index, 0.0,
'WEAK 0% <-- Strength Percentage --> 100% STRONG',
style = label.style_label_up,
color = #00000000,
textcolor = color_theme)
var label _larig = label.new(bar_index, 0.0,
'Huge Movement\n\n\n\n\n\n\n+\nCurrency Volatility\n-\n\n\n\n\n\n\nTiny Movement',
style=label.style_label_left , color= #00000000, textcolor= color_theme)
label.set_xy(id=_latop, x=bar_index-500, y=bot)
label.set_xy(id=_larig, x=bar_index, y=avg(top, bot))
Show all 387 lines