Reputation: 1
I want to save multiple settings in one indicator. But I always get the following error messages: 09:21:13 Fehler in 108:25 Cannot call 'ta.ema' with argument 'length'='ema_len1'. An argument of 'series int' type was used but a 'simple int' is expected. 09:21:13 Fehler in 109:43 Cannot call 'request.security' with argument 'timeframe'='res'. An argument of 'series string' type was used but a 'simple string' is expected.
type Strategy_settings
string res = "60"
int ema_len1 = 0
float ema_mult_1 = 0
int ema_len2 = 0
int ema_len3 = 0
float ema_mult_3 = 0
// TYPES AND METHODS
// STRATS
selector(string strategy_name) =>
strategy_settings = Strategy_settings.new()
switch strategy_name
"EIGENE EINSTELLUNG" =>
strategy_settings.res := "60"
strategy_settings.ema_len1 := 50
strategy_settings.ema_mult_1 := 0.05
strategy_settings.ema_len2 := 75
strategy_settings.ema_len3 := 100
strategy_settings.ema_mult_3 := 0.3
"UNIVERSAL M15" =>
strategy_settings.res := "60"
strategy_settings.ema_len1 := 50
strategy_settings.ema_mult_1 := 0.05
strategy_settings.ema_len2 := 75
strategy_settings.ema_len3 := 100
strategy_settings.ema_mult_3 := 0.3
"LINK M60" =>
strategy_settings.res := "120"
strategy_settings.ema_len1 := 34
strategy_settings.ema_mult_1 := 0.1
strategy_settings.ema_len2 := 110
strategy_settings.ema_len3 := 195
strategy_settings.ema_mult_3 := 1.28
"DOT M30" =>
strategy_settings.res := "15"
strategy_settings.ema_len1 := 49
strategy_settings.ema_mult_1 := 0.11
strategy_settings.ema_len2 := 87
strategy_settings.ema_len3 := 106
strategy_settings.ema_mult_3 := 0.23
strategy_settings
// STRATS
//@version=5
indicator(title='EMAeinstellungen div Coins', shorttitle='EMAeinstellungen div Coins', overlay=true)
bool emaTrend_setzen = false
string res = "60"
int ema_len1 = 50
float ema_mult_1 = 0.00
int ema_len2 = 90
int ema_len3 = 150
float ema_mult_3 = 0.30
// INPUTS
// Strategieauswahl
strategy_input = input.string(title = "STRATEGY", options = [
"EIGENE EINSTELLUNG",
">>bisher nur manuell!!!<<",
"UNIVERSAL M15",
"LINK M60",
"DOT M30",
"===============",
"xxxxx1",
"xxxxx2",
"xxxxx3",
"xxxxx4"
], defval = "EIGENE EINSTELLUNG", tooltip = "EN:\nTo manually configure the strategy, select EIGENE EINSTELLUNG otherwise, changing the settings won't have any effect\n \nkeine fertigen strategien!!!!!!!!!")
// EMA-Cross anderer Timeframe
var emaTrend = "🐾 EMA Trend"
res_input = input.timeframe(title="/Timeframe", defval="60", group=emaTrend, inline = "htf ema 1")
// EMA1
ema_len1_input = input.int(title="EMA1 Kurzperiode", defval=53, group=emaTrend, tooltip='EMA-Cross gilt für EMA1 mit EMA3 / EMA-Folge gleich EMA1<>EMA2<>EMA3 / Close muss über EMA2 sein')
ema_mult_1_input = input.float(0.050, minval=0.000, step=0.001, title='EMA1 Standardabweichungen', group=emaTrend)
// EMA2
ema_len2_input = input.int(title="EMA2 Mittelperiode", defval=90, group=emaTrend)
// EMA3
ema_len3_input = input.int(title="EMA3 Langperiode", defval=175, group=emaTrend)
ema_mult_3_input = input.float(0.30, minval=0.000, step=0.001, title='EMA3 Standardabweichungen', group=emaTrend)
var Strategy_settings strategy_s = na
strategy_s := strategy_input == "EIGENE EINSTELLUNG" ? Strategy_settings.new(res_input, ema_len1_input, ema_mult_1_input, ema_len2_input, ema_len3_input, ema_mult_3_input) : selector(strategy_input)
res := strategy_s.res
ema_len1 := strategy_s.ema_len1
ema_mult_1 := strategy_s.ema_mult_1
ema_len2 := strategy_s.ema_len2
ema_len3 := strategy_s.ema_len3
ema_mult_3 := strategy_s.ema_mult_3
htf_ma1 = ta.ema(close, ema_len1)
out1 = request.security(syminfo.tickerid, res, htf_ma1)
ema_dev_1 = ta.stdev(close, ema_len1)
ema_upper_1 = out1 + ema_mult_1 * ema_dev_1
ema_lower_1 = out1 - ema_mult_1 * ema_dev_1
plot(out1, color=color.purple, title='EMA1', linewidth=1)
plot(ema_upper_1, color=color.rgb(155, 39, 176, 100), title='EMA1 Obere Standardabweichung')
plot(ema_lower_1, color=color.purple, title='EMA1 Untere Standardabweichung')
htf_ma2 = ta.ema(close, ema_len2)
out2 = request.security(syminfo.tickerid, res, htf_ma2)
ema_dev_2 = ta.stdev(close, ema_len2)
plot(out2, color=color.rgb(255, 153, 0, 50), title='EMA2', linewidth=1)
htf_ma3 = ta.ema(close, ema_len3)
out3 = request.security(syminfo.tickerid, res, htf_ma3)
ema_dev_3 = ta.stdev(close, ema_len2)
ema_upper_3 = out3 + ema_mult_3 * ema_dev_3
ema_lower_3 = out3 - ema_mult_3 * ema_dev_3
plot(out3, color=color.fuchsia, title='EMA2', linewidth=1)
plot(ema_upper_3, color=color.rgb(223, 64, 251, 100), title='EMA2 Obere Standardabweichung')
plot(ema_lower_3, color=color.fuchsia, title='EMA2 Untere Standardabweichung')
Upvotes: 0
Views: 102
Reputation: 21342
You cannot have a variable length in ema
. As the error message tells you, it expects a length of type simple
. That means, its value must remain the same during the execution of the script.
Values qualified as “simple” are available only once the script begins execution on the first chart bar of its history, and they remain consistent during the script’s execution.
Upvotes: 0