Как на Go написать программу которая высчитывает RSI

Пользователь

от edison , в категории: Общие вопросы , 3 месяца назад

Как на Go написать программу которая высчитывает RSI

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

Пользователь

от aniyah , 3 месяца назад

@edison 

RSI (Relative Strength Index) - это технический индикатор, используемый для анализа финансовых рынков. Для его вычисления требуется выполнить несколько шагов:

  1. Вычислить изменение цены между текущим и предыдущим периодами.
  2. Разделить положительные изменения на среднее положительное изменение за определенный период.
  3. Разделить отрицательные изменения на среднее отрицательное изменение за определенный период.
  4. Вычислить отношение положительного относительного изменения к общему относительному изменению.
  5. Преобразовать результат в диапазон от 0 до 100.


Вот пример программы на языке Go, которая вычисляет RSI (Relative Strength Index):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main

import (
	"fmt"
)

func rsi(prices []float64, period int) float64 {
	var sumGain, sumLoss float64
	var prevPrice float64

	for i := 1; i < len(prices); i++ {
		priceDiff := prices[i] - prevPrice

		if priceDiff > 0 {
			sumGain += priceDiff
		} else {
			sumLoss += -priceDiff
		}

		prevPrice = prices[i]

		if i >= period {
			avgGain := sumGain / float64(period)
			avgLoss := sumLoss / float64(period)
			rs := avgGain / avgLoss
			rsi := 100 - (100 / (1 + rs))

			return rsi
		}
	}

	return 0
}

func main() {
	prices := []float64{10.0, 11.0, 12.0, 13.0, 14.0, 13.0, 12.0, 11.0, 12.0, 13.0}
	period := 5

	rsiValue := rsi(prices, period)
	fmt.Printf("RSI value: %f
", rsiValue)
}


Эта программа принимает массив цен prices и период period, затем вычисляет RSI для каждой цены с учетом периода и выводит полученное значение. Можно на сайте https://finquota.com/ проверить правильность расчета RSI для компаний