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

 

안녕하세요.

지그재그로 색칠하는 것을 도와주세요.

하단에서 상단까지의 거리가 >=100포인트인 경우 세그먼트를 녹색으로 지정하도록 만들고 싶습니다.

 
Dimitry-1983 :

안녕하세요!

나는 이미 내 머리를 부러뜨렸다. 이중 배열에 특정 가격이 있는지 확인하는 방법은 무엇입니까?

테스트를 위해 다음과 같이 작성했습니다.



11, 22, 33, 44 -- 스크립트는 문제 없이 찾습니다(터미널에 이러한 순서가 있음). 그러나 예를 들어 가격 45를 처리하면 여전히 3(배열의 가격 위치 44)을 반환합니다.

내가 필요한 것은 본질적으로 bool입니다. 배열에서 처리 중인 주문의 가격이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다. 그러나 나는 아직 언어에서 그러한 기능을 찾지 못했습니다.

in 함수 는 배열의 첫 번째 차원에서 처음 발견된 요소의 인덱스를 반환하지만 원하는 값을 찾지 못하면 원하는 값이 있는 요소 중 가장 낮은 값의 인덱스를 반환합니다. 따라서 이 작업을 위해서는 원하는 값과 찾은 값이 같은지 확인하는 것도 필요합니다. 비교 결과는 참 또는 거짓

 
STARIJ :

그리고 왜 표시기에서 무언가를 인쇄합니까? 모든 것이 화면에 표시됩니다. 이것이 표시기인 이유입니다. 테이블이 필요할 때 iCustom()으로 스크립트를 실행합니다.


당신이 여기에 쓴 것을, 나는 아무것도 이해하지 못했습니다. 우리는 어떤 이유로 항상 비어있는 파일이 있다는 사실에 대해 이야기하고있었습니다. 데이터 배열을 파일로 다운로드할 수 있는 방법은 없습니다.

파일에 저장할 데이터가 필요합니다. 1년 동안의 차트에 지표를 붙이면 그 해의 모든 판독 기록이 남게 됩니다!

 
Alekseu Fedotov :

얼마나 흥미롭게 꿰매는지

실수로 이것을 시도하십시오


고맙습니다! 하지만 이미 시도했지만 소용이 없었습니다.

 

좋은 사람들이여, 왜 오류가 나오는지 말해주세요.

 //--- input parameters
input int       MyLevel= 100 ; // установка уровня (отступ) выше (ниже) текущей цены;
//--- indicator buffers
double          Label1Buffer[];
double          Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer);
   SetIndexBuffer ( 1 ,Label2Buffer);
   double R1 = 0 ; // служеные переменные принимаются равными 0;
   double R2 = 0 ; // служебные переменные; принимаются равными 0;
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---

   double i= Bid ; // переменной i присваивается значение текущего курса;

   if (i>=R1) // если текущий курс >= служебной переменной R1;
     {
      R1=i+(MyLevel* Point ); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel* Point ); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
       break ;   // иначе, выходим из оператора
     }
   if (i<=R2) // если текущий курс <= служебной переменной R2;
     {
      R1=i+(MyLevel* Point ); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel* Point ); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
       break ; // иначе выходим
     }

   Label1Buffer [ 0 ] = R1; // заносим в буфер данные R1
   Label2Buffer [ 0 ] = R2; // и R2

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

오류:

'R1' - 선언되지 않은 식별자 마이레벨.mq4 61

유형 변환으로 인한 데이터 손실 가능성 마이레벨.mq4 63 아홉

'R2' - 선언되지 않은 식별자 마이레벨.mq4 64 7

';' - 'break'는 일부 루프 또는 스위치 문 내에서 사용해야 합니다. 마이레벨.mq4 68 12

';' - 'break'는 일부 루프 또는 스위치 문 내에서 사용해야 합니다. 마이레벨.mq4 77 12


 
YarTrade :

좋은 사람들이여, 왜 오류가 나오는지 말해주세요.

오류:

'R1' - 선언되지 않은 식별자 마이레벨.mq4 61

유형 변환으로 인한 데이터 손실 가능성 마이레벨.mq4 63 아홉

'R2' - 선언되지 않은 식별자 마이레벨.mq4 64 7

';' - 'break'는 일부 루프 또는 switch 문 내에서 사용해야 합니다. 마이레벨.mq4 68 12

';' - 'break'는 일부 루프 또는 switch 문 내에서 사용해야 합니다. 마이레벨.mq4 77 12


R1, R2는 각각 함수 내부에서 선언되며, 해당 함수에서만 볼 수 있으며 로컬입니다.
break는 루프와 swith에서 사용됩니다.
 

안녕하세요 여러분 MT5용 reportmanager와 유사한 테스트 보고서 를 결합하는 프로그램이 있는지 알려주십시오. 그렇지 않으면 reportmanager가 열지 않습니다.

 
iv1986 :

안녕하세요 여러분 MT5용 reportmanager와 유사한 테스트 보고서 를 결합하는 프로그램이 있는지 알려주십시오. 그렇지 않으면 reportmanager가 열지 않습니다.

MT5에서 코드를 다시 작성하고 다중 통화 테스트를 수행하는 것이 더 쉽습니다. MT4 플랫폼에서 테스트할 때 확실히 잘못된 결과가 나왔고 최종 결과는 크게 왜곡되어 분석하는 것이 의미가 없습니다.

다음은 23자에 대한 테스트 중 하나입니다. 모든 것이 명확하고 거의 시각적입니다.


 

각 기기에 대해 다른 매개변수와 전략이 있는 경우 다중 기기 Expert Advisor를 만들 수 있습니까?

Vitaly Muzichenko :

MT5에서 코드를 다시 작성하고 다중 통화 테스트를 수행하는 것이 더 쉽습니다. MT4 플랫폼에서 테스트할 때 확실히 잘못된 결과가 나왔고 최종 결과는 크게 왜곡되어 분석하는 것이 의미가 없습니다.

다음은 23자에 대한 테스트 중 하나입니다. 모든 것이 명확하고 거의 시각적입니다.


그리고 악기마다 전략이 다르고 그에 따라 코드가 다르다면 그런 Expert Advisor를 만들 수 있습니까?

 
iv1986 :

각 기기에 대해 다른 매개변수와 전략이 있는 경우 다중 기기 Expert Advisor를 만들 수 있습니까?

그리고 악기마다 전략이 다르고 그에 따라 코드가 다르다면 그런 Expert Advisor를 만들 수 있습니까?

다중 통화 고문 을 작성할 수 있습니다. 하나의 파일에 있습니다. 테스터가 하나의 파일에 서로 다른 쌍에 대한 전략을 결합하는 것이 가능하며, 하나의 차트에서 온라인으로 거래할 수도 있습니다. 그러나 각 전략이 Expert Advisor가 던져지는 기호에서 거래되도록 온라인으로 분할할 수도 있습니다. 가능성은 무한하다