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

 
Санек:

1) - 该部分打开文件11112222.txt,从其中读取数据。

//=================================BUY=========================================
    int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения

2) - 接下来是如果handle2>0的条件


  if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
   {

3) - 这是我不明白的部分。


       Print(FileReadString(handle2));

4) - 这一部分关闭了文件。


       FileClose(handle2); // закрытие текстового файла

5) - 由于条件handle2>0被满足,即文件11112222.txt包含1,买入订单 被打开。

  //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ      
                    if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
                     {
                        OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
                        FileClose(handle2); // закрытие текстового файла
                     }
                    else
                      Print("NE USPESHNO!!!");
                      FileClose(handle2); // закрытие текстового файла

   }
//=================================конец кода BUY=========================================

我把哪些部分搞混了?

1) 打开文件,但不读取其内容。

2) 文件的句柄总是大于零。因此,如果文件存在,无论其内容如何,该条件将始终成立。

3) 这正是在读取文件的内容。虽然我不明白为什么要读字符串,如果要读数字的话......。但它仍然可以成为另一个问题。现在最主要的是描述行动的顺序。

4)当然,文件必须被关闭,它就会关闭。

而只有下一个子句需要附加条件,这取决于你在子句3中读到的内容,但不是第二个子句。

 
Alexey Viktorov:

1)打开一个文件,但不读取其内容。

2)一个文件柄总是大于零。因此,如果文件存在,无论其内容如何,该条件将始终成立。

3) 这正是在读取文件的内容。但我不明白为什么要读一个字符串,如果要读一个数字的话......。但它仍然可以指的是另一个问题。现在最主要的是描述行动的顺序。

4)文件必须关闭,当然,它正在被关闭。

而只有下一个子句应该是有条件的,这取决于你在子句3中读到的内容,但不是第二子句。

不...INVALID_HANDLE的值为-1。

这时它就会出现文件打开错误,然后就会得到一个卖出信号...

其他常数

用于表示参数和变量的状态的特殊常数。可以是以下值。

恒定

描述

价值

NULL

任何类型的空。也表示空字符串状态

0

空白

表示参数的空状态

-1

EMPTY_VALUE

指标缓冲区中的空值

2147483647 (0x7FFFFFFFF)

CLR_NONE, clrNONE

没有颜色。默认值,指向空值的指针。用于自定义指标

-1

芯片_MAX

终端中同时打开的图表的最大可能数量

100

不合法的手脚

不正确的手柄

-1

IS_DEBUG_MODE

调试模式下的mq5-程序的标志

在调试模式下不等于零,否则为0

is_profile_mode

剖析模式下的mq5-程序的标志

在剖析模式下不等于零,否则为0

WHOLE_ARRAY

表示到数组末端的剩余元素数,即整个数组将被处理。

0

錯誤的值

一个常数可以隐含地被转换为任何枚举类型

-1

 

没有看到这个主题,所以我创建了一个新的主题。请看https://www.mql5.com/ru/forum/206126

Как в тестере стратегий получить TimeGMT();
Как в тестере стратегий получить TimeGMT();
  • 2017.06.28
  • www.mql5.com
Справочник MQL5, Дата и время, TimeGMT TimeGMT - При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeT...
 
Alexey Viktorov:

1)打开一个文件,但不读取其内容。

2) 一个文件柄总是大于零。相应地,如果文件存在,无论其内容如何,该条件将始终成立。

3) 这正是在读取文件的内容。但我不明白为什么要读一个字符串,如果要读一个数字的话......。但它仍然可以指的是另一个问题。现在最主要的是描述行动的顺序。

4)文件必须关闭,当然,它正在被关闭。

而只有下一个项目应该是有条件的,这取决于你在第3项中读到的内容,但不是第二个项目。

亲爱的MQL大师--如果你没有问题,请帮我解决这个代码,我在搜索引擎上花了半天时间,但我没有找到类似的东西。

我想这只是几行字,但对一个有经验的用户来说,这只是几分钟的事)))

 

c++中的dll如何从mql4中获取一个字符串并将其转换为char*?

struct MqlStr
{
        int               len;
        char             *string;
};

static int proc_func(char* Name);

MT4_EXPFUNC int __stdcall myfunc(MqlStr sym_name)
{
        proc_func(sym_name[0].string);
        
}
int proc_func(char* Name)
{
}
这就是正确的代码,不是吗?
 

大家好,请告诉我, 大约一年前写了一个EA,它工作得很好。这段时间我一直没有使用它。我不知道该怎么做,我只是不知道该怎么做。会不会是因为我改变了Build?我目前正在使用Build 1090。

 
Санек 亲爱的MQL大师--如果你不难帮我解决这段代码,我花了半天时间在搜索引擎中挖掘,但我找不到类似的东西。

这似乎是几行字的问题,对于一个有知识的人来说,这只是三分钟的问题)))。

花了我两个小时。我必须逐件检查系统。在相邻的图表上同时运行两个EA--一切都将是可见的。专家顾问1 =写到文件

//+------------------------------------------------------------------+
//| Запись в файл -1  0  1                                     1.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(7);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждые 7 секунд                                       |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;
   if(rand()<20000)
   {
     x=1;
     if(rand()<16000) x=-1;
   }

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 3);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow);
   ChartRedraw(0);
   Sleep(2000);

   int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE);
   if(handle == -1)
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileWriteInteger(handle, x, 4);
   Sleep(2000);

   ObjectSetText("Семафор","",20,"Arial",White);
   ChartRedraw(0);
   FileClose(handle);
}

EA 2 = 读取文件

//+------------------------------------------------------------------+
//| Чтение файла  -1  0  1                                     2.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(1);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждую секунду                                        |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 2);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор","",20,"Arial",Yellow);
   ChartRedraw(0);

   Sleep(500);
   int handle = FileOpen("123.txt", FILE_BIN | FILE_READ);  // Получаем НОМЕР файла в ОС
   if(handle == -1)                // Если производится запись, файл занят, будет ошибка
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   x = FileReadInteger(handle,4);                          // Получаем СОДЕРЖИМОЕ файла
   ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileClose(handle);
}
 
toni_stark:

大家好,请给我一些建议, 在一年前写了一个EA,它运行良好。这段时间我一直没有使用它。我不知道该怎么做,我只是不知道该怎么做。会不会是因为我改变了Build?我目前正在使用Build 1090。


这很有可能,已经有很多创新了。首先要检查是否有编译错误。有#PropertyStrict指令。

 
Vladimir Zubov:

很可能有很多的创新。首先要检查是否有编译错误。有了#PropertyStrict指令。

没有这样的指令。

有的。

#property strict
 
Vladimir Zubov:

很可能有很多的创新。首先要检查是否有编译错误。有了#PropertyStrict指令。


阿尔乔姆-特里什金

没有这样的指令。

有的。


但我无法打开 我电脑上以ex4为扩展名的EA文件,但通过MetaEditor却没有这个文件。请告诉我这是什么原因。