포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 566

 

안녕하세요 여러분!

문제에 대한 가능한 해결책을 알려주십시오.

2개 또는 3개 이상의 표시기가 작동합니다. 각각에는 다음과 같은 줄이 있습니다. Comment ("Indicator 1 is working."); next Comment("인디케이터 2가 작동 중입니다."); 등. 각기.

아마도 "교활한"캐리지 리턴의 도움으로 화면의 왼쪽 상단 모서리를 보는 방법 (다음 비문은 최소 1 틱 동안 이전 비문을 덮어 쓰지 않음) :

표시등 1이 켜져 있습니다.

표시기 2가 작동 중입니다.

표시기 3이 작동 중입니다.

등.

 

이전 Expert Advisor에서 빌드 610에서 최적화 기준 을 선언하는 방법은 무엇입니까?

EA는 610 빌드에서 작동합니다.

예를 들어 MQL5에서 코드는 다음과 같습니다.

 double OnTester ()
{
double prof= 0.0 ;
prof= TesterStatistics ( STAT_PROFIT );

  return (prof);
}

시작하기 전에 어드바이저에 올려놓으면 커스텀 컬럼이 안나옵니다.

그리고 두 번째 질문: 이전 Expert Advisors에서 컴파일할 때 메시지가 노란색으로 나타납니다. 함수는 값을 반환해야 합니다.

예제 문자열입니다.

 if (Work== false ){ Alert ( "Критическая ошибка. Эксперт не работает." ); return ;}
 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

//--- параметры для записи данных в файл
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string              InpFileName= "" ;
int t= 0 ;
int file_handle=- 2 ;
double mass[];
int OnInit ()
  {
   Comment ( "Start" );
   InpFileName= StringConcatenate ( WindowExpertName (), ".csv" );       // Имя файла  
 
   ResetLastError ();
   file_handle= FileOpen ( WindowExpertName ()+ "//" +InpFileName, FILE_READ | FILE_WRITE | FILE_CSV );   
   return ( INIT_SUCCEEDED );
  }
void OnTick ()
  {
   Comment (t);
   if (file_handle!= INVALID_HANDLE )
     {
      t++;
       ArrayResize (mass,t+ 1 , 10000 );
      mass[t]= Ask ;
       //--- запишем время сигналов и их значения в файл
       for ( int i= 0 ; i< ArraySize (mass); i++)
       FileWrite(file_handle,mass[t]);
       //--- закрываем файл
       FileClose (file_handle);
     }
   else
       PrintFormat ( "Не удалось открыть файл %s, Код ошибки = %d" ,InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+

다음 줄을 어떻게 써야할지 모르겠어...

새 줄 에 각각 따옴표를 쓰려고하는데 작동하지 않습니다....

 

사용자 지정 표시기 로 어드바이저를 테스트하고 있습니다. 조건에 따라 거래가 열리는 경우도 있고, 무엇을 근거로 했는지 불명확한 경우도 있습니다. 시각화를 시작하면 지표가 원래대로 그려지지만 거래가 항상 지표와 일치하는 것은 아닙니다. 경고로 문제 영역을 확인하려고 시도했으며 어드바이저의 표시기 판독 값에서 0도 나옵니다. 문제가 무엇인지 명확하지 않습니다. 테스트 중에 표시기가 올바르게 그려지면 어드바이저에게 전송되는 표시기 값이 손실되는 위치는 무엇입니까?

고문의 코드:
 double line= iCustom ( NULL , 0 , "Ttest3" ,Period_MA_1,p2,p3,p4, 1 , 1 );

if (line > 0 ){Opn_B= true ;}
if (line <= 0 ){Cls_B= true ;}
 
VOLDEMAR :

다음 줄을 어떻게 써야할지 모르겠어...

새 줄에 각각 따옴표를 쓰려고하는데 작동하지 않습니다....


파일찾기
 
Forexman77 :

사용자 지정 표시기로 어드바이저를 테스트하고 있습니다. 조건에 따라 거래가 열리는 경우도 있고, 무엇을 근거로 했는지 불명확한 경우도 있습니다. 시각화를 시작하면 지표가 원래대로 그려지지만 거래가 항상 지표와 일치하는 것은 아닙니다. 경고로 문제 영역을 확인하려고 시도했으며 어드바이저의 표시기 판독 값에서 0도 나옵니다. 문제가 무엇인지 명확하지 않습니다. 테스트 중에 표시기가 올바르게 그려지면 어드바이저에게 전송되는 표시기 값이 손실되는 위치는 무엇입니까?

고문의 코드:

아마도 문제는 고문에 있습니까?
 
Vladon :

아마도 문제는 고문에 있습니까?
솔직히 말하면, 나는 나 자신을 모른다. 단일 시각적 테스트를 실행하고 표시기가 0보다 높고 일곱 번째 네트워크의 비율에서 트랜잭션이 열리고 나머지는 그렇지 않습니다.
 

이해할 수 없는 오류가 발생했습니다.

'li_cnt' - undeclared identifier

줄에서:

    return (li_cnt);

이 줄은 함수에 있습니다.

 // 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT ( int & fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0 ,                                      // множитель
                    string fs_NameArray = "" ,                                    // имя возвращаемого массива
                    string fs_Delimiter = "," )                                   // Разделитель значений в строке
{
//----
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if ( StringFind (fs_List, fs_Delimiter) == - 1 ) return ( 1 );
    else
    {
        string lsa_TMP[];
        int li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, "," );
  
        if (fi_Range > 0 )
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!" );
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}
li_cnt 변수는 보시다시피 선언되어 있습니다. 컴파일러는 유형이 선언되지 않았다고 맹세합니다. 그게 무슨 의미 일까?
 
hoz :

이해할 수 없는 오류가 발생했습니다.

줄에서:

이 줄은 함수에 있습니다.

li_cnt 변수는 보시다시피 선언되어 있습니다. 컴파일러는 유형이 선언되지 않았다고 맹세합니다. 그게 무슨 의미 일까?


변수가 if else 내부에 선언되어 있기 때문에
 
hoz :

이해할 수 없는 오류가 발생했습니다.

줄에서:

이 줄은 함수에 있습니다.

li_cnt 변수는 보시다시피 선언되어 있습니다. 컴파일러는 유형이 선언되지 않았다고 맹세합니다. 그게 무슨 의미 일까?

 // 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT ( int & fia_INT[],                                               // Инициализируемый массив
                     string fs_List,                                               // Инициализируемые значения в строке
                     int fi_Range,                                                 // Размер массива
                     double fd_Factor = 1.0 ,                                       // множитель
                     string fs_NameArray = "" ,                                     // имя возвращаемого массива
                     string fs_Delimiter = "," )                                   // Разделитель значений в строке
{
//----
int li_cnt= 0 ;
     //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
     if ( StringFind (fs_List, fs_Delimiter) == - 1 ) return ( 1 );
     else
    {
         string lsa_TMP[];
        li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, "," );
  
         if (fi_Range > 0 )
        {
             if (li_cnt != fi_Range)
            {
                 Print (fs_NameArray, ": не соотвествие в размерности массива !!!" );
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
     return (li_cnt);
}