오류, 버그, 질문 - 페이지 670

 

Gann Grid를 재작업할 계획이 있습니까? 사용하는 것은 절대 불가능합니다. MT4에서와 같이 극한값으로 수동으로 늘리거나 적절히 고칠 수 없습니다. TF에서 TF로 전환할 때 셀 크기가 점프할 때 고정 바인딩이 없습니다! 아니면 내가 뭔가를 놓치고 있는 걸까...

M1 M5

 

표시되지 않고 Alpari의 금속에 대해서만 막대와 OHLC가 표시되며 다른 모든 것은 정상입니다. 견적이 오고 주문이 들어오고 있습니다. 터미널을 새 폴더로 재정렬해도 도움이 되지 않습니다. 어디에서 오류가 발생할 수 있습니까? W764

 
BoraBo :

표시되지 않고 Alpari의 금속에 대해서만 막대와 OHLC가 표시되며 다른 모든 것은 정상입니다. 견적이 오고 주문이 들어오고 있습니다. 터미널을 새 폴더로 재정렬해도 도움이 되지 않습니다. 어디에서 오류가 발생할 수 있습니까? W764

비슷하게. 서버에서 무언가가 비활성화된 것 같습니다. 알파리 기술 지원.

 
void OnStart ()
  {
//---
symbol2csv( Symbol (), Period ());
  }
//+------------------------------------------------------------------+
int symbol2csv( string smb, ENUM_TIMEFRAMES tf)
  {
   ResetLastError ();
   int filehandle= FileOpen (smb+ "_" +tf2str(tf)+ ".csv" , FILE_WRITE | FILE_CSV , "," );
   if (filehandle!= INVALID_HANDLE )
     {
       MqlRates rates[];
       int i= 0 ,copyed= CopyRates (smb,tf,From,To,rates);
       ArraySetAsSeries (rates, false );
       FileWrite (filehandle, "\"Date\" \"Time\" \"Open\" \"High\" \"Low\" \"Close\" \"Volume\"" ); // writing header
       for (i= 0 ;i<copyed;i++)
        {
         FileWrite (filehandle, TimeToString (rates[i].time,TIME_DATE), TimeToString (rates[i].time,TIME_MINUTES), DoubleToString (rates[i].open, _Digits ), DoubleToString (rates[i].high, _Digits ), DoubleToString (rates[i].low, _Digits ), DoubleToString (rates[i].close, _Digits ),rates[i].real_volume);
        }
       FileClose (filehandle);
       Print (smb+ " exported " + IntegerToString (copyed));
       return copyed;
     }
   else Print ( "FileOpen failure. Error is " , GetLastError ());
   return - 1 ;
  }
볼륨 열이 파일에 항상 0을 포함하는 이유는 무엇입니까? 그리고 그 볼륨이 기록되도록 하는 방법은 무엇입니까?
 
Graff :
볼륨 열이 파일에 항상 0을 포함하는 이유는 무엇입니까? 그리고 그 볼륨이 기록되도록 하는 방법은 무엇입니까?

외환 상품의 real_volume???

시작하는 틱일 수도 있습니다. tick_volume 을 사용해 보세요.

 

내가 이해할 수없는 오류는 무엇입니까?

다음은 최소로 축소된 코드입니다.

 //+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//---------- MQL5 --------------
int ecx = 0 ; //-- Кол-во тестируемых пар --
string g_s_SymbolsTrade[] = { "AUDCAD" , "AUDCHF" , "AUDJPY" , "AUDNZD" , "AUDUSD" , "CADCHF" , "CHFJPY" , "EURAUD" , "EURCAD" , "EURCHF" , "EURGBP" , "EURJPY" , "EURNZD" , "EURUSD" ,
"GBPCHF" , "GBPJPY" , "GBPUSD" , "NZDUSD" , "USDCAD" , "USDCHF" , "USDJPY" };

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
{
   //-- Сколько всего валютных пар --
   ecx = ArraySize (g_s_SymbolsTrade);
   //-- Установить таймер на каждую секунду --
   if ( EventSetTimer ( 1 ) == false ) return (- 1 ); //int 08
   
   return ( 0 ); //ret;
}
//----------------------------------------------------------------------------//
void OnDeinit ( const int reason)
{
   EventKillTimer (); //timer off
}
//+------------------------------------------------------------------+
//| 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[])
{
    
//--- return value of prev_calculated for next call
   return (rates_total); //ret;
}

