任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 637

 
RostZ:

大家好!

帮我解决这个错误。"没有足够的权利 "或 "没有足够的权利 "代码#7

发生了什么事:专家顾问在EURCHFX M1货币对上不能开仓,出现这个错误(在日志中发现),但同时在其他货币对和EURCHF M5上开仓没有问题。它用手打开没有任何问题。在另一个经纪人那里,它是有效的。问题可能是什么呢?

我预先感谢你的帮助。

如果不知道你的EA里面写的是什么,就不可能说问题是什么。EA在EURCHFX M5和EURCHF M1上的表现如何?
 
Top2n:


该函数返回截止日期的位置号,而不是数字本身。

比方说,我得到了职位号码,那么我如何删除这个职位?

我给了你一个帮助链接,下面6行是StringSubstr 的帮助,它只是从一个文本字符串的指定位置开始 提取一个子串
 
AlexeyVik:
我给了你一个帮助链接,下面6行是StringSubstr 的帮助,它只是从一个文本字符串的指定位置开始 提取一个子串


sc=ObjectsTotal(OBJ_LABEL);
for(int i=0;i<sc;i++) 
 {
 Neme=ObjectName(i);
 
 if(Neme="lTrend_Power") //Если имя объекта OBJ_LABEL то самое,
{
  NemeText="Trend Power: "; // часть описания из строки текст
  for(int il=0;il<=99;il++) // перебираем 1-99
  {
NemeTextPol = StringFind(NemeText+il+"%",il,0); //Полное имя строки текст "Trend Power: 99%". (99% меняется от 1 до 99)

Kon = StringSubstr(NemeText+il+"%",13,3);
  }
}
我做错了什么?任务是从字符串中提取99(数字)。
 
Top2n:

我做错了什么?任务是从一个字符串中提取99(数字)。

sc=ObjectsTotal(OBJ_LABEL);

这是标签对象的数量,但如果有其他对象存在,在对象循环中会出现错误。

接下来,如果你没有任何其他同名的标签,你就不需要翻阅所有的对象。只要拉出OBJPROP_TEXT,就可以用它来工作


string NameText = ObjectGetString(0, "lTrend_Power",OBJPROP_TEXT);

string Kon = StringSubstr(NameText, 13, 2);

然后将包含数字的字符串以字符串格式转换为所需类型。

那么,从这个例子来看,你离理解整个编程过程还太远。

NemeText="Trend Power: "; // часть описания из строки текст

这不是对象描述 的一部分,这个变量NemeText被分配了一个值 "趋势力量:"。

阅读整个帮助,然后你就会记得,你已经看到了解决方案...而且你会发现在文档中更容易找到你需要的一切。

 
paladin80:
如果不知道你的EA里面写的是什么,就不可能说问题是什么。EA在EURCHFX M5和EURCHF M1上的表现如何?

它在任何地方都有效,除了EURCHFX M1。我不清楚什么是 "权利不足",我在任何地方都找不到更详细的解释,在哪些情况下会出现这种信息;作为对什么的反应。Methaquotes应该知道它是什么意思。
 
AlexeyVik:

这是标签对象的数量,但如果有其他对象存在,在对象循环中会出现错误。

接下来,如果你没有任何其他同名的标签,你就不需要翻阅所有的对象。你只需拉出OBJPROP_TEXT,然后用它工作


string NameText = ObjectGetString(0, "lTrend_Power",OBJPROP_TEXT);

string Kon = StringSubstr(NameText, 13, 2);

然后将包含数字的字符串以字符串格式转换为所需类型。

实际上,从这个例子来看,你还远远没有理解整个编程过程。

这不是对象描述的一部分,这个变量NemeText被分配了一个值 "趋势力量:"。

阅读整个帮助,然后你就会记得,你已经看到了解决方案...而且你会发现在文档中更容易找到你需要的东西。


谢谢你,是的,你是对的,这个周末我将做一些阅读,我将去阿尔卡伊姆)))。
 

你能告诉我,有没有人试过用INDICATOR_COLOR_INDEX 给一个指标缓冲区染上不同颜色?还是说它还不能在MT4上运行?

例子 >>>

在MT5中,这段代码是这样工作的。

//+------------------------------------------------------------------+
//|                                                        #Test.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_color1  clrRoyalBlue,clrRed
//--- Индикаторные буферы
double indicator_buffer[];
double color_indicator_buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Установка буферов
   SetIndexBuffer(0,indicator_buffer,INDICATOR_DATA);
   SetIndexBuffer(1,color_indicator_buffer,INDICATOR_COLOR_INDEX);
//--- Свойства
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,5);
   PlotIndexSetInteger(0,PLOT_ARROW,159);
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_ARROW);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- Инициализация буфера
   ArrayInitialize(indicator_buffer,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   int limit=0;
//--- Если первый вызов
   if(prev_calculated==0)
     {
      limit=0;
      ArrayInitialize(indicator_buffer,0);
     }
   else
      limit=prev_calculated-1;
//--- Основной цикл
   for(int i=limit; i<rates_total && !IsStopped(); i++)
     {
      indicator_buffer[i]=rand()%3;
      color_indicator_buffer[i]=(indicator_buffer[i]==1) ? 0 : 1;
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+

//---

在MT4中,类似的代码,但为MQL4做了一些修正,显示了这个结果。

//+------------------------------------------------------------------+
//|                                                        #Test.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  clrRoyalBlue,clrRed
//--- Индикаторные буферы
double indicator_buffer[];
double color_indicator_buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Установка буферов
   SetIndexBuffer(0,indicator_buffer,INDICATOR_DATA);
   SetIndexBuffer(1,color_indicator_buffer,INDICATOR_COLOR_INDEX);
//--- Свойства
   SetIndexStyle(0,DRAW_ARROW,EMPTY,5);
   SetIndexArrow(0,159);
   SetIndexEmptyValue(0,0);
//--- Инициализация буфера
   ArrayInitialize(indicator_buffer,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   int limit=0;
//--- Если первый вызов
   if(prev_calculated==0)
     {
      limit=0;
      ArrayInitialize(indicator_buffer,0);
     }
   else
      limit=prev_calculated-1;
//--- Основной цикл
   for(int i=limit; i<rates_total && !IsStopped(); i++)
     {
      indicator_buffer[i]=rand()%3;
      color_indicator_buffer[i]=(indicator_buffer[i]==1) ? 0 : 1;
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

是的,我明白,有很多愚蠢的问题。说实话,我已经尝试了一整天,但没有结果。

我正在把当前条形上的几条趋势线 的价格值写进一个数组。

如果没有对象,我如何从数组中删除值?

 
Top2n:

是的,我明白,有很多愚蠢的问题。说实话,我已经尝试了一整天,但没有结果。

我正在把当前条形上的几条趋势线的价格值写进一个数组。

如果没有对象,我如何从数组中删除值?

如果我们在每个tick上运行趋势线价格的值,初始化数组,并在找到下一个必要的趋势线 价格时增加其维度,那么就不需要从数组中删除被删除的趋势线的值。这个数组将是动态的,每次在每一个刻度,它将只包含现有对象的值。
 
Top2n:

如果没有对象,我如何从数组中删除一个值?


通过指定一个零的价格。