MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 352

 

고마워, 하지만 그녀는

Vitaly Muzichenko :

구출에 iCustom


감사합니다. 하지만 호출될 때마다 표시기 코드를 완전히 실행합니다. EA에서 많은 표시기 매개변수가 필요한 경우(그리고 실제로), 하나의 표시기 계산 대신 여러 가지를 얻습니다. 이로 인해 속도가 크게 느려질 수 있습니다. 프로세스, 현재 틱 건너 뛰기까지 미리 정의 된 변수 를 잊어 버렸습니다 .....

int rate_total=바;

전역 변수를 정의했습니다

int prev_calculated=0;

배열 요소 수에서 충돌

 
ijonhson :

죄송합니다. 알아냈지만 oncalculate에서 사전 정의된 변수 가 전역 변수이고 사용 가능한 경우 해당 값을 전달하는 이유가 명확하지 않습니다.

다음은 예입니다.

 //+-------------------------------------------------------+
//|Параметры функции                             PROBA.mq4|
//+-------------------------------------------------------+
#property   strict

void OnStart ()
{
 Alert (Сумма( 2 , 5 ));
 
 int Сум= 0 ;
 Сумма( 2 , 5 ,Сум);   // Передаем в функцию 2 числа и получаем сумму
 Alert (Сум);
}

int Сумма( int a, int b)
{
   return a+b;
}

void Сумма( int a, int b, int & s)
{
  s= a+b;
}

함수 매개변수는 입력(우리가 전달)과 출력(우리에게 반환)이 될 수 있습니다.

 
ijonhson : int Rates_total=바; int prev_calculated=0;

이러한 변수는 전체 표시줄 을 계산하는 데 필요하며 하나의 값이 필요합니다. 모든 것이 훨씬 쉽습니다. 지표 프로그램을 분석하고 계산에 사용되는 공식을 결정하십시오. 그리고 Expert Advisor에서 이 공식을 사용하십시오.

 

남자들은 그러한 알고리즘을 구현하는 방법을 알려줍니다.

볼륨이 있는 시계열이 있습니다.

마지막 막대 Volume[1]이 이전 막대 각각 보다 크고 이전 막대의 창(숫자)이 외부 변수(extern int)에 의해 설정되도록 비교가 필요합니다.


어렵지 않다면 코드 예제를 작성하세요

 
John Smith :

남자들은 그러한 알고리즘을 구현하는 방법을 알려줍니다.

볼륨이 있는 시계열이 있습니다.

마지막 막대 Volume[1]이 이전 막대 각각 보다 크고 이전 막대의 창(숫자)이 외부 변수(extern int)에 의해 설정되도록 비교가 필요합니다.


어렵지 않다면 코드 예제를 작성하세요

   for ( int i= 1 ; i<NumBar; i++) {
     ArrayResize (Buf, i);
    Buf[i- 1 ] = Volume [i];
  }

 double min= Buf[ ArrayMinimum (Buf)];
 double max= Buf[ ArrayMaximum (Buf)];

 if (max < Volume [ 0 ]) { ... }
 
STARIJ :

도움이 되었나요? 이전에는 어떻게 작동했습니까?


그것은 오류없이 작동했으며 ctrl + h를 통한 자동 수정으로 직접 제거한 것 같습니다. > _ <. 그러나 일반적으로 이것은 확실히 일루미나티가 시도한 것입니다. 다시 한번 감사합니다!

 
John Smith :

남자들은 그러한 알고리즘을 구현하는 방법을 알려줍니다.

볼륨이 있는 시계열이 있습니다.

마지막 막대 Volume[1]이 이전 막대 각각 보다 크고 이전 막대의 창(숫자)이 외부 변수(extern int)에 의해 설정되도록 비교가 필요합니다.


어렵지 않다면 코드 예제를 작성하세요

어렵지 않다. 내 무릎에 나는 기억에서 썼습니다 (아마도 나는 뭔가를 놓쳤을 것입니다) ...

 //+------------------------------------------------------------------+
bool IsLastVolumeTheLargest( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int start_pos, const int count)
  {
   long array[];   // Массив для хранения объёмов
   //--- если скопировалось меньше, чем нужно, вернём false
   if ( CopyTickVolume (symbol_name,timeframe,start_pos,count,array)<count) return false ;
   //--- вернём флаг того, что максимальный объём находится в последней ячейке массива (соответствует индексу start_pos)
   return ArrayMaximum (array)==count- 1 ;
  }
//+------------------------------------------------------------------+
 

안녕하세요. 파일을 공유할 수 없습니다. 작업 - M1의 MT4 테스터(MQL4)에서 수동 테스트하는 동안 이전 기간의 파일(예: M20)이 형성되어야 합니다. 이를 위해 PeriodConverter 스크립트 기반 지표 가 작성되었습니다. 왜냐하면 테스트 모드에서는 파일(EURUSD20.csv)을 History 폴더에 직접 저장할 수 없으며 파일은 모든 터미널의 공통 폴더인 \\MetaQuotes\Terminal\Common에 저장됩니다. 또한 이미 일반 M1 차트에서 작동하는 루프 스크립트는 EURUSD20.csv 파일의 데이터를 History 폴더에 있는 EURUSD20.hst 파일로 복사합니다. 스크립트에서 EURUSD20.csv 파일은 테스터의 인디케이터에서 동시에 열리면 열리지 않습니다(5004 ERR_FILE_CANNOT_OPEN 파일 열기 오류). 테스터에서 지표를 제거하면 이 파일이 스크립트에서 열리고 문제 없이 복사됩니다. 표시기의 파일은 다음과 같이 열립니다. ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON);
스크립트의 파일은 다음과 같이 열립니다. ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ);
제 실수를 지적해주세요.

 
tvv :

안녕하세요. 파일을 공유할 수 없습니다. 작업 - M1의 MT4 테스터(MQL4)에서 수동 테스트하는 동안 이전 기간의 파일(예: M20)이 형성되어야 합니다. 이를 위해 PeriodConverter 스크립트 기반 지표 가 작성되었습니다. 왜냐하면 테스트 모드에서는 파일(EURUSD20.csv)을 History 폴더에 즉시 저장할 수 없으며 파일은 모든 터미널의 공통 폴더인 \\MetaQuotes\Terminal\Common에 저장됩니다. 또한 이미 일반 M1 차트에서 작동하는 루프 스크립트는 EURUSD20.csv 파일의 데이터를 History 폴더에 있는 EURUSD20.hst 파일로 복사합니다. 스크립트에서 EURUSD20.csv 파일은 테스터의 인디케이터에서 동시에 열리면 열리지 않습니다(5004 ERR_FILE_CANNOT_OPEN 파일 열기 오류). 테스터에서 지표를 제거하면 이 파일이 스크립트에서 열리고 문제 없이 복사됩니다. 표시기의 파일은 다음과 같이 열립니다. ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON);
스크립트의 파일은 다음과 같이 열립니다. ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ |FILE_COMMON );
제 실수를 지적해주세요.

지적?

 
Alexey Viktorov :

지적?

나는 이해하지 못했다. 이 옵션은 \\MetaQuotes\Terminal\Common 파일의 위치를 가리킵니다. 이 옵션이 없으면 테스터에서 생성된 파일을 가져올 수 없습니다. 이 옵션이 없으면 파일은 MQL4\Files에서 검색되며 테스터의 파일을 거기에 넣을 수 없습니다.