如何将此交易视图 pinescript 转换为 C#?

问题描述

我想将此交易视图函数转换为 C#,但我对逻辑和数据类型感到困惑。这是一种机器学习算法。我不是数学或编码专业,所以请帮助我。我需要代码末尾的损失和预测数据。 for循环内部的损失方程出现问题。

//user defined functions
lookback   = 2
nlbk       = 2
lrate      = 0.0009
iterations = 1000

dot(v,w,p) => sum(v * w,p)  // dot product

sigmoid(z) => 1.0 / (1.0 + exp(-z))

logistic_regression(X,Y,p,lr,iterations) => 
    w = 0.0,loss = 0.0
    for i=1 to iterations
        hypothesis = sigmoid(dot(X,0.0,p))  //-- prediction
        loss := -1.0 / p * (dot(dot(Y,log(hypothesis) + (1.0 - Y),p),log(1.0 - hypothesis),p)) 
        gradient = 1.0 / p * (dot(X,hypothesis - Y,p))
        w := w - lr * gradient               //-- update weights
    
    [loss,sigmoid(dot(X,p))]            //-- returns current loss & prediction

//-------Using logistic regression function in algorithm

base= close     //close values of stock data except last (unclosed) bar
synth= log(abs(pow(close,2) - 1) + .5)

[loss,prediction] = logistic_regression(base,synth,lookback,lrate,iterations)


///--------CSHARP CODE needs to be corrected

        public static object logistic_regression(double[] X,double[]  Y,int p,double lr,int  iterations)
        {
            var w = 0.0;
            var loss = 0.0;
            //double[] dotw = new double[X.Length];
            for (int i = 0; i < Enumerable.Range(0,iterations).ToList().Count(); i++)
            {
            //foreach (var i in Enumerable.Range(0,iterations))
            {
                //var hypothesis = sigmoid(dot(X,dotw,p));
                double hypothesis = sigmoid(0);
                loss = -1.0 / p * dot(dot(Y,Math.Log(0.5) + (1.0 - Y),Math.Log(1.0 - 0.5),p);
                var gradient = 1.0 / p * dot(X,p);
                w = w - lr * gradient;
            }
            new List<object> {
                loss,p))
            };
        }

        public static double summ(double[] X,int Y)
        {
            double total = 0;
            foreach (var i in Enumerable.Range(0,Y))
            {
                total = total + X[i];
            }
            return total;
        }

        public static double dot(double[] v,double [] w,int p)
        {
            double total = 0;
            List<double> sayilar = new List<double>();

            for (int i = 0; i < v.Length; i++)
            {
                sayilar.Add(v[i] * w[i]);
            }

            total = summ(sayilar.ToArray(),p);

            return total;
        }
        public static double sigmoid(double z)
        {
           return 1.0 / (1.0 + Math.Exp(-z));
        }





解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...