초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 774

 
0Aleksandr0 :

이게 뭔가요? MQL4에서는 잘 생각하지 않습니다. 무엇을 얻을 것인지 알려주시면 MQL5에서 모든 것을 즉시 작성할 수 있습니다.
역사의 손익 계산과 관련된 것 같은?


그것이 바로 요점입니다. 저는 스스로 이해하지 못합니다. 코드는 저를 위해 작성되었으며 수업에서 제외되었습니다. 나는 또한 이 코드가 잔액을 계산하기 위한 것이라고 믿고 싶습니다. 근데 아이디어에 따르면 신규 오더의 개시로 인한 밸런스 변경은 어레이로 버려야 하는데 안 보이네요...

 
Aleksey Vyazmikin :

MT5에서 코드를 다시 작성할 수 있도록 도와주세요 - 주문을 전혀 이해하지 못합니다 :(

 #include <MT4Orders.mqh>
 
fxsaber :

감사합니다. 이 클래스가 포함된 EA가 컴파일되었습니다. 충돌할지 여부는 알 수 없지만...


이제 테스트를 실행할 때 오류가 발생합니다.

2017.08.23 11:22:59.929 코어 3 2016.06.01 00:00:00 DLL 로딩 불가

2017.08.23 11:22:59.929 코어 3 전역 초기화 실패

2017.08.23 11:22:59.929 코어 3 전역 초기화 치명적인 오류

2017.08.23 11:22:59.929 코어 3 전문가 초기화에 실패하여 테스터가 중지되었습니다.


라이브러리 호출이 사용되었습니다 - MT4에서는 모든 것이 정확합니다.

 #import "Kernel32.dll"
bool CopyFileW( string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
#import 

이유는 무엇입니까?

 
Aleksey Vyazmikin :

감사합니다. 이 클래스가 포함된 EA가 컴파일되었습니다. 충돌할지 여부는 알 수 없지만...

하지 않을 것이다.

이제 테스트를 실행할 때 오류가 발생합니다.

2017.08.23 11:22:59.929 코어 3 2016.06.01 00:00:00 DLL 로딩 불가

2017.08.23 11:22:59.929 코어 3 전역 초기화 실패

2017.08.23 11:22:59.929 코어 3 전역 초기화 치명적인 오류

2017.08.23 11:22:59.929 코어 3 전문가 초기화에 실패하여 테스터가 중지되었습니다.


라이브러리 호출이 사용되었습니다 - MT4에서는 모든 것이 정확합니다.

이유는 무엇입니까?

터미널에서 DLL의 사용을 허용합니다.

 
fxsaber :

하지 않을 것이다.

터미널에서 DLL의 사용을 허용합니다.


저를 믿지 마십시오. 허용했지만 효과가 없었습니다. 분명히 캐시가 있고 잠시 후에 지워집니다. 이제 작동합니다. 고맙습니다.

 

에이전트가 하나의 파일에 쓰도록 가르치는 방법은 무엇입니까? 이제 모든 사람이 자신의 폴더에 자신의 파일을 생성합니다. 이는 좋지 않습니다.

 
Aleksey Vyazmikin :

에이전트가 하나의 파일에 쓰도록 가르치는 방법은 무엇입니까? 이제 모든 사람이 자신의 폴더에 자신의 파일을 생성합니다. 이는 좋지 않습니다.

Aleksey, 문서를 한 번만 열어 보세요... 결국, 모든 것이 명확하게 거기에 기록되어 있습니다. 플래그는 공유 폴더를 나타내며, 공유 파일을 여는 폴더를 나타냅니다. 글쎄, 문서를 읽는 것보다 답변을 기다리는 것이 더 쉽지 않습니까 ???

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin :

에이전트가 하나의 파일에 쓰도록 가르치는 방법은 무엇입니까? 이제 모든 사람이 자신의 폴더에 자신의 파일을 생성합니다. 이는 좋지 않습니다.


먼저(1단계) 다음을 극복해야 합니다.

... 폴더에서 ...


이것은 FILE_COMMON 플래그를 사용하여 수행됩니다. 이제 모든 에이전트가 공유 폴더에 씁니다(그러나 여전히 각 에이전트는 자체 파일에 씁니다).


고문 예:

 //+------------------------------------------------------------------+
//|                                           Agents FILE_COMMON.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
//---
input int s= 0 ;
//---
string InpFileName= "" ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Initialize the generator of random numbers 
   MathSrand ( GetTickCount ());
   InpFileName= IntegerToString ( MathRand ())+ ".txt" ;
//--- open the file 
   ResetLastError ();
   int file_handle= FileOpen (InpFileName, FILE_WRITE | FILE_TXT | FILE_COMMON );
   if (file_handle!= INVALID_HANDLE )
     {
       //--- the string is formed, write it to the file 
       FileWriteString (file_handle,InpFileName);
       //--- close the file 
       FileClose (file_handle);
       PrintFormat ( "Data is written, %s file is closed" ,InpFileName);
       PrintFormat ( "Common path for all of the terminals installed on a computer: %s" , TerminalInfoString ( TERMINAL_COMMONDATA_PATH ));
     }
   else
     {
       PrintFormat ( "Failed to open %s file, Error code = %d" ,InpFileName, GetLastError ());
       return ( INIT_FAILED );
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }
//+------------------------------------------------------------------+


이 공유 폴더를 빠르게 열려면 다음과 같이 하십시오. MetaEditor 코드 편집기의 파일 메뉴에서 "공통 데이터 폴더 열기" 항목을 선택하십시오.


이제 최적화를 위해 이 Expert Advisor를 실행하고 테스트를 통과할 때 공유 폴더에 새 파일이 어떻게 생성되는지 확인하십시오.

파일:
 
Vladimir Karputov :

먼저(1단계) 다음을 극복해야 합니다.


이것은 FILE_COMMON 플래그를 사용하여 수행됩니다. 이제 모든 에이전트가 공유 폴더에 씁니다(그러나 여전히 각 에이전트는 자체 파일에 씁니다).


고문 예:


이 공유 폴더를 빠르게 열려면 다음과 같이 하십시오. MetaEditor 코드 편집기의 파일 메뉴에서 "공통 데이터 폴더 열기" 항목을 선택하십시오.


이제 최적화를 위해 이 Expert Advisor를 실행하고 테스트를 통과할 때 공유 폴더에 새 파일이 어떻게 생성되는지 확인하십시오.


터미널이 자체 디렉토리에서 작동하기 때문에 공용으로 가고 싶지 않습니다. 그리고 여전히 문제를 해결하지 못하는 많은 파일이 있을 것입니다.

 
Aleksey Vyazmikin :

터미널이 자체 디렉토리에서 작동하기 때문에 공용으로 가고 싶지 않습니다. 문제를 해결하지 못하는 파일이 여전히 많이 있을 것입니다.


"... 1 단계 ..."라고 쓰여 있습니다.

위의 2단계 - 이제 스스로 생각해 보십시오. 즉, 충돌이 없는 여러 스레드가 어떻게 하나의 파일에 쓸 수 있는지 생각해 보십시오.

사유: