均线角度

 

下面是计算均线角度的代码,不知道问题出在了哪里,请高手指教。

int start()
  {
   int    counted_bars=IndicatorCounted();
//----

   int shift1 = 20;
   int shift2 = 31;

   double price1 = iMA(NULL,15,20,0,MODE_SMA,PRICE_CLOSE,shift1);
   double price2 = iMA(NULL,15,20,0,MODE_SMA,PRICE_CLOSE,shift2);
   
   double X = MathArctan(MathTan(((price1-price2)/(WindowPriceMax()- WindowPriceMin()))/((shift2-shift1)/WindowBarsPerChart())))*180/3.14;  //---- 第12行
   //double X = MathArctan(MathTan(((price1-price2)/(WindowPriceMax()- WindowPriceMin()))/((Time[shift2]-Time[shift1])/WindowBarsPerChart())))*180/3.14;  //---- 第13行
   
   ObjectDelete("tAngle");
   ObjectCreate("tAngle", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("tAngle","" + X + " A", 10, "Arial", White);
   ObjectSet("tAngle", OBJPROP_CORNER, 1);
   ObjectSet("tAngle", OBJPROP_XDISTANCE, 5);
   ObjectSet("tAngle", OBJPROP_YDISTANCE, 360);
        
   
//----
   return(0);
  }
上面的代码第12行是在网上找到的计算角度的,这段程序运行时得不到任何显示结果。如果把第12行换成注释掉的第13行内容(把shift2换成Time[shift2],shift1换成Time[shift1])则能得到显示结果。但显示的结果明显是错误的,并且得出的角度值会取随着图形的放大和缩小而改变。不知道第12行代码有什么问题,请各位高手指教。
 
秋风踏浪:

下面是计算均线角度的代码,不知道问题出在了哪里,请高手指教。

上面的代码第12行是在网上找到的计算角度的,这段程序运行时得不到任何显示结果。如果把第12行换成注释掉的第13行内容(把shift2换成Time[shift2],shift1换成Time[shift1])则能得到显示结果。但显示的结果明显是错误的,并且得出的角度值会取随着图形的放大和缩小而改变。不知道第12行代码有什么问题,请各位高手指教。 

搞定了么?

 
秋风踏浪:

下面是计算均线角度的代码,不知道问题出在了哪里,请高手指教。

上面的代码第12行是在网上找到的计算角度的,这段程序运行时得不到任何显示结果。如果把第12行换成注释掉的第13行内容(把shift2换成Time[shift2],shift1换成Time[shift1])则能得到显示结果。但显示的结果明显是错误的,并且得出的角度值会取随着图形的放大和缩小而改变。不知道第12行代码有什么问题,请各位高手指教。
我也遇到相同的问题,有朋友帮忙解释一下不?
 

角度值会取随着图形的放大和缩小而改变

这是因为价值坐标和时间轴没有建立对应关系。而每个货币这处对应比例又是不同,就算又是同一个图,随着价格变化,图表本身也会缩放。

所以这个均线角度个性化太强,建议弃坑。

原因: