新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 694

 
Maxim Kuznetsov:

不,不可能...

有趣的是,用户在 "颜色 "选项卡中选择的东西通常在指标中是不可用的。

谢谢你的答复。

我仍然有一个梦想,那就是MT4(Windows版)的开发者在我的平板电脑上适应了重定向....。

我写信给他们,他们回信说,他们所有的努力都集中在MT5上...

 
kopeyka2:

谢谢你的答复。

我仍然有一个梦想,就是MT4(Windows版)的开发者为平板电脑的重新设计做了调整....。

我写信给他们,他们回复说,他们所有的精力都集中在MT5上...

在mt4中,不太可能会有新的东西。

 
kopeyka2:

你好。

问题:在MT4中,是否可以将EZ缓冲区的颜色与图表相匹配,前提是图表上指标的颜色已经改变?

在代码中

#property indicators_color1 clrYellow

***

***

ObjectCreate(.......)。

ObjectSetInteger(... indicators_color1)。


问题;当你在指标中改变颜色时,缓冲线的颜色会改变,但在图表中却与# 属性中的颜色相同。需要匹配。

到目前为止,通过输入颜色解决了,但这是代码中的两个条目,设置中的两个变化,而我希望通过缓冲区进行一次设置。


感谢任何反馈。

从智能手机上绘制了图表。


我们把显示图表的指标 拿出来看看。

//+------------------------------------------------------------------+
//| Описание                                                         |
//+------------------------------------------------------------------+
void Descriptions(void)
  {
   int x=4;
   int y=1;
   int arr_colors[]={indicator_color1,indicator_color2,indicator_color3,indicator_color4,indicator_color5};
   string arr_texts[]={"Up direction","Down direction","Crossing to up","Crossing to down","Neutral"};
   string arr_names[COUNT];
   for(int i=0; i<COUNT; i++)
     {
      arr_names[i]=prefix+"label"+(string)i;
      arr_colors[i]=PlotIndexGetInteger(i,PLOT_LINE_COLOR);
      int shift=(i*(i<2 ? 90 : i<COUNT-1 ? 96 : 100)-(i>0 ? x : 0));
      x+=shift;
      Label(arr_names[i],x,y,CharToString(167),16,arr_colors[i],"Wingdings");
      Label(arr_names[i]+"_txt",x+10,y+5,arr_texts[i],10,clrGray,"Calibri");
     }
  }
//+------------------------------------------------------------------+

一个颜色数组 被声明,并以用户在指标设置中指定的颜色进行初始化。

然后,数组中的颜色值被传递 给文本标签输出函数。

一切都是文本标签输出功能的标准。

//+------------------------------------------------------------------+
//| Выводит текстовую метку                                          |
//+------------------------------------------------------------------+
void Label(const string name,const int x,const int y,const string text,const int size,const color clr,const string font)
  {
   if(ObjectFind(0,name)!=wnd)
      ObjectCreate(0,name,OBJ_LABEL,wnd,0,0,0,0);
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER);
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,size);
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//---
   ObjectSetString(0,name,OBJPROP_FONT,font);
   ObjectSetString(0,name,OBJPROP_TEXT,text);
   ObjectSetString(0,name,OBJPROP_TOOLTIP,"\n");
  }
//+------------------------------------------------------------------+

传递给该函数的颜色设置文本标记的颜色。而且一切都很顺利...

 
Artyom Trishkin:

我们把显示图表的指标 拿出来看一下。

一个颜色数组 被声明,并以用户在指标设置中指定的颜色进行初始化。

然后,数组中的颜色值被传递 给文本标签输出函数。

在文本标签输出的功能中,一切都很标准。

传递给该函数的颜色设置了文本标签的颜色。而且一切都很顺利...

我已经考虑过阵列选项...不清楚它是如何与缓冲器连接的......?问题是关于一个颜色变化的运动......对于缓冲区和标签(线)。

还是我不明白?)

谢谢你的例子)))


PS

我想,也许以某种方式从缓冲区拉出(比较)颜色......。我认为这是无稽之谈...

 

问候。你能告诉我如何写一个只对卖价起作用的指标吗?

RSI =NormalizeDouble((iRSI(NULL,0,14,0,0)),Digits()) 。

 
Anatolij Anufriev:

问候。你能告诉我如何写一个只对卖价起作用的指标吗?

RSI = NormalizeDouble((iRSI(NULL,0,14,0,0)),Digits()) 。

在MT4条形图中,OHLC是由Bid建立的,事实上,Ask价格在历史上是不可用的。

 

用MQL4/5使用数据库的最佳/舒适的解决方案是什么?

有很多文章,很难选择一个

 
Igor Makanu:

在MT4条形图中,OHLC是由Bid建立的,事实上Ask的价格在历史上是不可用的,或者收集Ask的ticks并使用iRSIOnArray()。

谢谢你

 
Sergey Likho:

用MQL4/5使用数据库的最佳/舒适的解决方案是什么?

有很多文章,很难选择一个。

如果你没有文章,可以在论坛上搜索 "文章",你可以在 "论坛 "部分找到所有信息。 有很多东西是与MT4、SQL和MathLab或R等应用程序相结合的......搜索你喜欢的东西,在这个论坛上搜索得很好

https://www.mql5.com/ru/search#!keyword=sql&module=mql5_module_articles

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

由于某些原因,我无法在15点钟方向开始的循环中抓到一个棒子。

如果我把if(i<24)写成一个条件,日志就会显示当天每个柱子的时间,但所需的条件却没有得到满足。


   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   while(i>=0)                      // Цикл по непосчитанным барам
     {
      
      if( TimeHour(iTime(NULL,PERIOD_H1,i)==15)  )
      //if(i<24)
      Print("TimeHour = ", TimeHour(iTime(NULL,PERIOD_H1,i)));
      
      CrossDown[i]=High[i]+250*Point;
   
      i--;                          // Расчёт индекса следующего бара
     }
原因: