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

 
Barbarian:

为什么CListNode类中的虚拟比较方法会被忽略?

在调试器中检查,总是使用来自CObject的比较。


需要在CData类中覆盖比较。
 
artmedia70:

没有奇迹。

文件 --> 打开数据文件夹 --> 在打开的窗口中 --> MQL4 --> 在那里你可以找到你所习惯的文件夹。这篇文章的链接在论坛的主页上。我只是太懒了,不愿意做。



谢谢你,说实话,我以为我做错了什么。现在一切都说得通了。
 
当运行脚本时,你需要在条件被触发时放一个图标(标记)。我如何做到这一点呢?
 
Forexman77:
当运行脚本时,你需要在条件被触发时放一个图标(标记)。我如何做到这一点呢?
一旦条件被触发--就打上一个标记。绝对的。
 
Forexman77:
在运行脚本时,你需要在条件被触发时设置图标(标签)。我怎样才能做到这一点呢?
artmedia70:
一旦条件被触发--就打上一个标记。毫不含糊地说。

Artyom的意思是"...条件被触发--打上标记。",他的意思是在条件被触发时在脚本的代码中设置一个标记。

在MQL4语言参考书中,有非常好的徽章创建脚本的例子。例如,这个脚本 可以在图表上创建和移动 "买入 "图标。
 
DiPach:

Artyom的意思是"...条件被触发--放一个标记。",他的意思是在脚本代码中写上条件被触发时设置图标(标记)。

MQL4参考》中有非常好的创建图标的脚本例子。例如,这个脚本 可以在图表上创建和移动 "买入 "图标。

好的脚本,从那里拉出所需的功能。

就这样,你拥有了它。

//+------------------------------------------------------------------+
void OnStart()
  {
 
  if(Signal == Buy_)   //условия
     ArrowBuyCreate(0,"ArrowBuy_"+(string)Time[0],0,Time[0],Ask);

  if(Signal == Sell_)  //условия
     ArrowSellCreate(0,"ArrowSell_"+(string)Time[0],0,Time[0],Bid);
   
  }
//+------------------------------------------------------------------+
//====================================================================
//+------------------------------------------------------------------+
//| Создает знак "Buy"                                               |
//+------------------------------------------------------------------+
bool ArrowBuyCreate(const long            chart_ID=0,        // ID графика
                    const string          name="ArrowBuy",   // имя знака
                    const int             sub_window=0,      // номер подокна
                    datetime              time=0,            // время точки привязки
                    double                price=0,           // цена точки привязки
                    const color           clr=C'3,95,172',   // цвет знака
                    const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии (при выделении)
                    const int             width=1,           // размер линии (при выделении)
                    const bool            back=false,        // на заднем плане
                    const bool            selection=false,   // выделить для перемещений
                    const bool            hidden=true,       // скрыт в списке объектов
                    const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точки привязки, если они не заданы
//   ChangeArrowEmptyPoint(time,price);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим знак
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_BUY,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать знак \"Buy\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет знака
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установи приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Создает знак "Sell"                                              |
//+------------------------------------------------------------------+
bool ArrowSellCreate(const long            chart_ID=0,        // ID графика
                     const string          name="ArrowSell",  // имя знака
                     const int             sub_window=0,      // номер подокна
                     datetime              time=0,            // время точки привязки
                     double                price=0,           // цена точки привязки
                     const color           clr=C'225,68,29',  // цвет знака
                     const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии (при выделении)
                     const int             width=1,           // размер линии (при выделении)
                     const bool            back=false,        // на заднем плане
                     const bool            selection=false,   // выделить для перемещений
                     const bool            hidden=true,       // скрыт в списке объектов
                     const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точки привязки, если они не заданы
//   ChangeArrowEmptyPoint(time,price);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим знак
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_SELL,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать знак \"Sell\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет знака
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
 

你能说明为什么在测试模式下试图打开*.txt文件时可能出现错误吗?

这个选项工作起来完美无缺。

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";"); 

但这个没有用。

Handle2=FileOpen(File_Name2,FILE_TXT|FILE_READ);

它给出了错误5004,函数FileIsExist(File_Name2)由于某种原因返回错误(wtf?)

这两个文件(csv和txt)都位于tester/files文件夹中(终端在D盘),它们的名字与变量File_Name和File_Name2 相对应--我检查过很多次。

 
DiPach:

Artyom的意思是"...condition triggered - put a mark.",即在脚本代码中规定在条件触发时设置一个徽章(标记)。

MQL4参考书中包含了创建图标的脚本的非常好的例子。例如,这个脚本 可以在图表上创建和移动 "买入 "图标。

不,迪娜,我的意思正是我所说的;)

我暗示过 "一个具体的问题就是一个具体的答案"。我今天很刻薄 :)

 
artmedia70:

我今天很刻薄 :)

那我就不说话了,:)这样我今天就不会被热手了。:)

 
DiPach:

那我就不说了:)免得我今天不小心沾上了热手。:)

不...我总是喜欢女孩。