Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将此tradingview脚本转换为C#?_C#_Pine Script - Fatal编程技术网

如何将此tradingview脚本转换为C#?

如何将此tradingview脚本转换为C#?,c#,pine-script,C#,Pine Script,我想将这个tradingview函数转换为C#,但我一直在使用逻辑和数据类型。这是一个机器学习算法。我不是一个数学或编码专业,所以请帮助我。我需要在代码末尾提供损失和预测数据。问题出现在for循环内部的损耗方程上 //user defined functions lookback = 2 nlbk = 2 lrate = 0.0009 iterations = 1000 dot(v, w, p) => sum(v * w, p) // dot product

我想将这个tradingview函数转换为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, w, 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), p), Math.Log(1.0 - 0.5), p);
                var gradient = 1.0 / p * dot(X, hypothesis - Y, p);
                w = w - lr * gradient;
            }
            new List<object> {
                loss,
                sigmoid(dot(X, w, 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));
        }





//用户定义函数
回望=2
nlbk=2
lrate=0.0009
迭代次数=1000
点(v,w,p)=>和(v*w,p)//点积
乙状结肠(z)=>1.0/(1.0+exp(-z))
逻辑回归(X,Y,p,lr,迭代)=>
w=0.0,损耗=0.0
对于i=1到1次迭代
假设=乙状结肠(点(X,0.0,p))/--预测
损失:=-1.0/p*(点(点(Y,对数(假设)+(1.0-Y),p),对数(1.0-假设),p))
梯度=1.0/p*(点(X,假设-Y,p))
w:=w-lr*梯度/——更新权重
[loss,sigmoid(点(X,w,p))]/--返回当前损耗和预测
//-------logistic回归函数在算法中的应用
base=关闭//关闭除最后一个(未关闭)条外的库存数据值
合成=对数(abs(pow(close,2)-1)+.5)
[损失,预测]=逻辑回归(基础,合成,回溯,lrate,迭代)
///--------CSHARP代码需要更正
公共静态对象逻辑回归(双[]X,双[]Y,int p,双lr,int迭代)
{
var w=0.0;
var损失=0.0;
//double[]dotw=新的双精度[X.长度];
对于(int i=0;i
请提供您在C中已有的代码#您好,我添加了csharp代码。我和我的朋友一起写的。实际上他试图编码,但我们在数据类型上遇到了问题。我认为点函数会出现问题。我们无法编码向量与标量的乘积。