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

 
Mihail Matkovskij :

하지만 이 코드가 실제 거래에서 사용되기 위해서는 많은 개선이 필요할 것입니다...

네 이해했습니다. 완전 자동 거래에 도달하지도 않을 것입니다. 언어에 대한 지식은 많은 거래를 통해 장기간에 걸쳐 거래 아이디어를 신중하게 테스트해야 할 필요가 있기 때문에 발생합니다.

테스터 없이는 아이디어를 질적으로 테스트하는 것이 불가능합니다. 안타까운 일입니다. 또한 전략 매개변수의 최적화. 테스터에서는 프로세스가 크게 단순화됩니다.

 
Alexey Viktorov :

나는 당신이 문서를 인용해야한다고 생각하지 않았습니다 ...

... 주문 마감 시간은 0 ...

고마워, 나는 그렇게 생각하지 않았다. 자주는 아니지만 티켓팅으로 선택해야 했고 시장에서 순환하는 과정을 거쳤기 때문에 문제는 없었습니다.

 
Igor Makanu :
알렉세이 빅토로프 :

고맙습니다!

 

안녕하세요. 표시기에서 계산 오류를 찾으려고 합니다. 경고를 통해 Close[0] 값(아래에 사용됨)을 표시했습니다. 소수점 이하 4자리 숫자를 제공하고 브로커는 5자리 숫자를 가집니다.

 Alert (Close[ 0 ]);

내가 무엇을 잘못하고 있지? 고맙습니다.

 
Oleg Bondarev :

안녕하세요. 표시기에서 계산 오류를 찾으려고 합니다. 경고를 통해 Close[0] 값(아래에 사용됨)을 표시했습니다. 소수점 이하 4자리 숫자를 제공하고 브로커는 5자리 숫자를 갖습니다.

내가 무엇을 잘못하고 있지? 고맙습니다.

Close[0]은(는) 어디에서 얻었습니까? 당신은 심령 포럼에 있지 않기 때문에 소스 코드를 보는 것이 흥미로울 것입니다... :)

 

안녕하세요, 탈출구를 찾도록 도와주세요 - 퍼즐!

 #define           Pmax 1200    //размер массива по периоду
double            ExtBuffer[];

//+------------------------------------------------------------------+
//| Структура для хранения данных Фибо                               |
//+------------------------------------------------------------------+
struct PosFib
  {
   double               period [ Pmax]; 
  };

int OnCalculate ( const int rates_total,....)
{
   PosFib BP [ Pmax ];
   
   for ( int p= 2 ; p<Pmax; p++) // отбор по периодам
       for ( int b=prev_calculated>Pmax?prev_calculated:Pmax; b<rates_total; b++)
        {
         BP[b].period[p]=sm.d[p- 1 ].m[b];
        }

   return (rates_total);
}

컴파일시 경고 - 로컬 변수의 크기가 너무 큽니다(512kb 이상).

이 경고는 얼마나 중요합니까?


 
Top2n :

안녕하세요, 탈출구를 찾도록 도와주세요 - 퍼즐!

컴파일시 경고 - 로컬 변수의 크기가 너무 큽니다(512kb 이상).

상황을 극복하는 방법을 알려주세요!

 int OnCalculate ( const int rates_total,....)
{
   PosFib BP[];
   ArrayResize (BP, Pmax);
....

추신: 작업에서 더 잘 사용할 수 있는 경우 표시기에서 계산을 위해 보조 표시기 버퍼 를 사용하는 것이 편리합니다( INDICATOR_CALCULATIONS ).

 
Igor Makanu :

덕분에

 

모두에게 좋은 하루!

MQL-4에 대한 질문입니다.
ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); 함수가 있습니다. 사전 정렬된 배열의 요소를 찾습니다. 배열이 2차원인 경우 이 함수는 첫 번째 차원의 요소만 찾습니다.

문제. 2차원에서 배열의 필수 요소 를 찾는 데 사용할 수 있는 함수 또는 언어 구성은 무엇입니까? 2개의 행이 있는 2D 배열이 있습니다.

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
맨 위 행이 아닌 맨 아래 행에서 원하는 값을 가진 배열 요소를 어떻게 찾을 수 있습니까? 결국 ArrayBsearch()는 맨 위 행만 검색합니다.
도와 주셔서 감사합니다.

 
ANDREY :

모두에게 좋은 하루!

MQL-4에 대한 질문입니다.
ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); 함수가 있습니다. 사전 정렬된 배열의 요소를 찾습니다. 배열이 2차원인 경우 이 함수는 첫 번째 차원의 요소만 찾습니다.

문제. 2차원에서 배열의 필수 요소 를 찾는 데 사용할 수 있는 함수 또는 언어 구성은 무엇입니까? 2개의 행이 있는 2D 배열이 있습니다.

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
맨 위 행이 아닌 맨 아래 행에서 원하는 값을 가진 배열 요소를 어떻게 찾을 수 있습니까? 결국 ArrayBsearch()는 맨 위 행만 검색합니다.
도와 주셔서 감사합니다.

MQL4에서는 다음과 같은 방법으로만 가능합니다.

 //+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version    "1.00"
#property strict

#property script_show_inputs

#define size1 2 
#define size2 10

input double value1 = 3 ;
input double value2 = 8 ;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart () {
   double array[size1][size2] = {
    { 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 }, 
    { 10 , 3 , 8 , 9 , 2 , 1 , 1 , 8 , 8 , 6 }
  };
  
   double bufer[size2];
  
   int i;
  
   int index;
  
   string str;
  
  i = 0 ;
   for (; i < size2; i++) {
    bufer[i] = array[ 0 , i];
  }
  
   ArraySort (bufer, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  index = ArrayBsearch (bufer, value1, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  str = "" ;
  
  i = 0 ;
   for (; i < size2; i++) {
    array[ 0 , i] = bufer[i];
    str += ( string )array[ 0 , i] + ((i != size2 - 1 ) ? ", " : "" );
  }
  
   Print ( "array[0]: {" + str + "}" );
  
   Print ( "value1 array[0][" +( string )index+ "]: " , array[ 0 ][index]);
  
  
  i = 0 ;
   for (; i < size2; i++) {
    bufer[i] = array[ 1 , i];
  }
  
   ArraySort (bufer, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  index = ArrayBsearch (bufer, value2, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  str = "" ;
  
  i = 0 ;
   for (; i < size2; i++) {
    array[ 1 , i] = bufer[i];
    str += ( string )array[ 1 , i] + ((i != size2 - 1 ) ? ", " : "" );
  }
  
   Print ( "array[1]: {" + str + "}" );
  
   Print ( "value2 array[1][" +( string )index+ "]: " , array[ 1 ][index]);
}
//+------------------------------------------------------------------+

결과:

2020.07.08 09:25:41.426 FindInArray AUDUSD, M30: value2 배열[1][6]: 8.0

2020.07.08 09:25:41.426 FindInArray AUDUSD, M30: 배열[1]: {1, 1, 2, 3, 6, 8, 8, 8, 9, 10}

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: 값1 배열[0][2]: 3.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: 배열[0]: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


파일: