Как нарисовать линию тренда, которая соединяет самую высокую точку каждой свечи после первого часа дня - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу написать советника, который соединяет наивысшие точки каждой свечи, используя линию тренда (после первого часа дня).Я видел документацию для линии тренда .

Это то, что я сделал:

ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2)

ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
ObjectSetInteger(chart_ID,name,OBJPROP_RAY,false); 

Я знаю, что я должен пройти через самое высокое значение длякаждую свечу и получится пора, но я не уверен, как это сделать.Как это можно сделать?

Это изображение показывает, что я пытаюсь сделать

enter image description here

ОБНОВЛЕНИЕ

Я пробовал это, но это не отображает строку.Также, как я могу специально ограничить линию тренда, чтобы присоединиться к свечам, которые появляются после первого часа дня?

void CalculateTrendLine()  {
   for(int i=0;i<30;i++){

   if (iTime(_Symbol,60,i) > 1) {
   ObjectCreate(0,"TLine"+i,OBJ_TREND,0, iTime(_Symbol,0,i), iHigh(_Symbol,0,i), iTime(_Symbol,0,i+1), iHigh(_Symbol,0,i+1));


   printf("trend start", iHigh( _Symbol,0,i));
  printf("trend end", iHigh( _Symbol,0,i+1));

  ObjectSetInteger(0,"TLine"+i,OBJPROP_COLOR,clrMagenta);
  ObjectSetInteger(0,"TLine"+i,OBJPROP_STYLE,STYLE_SOLID);
  ObjectSetInteger(0,"TLine"+i,OBJPROP_RAY,false); 

   }

}}

1 Ответ

0 голосов
/ 23 ноября 2018

Это супер ленивый, и у меня нет времени, чтобы дать контекст, но вы можете установить точку останова и пройти этот пример в отладчике.

//+------------------------------------------------------------------+
//|                                                         Tops.mq4 |
//|                                                      nicholishen |
//|                         https://www.forexfactory.com/nicholishen |
//+------------------------------------------------------------------+
#property copyright "nicholishen"
#property link      "https://www.forexfactory.com/nicholishen"
#property version   "1.00"
#property strict
#property indicator_chart_window
#include <arrays/list.mqh>
#include <chartobjects/chartobjectslines.mqh>

class Line : public CChartObjectTrend
{
   static int  m_instances;
   int         m_instance;
 public:
   Line(datetime t1, double p1, datetime t2, double p2){ 
      m_instance = ++m_instances; 
      this.Create(0, "Line_"+string(m_instance), 0, t1, p1, t2, p2);
      this.Color(clrMagenta);
      this.RayRight(false);
   }
};
int Line::m_instances = 0;

CList list;
//+------------------------------------------------------------------+
int OnInit(){return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   if(list.Total() > 0)
      return(rates_total);
   for(int i=0; i<10; i++) {
      list.Add(new Line(time[i+1], high[i+1], time[i], high[i]));
   }
   return rates_total;
}
//+------------------------------------------------------------------+
...