cyk
cyk

Reputation: 1

Simple int / simple string expectet

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

Answers (1)

vitruvius
vitruvius

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

Related Questions