//+------------------------------------------------------------------+
////////////////////////////////////////////////////////////////////////////////
//                           Expert Timer function                            //
////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
void OnTimer () //int 08
{
static bool b_Flag = false ;
string db_SymbolName;
MqlRates rates[];
int edx;

   if (b_Flag == true ) return ; //ret -- реентерабельность --
   b_Flag = true ; //cli
   //---------------------------------------------
   for ( int ebx = 0 ; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx= CopyRates (db_SymbolName, _Period , 0 , 1 ,rates);
       if (edx != 1 ){ //cmp edx,1 | jne
         b_Flag = false ; //sti
         return ; //jne ret;
      }   
   } //loop ecx       
   Print ( "Загрузка завершена." );
   //---------------------------------------------
   b_Flag = false ; //sti
}

실행하면 바로 발생하거나 차트 기간을 전환한 후 터미널이 갑자기 급격히 느려지기 시작하고 전체 로그가 다음과 같이 막힙니다.


이유는 무엇입니까? 내 캔트 또는 CopyRates 기능의 버그입니까?

 
pusheax :

이유는 무엇입니까? CopyRates 기능의 내 캔트 또는 버그입니까?

둘 다.

다음과 같이 시도하십시오.

 void OnTimer () //int 08
{
static bool b_Flag = false ;
if (b_Flag == true ) return ; //ret -- реентерабельность --
string db_SymbolName;
MqlRates rates[ ecx ];    // поправка здесь.
int edx;


   b_Flag = true ; //cli
   //---------------------------------------------
   for ( int ebx = 0 ; ebx < ecx; ebx++){
      db_SymbolName = g_s_SymbolsTrade[ebx];
      edx= CopyRates (db_SymbolName, _Period , 0 , 1 ,rates);
       if (edx != 1 ){ //cmp edx,1 | jne
         b_Flag = false ; //sti
         return ; //jne ret;
      }   
   } //loop ecx       
   Print ( "Загрузка завершена." );
   //---------------------------------------------
   b_Flag = false ; //sti
}
 
MetaDriver :

둘 다.

다음과 같이 시도하십시오.


아니요, 불행히도 도움이 되지 않았습니다.

저는 정말 이렇게 썼습니다. MqlRates rate[100];

그리고 다음과 같이: MqlRates rate[ecx]; - 컴파일 시 오류가 발생합니다.

그리고 나는 또한 위로 올라가는 아이디어를 좋아했습니다.

if (b_Flag == true) return;//ret -- 재진입 --

그러나 불행히도 결과는 동일합니다.

아마도 다른 아이디어가 있습니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
papaklass :

차트 설정 의 터미널에서 막대의 수는 무제한입니다. 막대의 수를 줄이십시오.

예, 그는 하나의 막대만 복사한 것 같습니다.
 
papaklass :

그래서 25개 악기. 내가 바의 수를 줄일 때까지 나는 12시에 같은 쓰레기를 가지고 있었다.

그런 다음 서비스 데스크를 의미합니다. 터미널은 1 bar를 읽을 때 기호로 디스크에서 전체 히스토리를 추출해서는 안됩니다.

설정이 무제한인 경우에도 마찬가지입니다. 스마트 카그베에 따라 캐싱을 해야 합니다..

--

조언은 일반적으로 정확합니다. 나는 그것에 대해 생각했습니다. 그는 "기간을 바꿀 때"라고 말합니다. 저것들. 터미널은 모든 것을 몇 분 안에 저장하고 누락된 기간을 계산하기 시작하며 버퍼용 메모리 부족에 빠지게 됩니다.

더 짧게 - 둘 다 유죄입니다. 푸시 - 그는 메모리를 구입하지 않았지만 많은 통화 쌍과 무제한(또는 거의 무제한)을 원했습니다.

그리고 MQ - 표시기 오류(예: "오류 XXXX: 입술을 말아라, 동지.")로 처리되지 않고 자신의 것으로만 처리됩니다.