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) - 핸들2>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) 파일 핸들은 항상 0보다 큽니다. 따라서 파일의 내용에 관계없이 파일이 있으면 항상 조건이 충족됩니다.

3) 이것은 단지 파일의 내용을 읽는 것입니다. 사실, 숫자를 읽어야 할 때 한 줄 읽기가 수행되는 이유를 이해하지 못합니다. 그러나 여전히 이것은 이미 다른 문제와 관련이 있을 수 있습니다. 이제 가장 중요한 것은 일련의 동작을 그리는 것입니다.

4) 물론 파일을 닫아야 닫힙니다.

그리고 다음 단락만 3절에서 읽은 내용에 따라 조건을 넣어야 하며 두 번째 단락은 그렇지 않습니다.

 
Alexey Viktorov :

1) 파일을 열지만 내용을 읽지 않습니다.

2) 파일 핸들은 항상 0보다 큽니다 . 따라서 파일의 내용에 관계없이 파일이 있으면 항상 조건이 충족됩니다.

3) 이것은 단지 파일의 내용을 읽는 것입니다. 사실, 숫자를 읽어야 할 때 한 줄 읽기가 수행되는 이유를 이해하지 못합니다. 그러나 여전히 이것은 이미 다른 문제와 관련이 있을 수 있습니다. 이제 가장 중요한 것은 일련의 동작을 그리는 것입니다.

4) 물론 파일을 닫아야 닫힙니다.

그리고 다음 단락만 3절에서 읽은 내용에 따라 조건을 넣어야 하며 두 번째 단락은 그렇지 않습니다.

아니오... INVALID_HANDLE은 -1입니다.

그 때 파일 열기 오류가 발생하면 판매 신호를 받게됩니다 ...

기타 상수

매개변수 및 변수의 상태를 나타내는 데 사용되는 특수 상수입니다. 다음 값일 수 있습니다.

끊임없는

설명

의미

없는

모든 유형의 0입니다. 또한 문자열의 빈 상태를 나타냅니다.

0

비어 있는

매개변수의 빈 상태를 나타냅니다.

-하나

EMPTY_VALUE

표시기 버퍼의 빈 값

2147483647 (0x7FFFFFF)

CLR_NONE, clrNONE

색상 부족. 기본값은 null 값 포인터입니다. 사용자 지정 지표 에 사용

-하나

CHARTS_MAX

터미널에서 동시에 열 수 있는 최대 차트 수

100

INVALID_HANDLE

잘못된 핸들

-하나

IS_DEBUG_MODE

디버그 모드에서 mq5 프로그램을 실행하는 신호

디버그 모드에서 0이 아닌 값, 그렇지 않으면 0

IS_PROFILE_MODE

프로파일링 모드에서 mq5 프로그램 실행 신호

프로파일링 모드에서 0이 아닌 경우, 그렇지 않으면 0

WHOLE_ARRAY

배열이 끝날 때까지 남아있는 요소의 수를 의미합니다. 즉, 전체 배열이 처리됩니다.

0

WRONG_VALUE

상수는 모든 열거형 유형으로 암시적으로 캐스팅될 수 있습니다.

-하나

 

이 스레드가 보이지 않아 새로 작성했습니다. https://www.mql5.com/ru/forum/206126 을 참조하십시오.

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

1) 파일을 열지만 내용을 읽지 않습니다.

2) 파일 핸들은 항상 0보다 큽니다. 따라서 파일의 내용에 관계없이 파일이 있으면 항상 조건이 충족됩니다.

3) 이것은 단지 파일의 내용을 읽는 것입니다. 사실, 숫자를 읽어야 할 때 한 줄 읽기가 수행되는 이유를 이해하지 못합니다. 그러나 여전히 이것은 이미 다른 문제와 관련이 있을 수 있습니다. 이제 가장 중요한 것은 일련의 동작을 그리는 것입니다.

4) 물론 파일을 닫아야 닫힙니다.

그리고 다음 단락만 3절에서 읽은 내용에 따라 조건을 넣어야 하며 두 번째 단락은 그렇지 않습니다.

친애하는 MQL 전문가 - 어렵지 않다면 이 코드를 도와주세요. 반나절 동안 검색 엔진을 찾았지만 비슷한 것을 찾을 수 없었습니다.

같은 자리에 몇줄의 문제, 아는 사람은 3분의 문제)))

 

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)
{
}
이것이 올바른 코드입니까?
 

안녕하세요! 조언가가 약 1 년 전에 썼습니다 . 모든 것이 잘 작동했습니다. 그동안 사용하지 않았습니다. 이제 차트에 설치해도 아무 일도 일어나지 않습니다. 빌드가 변경되었기 때문이 아닐까요? 이제 터미널 1090을 빌드합니다.

 
Санек : 친애하는 MQL 전문가 - 어렵지 않다면 이 코드를 도와주세요. 반나절 동안 검색 엔진을 검색했지만 비슷한 것을 찾을 수 없습니다.

같은 장소에서 캠페인은 지식이 있는 몇 줄로 되어 있습니다. 3분 만에 )))

2시간 을 보냈다. 부분적으로 시스템을 확인해야 합니다. 인접한 차트에서 두 어드바이저를 동시에 실행하십시오. 모든 것이 표시됩니다. Expert Advisor 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);
}

Expert Advisor 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 :

안녕하세요! 조언가가 약 1 년 전에 썼습니다 . 모든 것이 잘 작동했습니다. 그동안 사용하지 않았습니다. 이제 차트에 설치해도 아무 일도 일어나지 않습니다. 빌드가 변경되었기 때문일까요? 이제 터미널 1090을 빌드합니다.


아마도 많은 혁신이 있었습니다. 컴파일 오류를 확인하는 것으로 시작하십시오. #PropertyStrict 지시문 사용

 
Vladimir Zubov :

아마도 많은 혁신이 있었습니다. 컴파일 오류를 확인하는 것으로 시작하십시오. #PropertyStrict 지시문 사용

그런 지시는 없다...

다음과 같은 것이 있습니다.

 #property strict
 
Vladimir Zubov :

아마도 많은 혁신이 있었습니다. 컴파일 오류를 확인하는 것으로 시작하십시오. #PropertyStrict 지시문 사용


Artyom Trishkin :

그런 지시는 없다...

다음과 같은 것이 있습니다.


하지만 확장자가 ex4인 컴퓨터에 있는 Expert Advisor 파일을 열 수 없지만 이 파일은 MetaEditor를 통해 사용할 수 없습니다. 이유가 무엇인지 알려주세요.

사유: