MetaTrader 4 Build 529 베타가 새로운 컴파일러와 함께 출시됨 - 페이지 105

 
Night63 :

동료! 컴파일할 때 경고가 발생합니다.

초기화되지 않은 변수 'PipStep' 사용 가능

이 작품을 위해:

모든 변수는 이중으로 초기화되는데 그가 싫어하는 것은?

double 유형의 변수를 선언했습니다. 초기화는 선언된 변수에 값을 할당하는 것입니다.

이중 핍스텝=0; 하다

 
이해가 되지 않습니다. 555 빌드에 있는 표시기의 데모 버전은 제가 테스트하지 않았을 뿐입니까, 아니면 시장 데뷔에 있어 완전히 중요하지 않은 문제입니까?
 
Candid :
이해가 되지 않습니다. 555 빌드에 있는 표시기의 데모 버전은 제가 테스트하지 않았을 뿐입니까, 아니면 시장 데뷔에 있어 완전히 중요하지 않은 문제입니까?

그리고 5-ke에서 그들은 테스트를 받습니까?
 

ArrayCopyRates() также изменила свое поведение, раньше она производила виртуальное копирование в массив double[][6], теперь же производится виртуальное копирование в массив MqlRates[]. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное.

https://www.mql5.com/ru/forum/148325

MqlRates

가격, 거래량 및 스프레드에 대한 정보를 저장하는 구조입니다.

https://www.mql5.com/ru/docs/constants/structures/mqlrates

그렇다면 MetaTrader 4의 MqlRates는 배열 또는 구조를 빌드 555합니까?

도움말(MetaTrader 4 빌드 555)의 이 예제는 작동하지 않습니다. 기능 없음 카피율

void OnStart ()
  {
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 100 ,rates);
   if (copied> 0 )
     {
       Print ( "Скопировано баров: " +copied);
       string format= "open = %G, high = %G, low = %G, close = %G, volume = %d" ;
       string out;
       int size= fmin (copied, 10 );
       for ( int i= 0 ;i<size;i++)
        {
         out=i+ ":" + TimeToString (rates[i].time);
         out=out+ " " + StringFormat (format,
                                  rates[i].open,
                                  rates[i].high,
                                  rates[i].low,
                                  rates[i].close,
                                  rates[i].tick_volume);
         Print (out);
        }
     }
   else Print ( "Не удалось получить исторические данные по символу " , Symbol ());
  }
 

//+------------------------------------------------------------------+
//|                                                     my_test1.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   ArrayCopyRates(rates, "EURUSD" , PERIOD_M1 );
   //int copied=CopyRates(Symbol(),0,0,100,rates);

   Print (
         " спред " ,rates[ 6 ].spread               
         );
  }
//+------------------------------------------------------------------+
그것도 작동하지 않습니다. MqlRates를 사용하여 MetaTrader 4 빌드 555에서 작업 예제를 볼 수 있습니까?
 
ALXIMIKS :

그리고 5-ke에서 그들은 테스트를 받습니까?

5-ke의 누군가가 테스트되지 않았습니까?
 
ALXIMIKS :

double 유형의 변수를 선언했습니다. 초기화는 선언된 변수에 값을 할당하는 것입니다.

이중 핍스텝=0; 하다


효과가 있었다!!

살고 배우십시오!

매우 감사합니다!

 
serferrer :

그렇다면 MetaTrader 4의 MqlRates는 배열 또는 구조를 빌드 555합니까?

도움말(MetaTrader 4 빌드 555)의 이 예제는 작동하지 않습니다. 기능 없음 카피율

그것도 작동하지 않습니다. MqlRates를 사용하여 MetaTrader 4 빌드 555에서 작업 예제를 볼 수 있습니까?


MqlRates - 구조

MqlRates[] - 구조 배열

MqlRates 구조 작업의 예는 period_converter_new 스크립트를 참조하십시오.

ArrayCopyRates 작동 방식의 예(문서가 보완될 예정)

 MqlRates array1[];
ArrayCopyRates(array1, "EURUSD" , PERIOD_H1 );
Print ( "Текущий бар " ,array1[ 0 ].time, "  цена открытия " , array1[ 0 ].open);
 
MetaQuotes :

MQL4 언어의 변경 사항

  • ArrayCopyRates()도 double[][6] 배열에 대한 가상 복사를 수행하기 전에 동작을 변경했지만 이제는 MqlRates[] 배열에 대한 가상 복사를 수행합니다. 호환성을 위해 double[][6] 배열로 복사하는 것은 유지되지만 이 복사는 가상이 아니라 실제입니다.

오랫동안 고객에게 인계된 DLL을 사용하는 Expert Advisors가 상당히 많습니다. 이 경우 DLL에 매개변수를 전달 하기 위해 double[][6] 배열을 사용했으며 ArrayCopyRates() 함수로 초기화할 때 시계열이 가상으로 복사되었습니다. 그런 다음 DLL에서 함수를 호출할 때 이러한 배열과 현재 크기가 참조에 의해 매개변수로 전달되었습니다.

고객이 터미널을 새 버전으로 업데이트하면 이러한 모든 Expert Advisors의 작동이 중지됩니다. 불행하다.

DLL 코드를 변경하지 않고 계속 작동하도록 하려면 이제 DLL에서 각 함수를 호출하기 전에 ArrayCopyRates()를 호출해야 한다는 것을 올바르게 이해하고 있습니까?

 
stringo :
이제 MqlRates 구조 스프레드 값(거래량도 있을 수 있음)이 없습니다 . 나중에 추가되나요?
 
Patrol :

오랫동안 고객에게 인계된 DLL을 사용하는 Expert Advisors가 상당히 많습니다. 이 경우 DLL에 매개변수를 전달하기 위해 double[][6] 배열을 사용했으며 ArrayCopyRates() 함수로 초기화할 때 시계열이 가상으로 복사되었습니다. 그런 다음 DLL에서 함수를 호출할 때 이러한 배열과 현재 크기가 참조에 의해 매개변수로 전달되었습니다.

고객이 터미널을 새 버전으로 업데이트하면 이러한 모든 Expert Advisors의 작동이 중지됩니다. 불행하다.

DLL 코드를 변경하지 않고 계속 작동하도록 하려면 이제 DLL에서 각 함수를 호출하기 전에 ArrayCopyRates()를 호출해야 한다는 것을 올바르게 이해하고 있습니까?


여기서는 좀 더 복잡합니다. dll이 취하는 구조도 변경되었습니다.

즉, ArrayCopyRates를 MqlRates 구조의 배열로 다시 작성해야 합니다. 또한 dll에서 해당 구조에 대한 설명을 바꿔야 합니다.