Как я могу превратить этот ввод PineScript в полезную функцию? - PullRequest
0 голосов
/ 28 мая 2020

Я написал входную переменную, чтобы определить, какой тип скользящей средней я хотел бы использовать в своей стратегии. У меня в скрипте много другого кода, поэтому я попытался выбрать только то, что имеет отношение к делу. Входная переменная:

MA1Type = input(title="MA1 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA", "VWMA"])

И функция, для которой я пытаюсь использовать вход, это функция "sma" здесь:

MovAv1 = sma(close, MA1Period)

Это моя рабочая функция MA ниже

ma(MAType, MASource, MAPeriod) =>
if MAType == "SMA"
    sma(MASource, MAPeriod)
else
    if MAType == "EMA"
        ema(MASource, MAPeriod)
    else
        if MAType == "WMA"
            wma(MASource, MAPeriod)
        else
            if MAType == "RMA"
                rma(MASource, MAPeriod)
            else
                if MAType == "HMA"
                    wma(2*wma(MASource, MAPeriod/2)-wma(MASource, MAPeriod), round(sqrt(MAPeriod)))
                else
                    if MAType == "DEMA"
                        e = ema(MASource, MAPeriod)
                        2 * e - ema(e, MAPeriod)
                    else
                        if MAType == "TEMA"
                            e = ema(MASource, MAPeriod)
                            3 * (e - ema(e, MAPeriod)) + ema(ema(e, MAPeriod), MAPeriod)
                        else
                            if MAType == "VWMA"
                                vwma(MASource, MAPeriod)

Сообщение об ошибке, которое я получаю, когда пытаюсь использовать свою функцию ma вместо одной из встроенных функций; здесь:

невозможно вызвать 'anonym_function_0' с аргументами (серия [float], входное целое число);

Ответы [ 2 ]

1 голос
/ 28 мая 2020

См. скользящие средние, пример ввода с параметрами скрипт.
Он содержит пример того, что вы ищете.

0 голосов
/ 04 июня 2020

Soooooo ..... Я вызывал дополнительные аргументы, которые противодействовали параметрам, которые я назначил функции. Я должен был написать аргументы функции; что я указал в объявлении функции. Например:

MovAv1 = sma(close, MA1Period)

Должно быть записано как:

MovAv1 = (ma(MA1Type, MA1Source, MA1Period))

MA1Source, а MA1Period - это входные переменные, которые я сделал ранее в моем скрипте и впоследствии забыл о последствиях .

Невероятно простой ответ, который буквально был прямо передо мной, но я новичок в PineScript, поэтому меня легко запутать.

...