如何将此tradingview脚本转换为C#?
我想将这个tradingview函数转换为C#,但我一直在使用逻辑和数据类型。这是一个机器学习算法。我不是一个数学或编码专业,所以请帮助我。我需要在代码末尾提供损失和预测数据。问题出现在for循环内部的损耗方程上如何将此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
//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代码。我和我的朋友一起写的。实际上他试图编码,但我们在数据类型上遇到了问题。我认为点函数会出现问题。我们无法编码向量与标量的乘积。