C# 当图表y值超过第'行时调用函数;s y值

C# 当图表y值超过第'行时调用函数;s y值,c#,.net,charts,C#,.net,Charts,我有一个烛台图表,它可以自动更新.NET表单中加密货币交易所的实时价格。目标是当图表上的价格超过用户绘制的一条线时,使bot执行操作。到目前为止,我已经到了为用户启用线条绘制的地步,这多亏了 有人能告诉我一种检测图表蜡烛和画线之间碰撞的方法吗?我觉得一定有一个比我现在想的更简单的方法,只是似乎找不到实现它的方法 使用本文中线条图的精确解决方案,还发布了以下线条图代码: int index1 = 1; int index2 = 4; DataPoint left = chart.Series[0

我有一个烛台图表,它可以自动更新.NET表单中加密货币交易所的实时价格。目标是当图表上的价格超过用户绘制的一条线时,使bot执行操作。到目前为止,我已经到了为用户启用线条绘制的地步,这多亏了

有人能告诉我一种检测图表蜡烛和画线之间碰撞的方法吗?我觉得一定有一个比我现在想的更简单的方法,只是似乎找不到实现它的方法

使用本文中线条图的精确解决方案,还发布了以下线条图代码:

int index1 = 1;
int index2 = 4;

DataPoint left = chart.Series[0].Points[index1];
DataPoint right = chart.Series[0].Points[index2];

    //Init the annotation
    LineAnnotation line = new LineAnnotation();
    line.AxisX = chart.ChartAreas[0].AxisX;
    line.AxisY = chart.ChartAreas[0].AxisY;
    line.IsSizeAlwaysRelative = false;

    //Each point in a candlestick series has several y values, 0=high, 1=low, 2=open, 3=close
    line.Y = left.YValues[1]; //low
    line.X = left.XValue;
    //If your data is indexed (your x values are Strings or you've set Series.IsXValueIndexed to true), use the data point index(+1) as the line X coordinate.
    //line.X = index1 + 1;

    //Use the width and height properties to determine the end position of the annotation.
    line.Height = right.YValues[1] - left.YValues[1];
    line.Width = right.XValue - left.XValue;
    //Again, use the index if necessary
    //line.Width = index2 - index1;

    chart.Annotations.Add(line);

只是寻找一个更简单解决方案的方向,而不是解决方案本身:)提前感谢

所以听起来像是在问a是在直线上方还是下方

以下是假设(您可以稍后更改以满足您的需要):

  • 外部资源在特定时间点(X)为您提供特定值(Y),该值将称为整点XY
  • 用户已绘制了一条线,该线为起点(x1,y1)和终点(x2,y2)
  • 图形X分量以分钟为单位,水平方向上的每个刻度为1分钟
  • 图表Y部分以美元为单位,每个刻度为25美元
  • 用户已经画了一条从(下午1:00,$50)到(下午1:05,$75)的线
  • 我们在下午1:10得到一个积分点XY,即125美元
  • 下午1:10pm的线的值是多少,以便您可以将其与积分点XY进行比较

    根据我对……的评论

    • 我们知道相邻长度为:1:05-1:00=5
    • 我们知道相反的长度是:75-25=50
    • 使用以下公式:atan(相对/相邻)=角度
      • 我们计算出角度为:atan(50/5)=1.47112767rad(弧度)
    现在,我们只需颠倒我们的数学:

    • 我们知道相邻长度为:1:10-1:00=10
    • 我们知道角度的弧度:1.47112767
    • 使用以下公式:相邻*tan(角度)=相反
      • 我们的计算结果正好相反:10*tan(1.47112767)=~$99.999999或$100

    125美元高于100美元,你想怎么做就怎么做。

    检测图表蜡烛和绘制线之间的碰撞似乎是一个非常困难的方法。我假设当他们画线时,你可以估计线的价值(比如5000美元)。当图形更新时,如果有任何值超过了线的值,则不难检查。@ErikPhilips如果线是水平的,则根本不是问题:)如果有多条线,并且其中一些线上有角度,则会出现问题,让我们假设逆时针方向20度:)这也很简单。你想知道它通过了什么地方,通过了什么,或者在任何给定点通过了多少?想象一个营销图表。如果价格超过一定数额,或低于一定数额,你就买入或卖出一定数额的货币。用户应该能够在图表上画线,当图表(价格)越过这些线时,程序应该买入或卖出。