Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 566

 

Herkese selam!

Lütfen bana soruna olası bir çözüm söyleyin.

2 veya 3 veya daha fazla gösterge çalışıyor. Her birinin bir satırı vardır: Yorum ("Gösterge 1 çalışıyor."); sonraki Yorum(" Gösterge 2 çalışıyor."); vb. sırasıyla.

Belki de "zor" bir satır başı yardımıyla ekranın sol üst köşesinin görünümünü elde etmek için nasıl (sonraki yazıt en az 1 onay işareti için öncekinin üzerine yazmaz):

Gösterge 1 açık.

Gösterge 2 çalışıyor.

Gösterge 3 çalışıyor.

vb.

 

Eski Expert Advisor'da yapı 610'da optimizasyon kriterinizi nasıl bildirebilirsiniz?

EA, 610 yapı üzerinde çalışır.

Örneğin, MQL5'te kod aşağıdaki gibidir:

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

  return (prof);
}

Başlamadan önce danışmana koyarsam, Özel sütun görünmez.

Ve ikinci soru: eski Uzman Danışmanlarda, derleme sırasında mesajlar sarı renkte görünür: işlevin bir değer döndürmesi gerekir.

Örnek bir dize.

 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());
  }
//+------------------------------------------------------------------+

Bir sonraki satırı nasıl yazacağımı bulamıyorum ...

Her biri yeni bir satırda alıntı yazmaya çalışıyorum ve işe yaramıyor....

 

Özel göstergeli bir danışmanı test ediyorum. Bazen şartlara uygun olarak işlemler açılır, bazen de neye dayanarak belli olmaz. Görselleştirmeye başlıyorum, gösterge olması gerektiği gibi çiziliyor ama anlaşmalar her zaman göstergeyle örtüşmüyor. Bir uyarı ile sorunlu alanları kontrol etmeye çalıştım ve danışmandaki gösterge okumalarındaki sıfırlar da çıkıyor. Sorunun ne olduğu belli değil, test sırasında gösterge doğru çizilirse danışmana iletilen gösterge değerleri nerede kaybolur?

Danışmandaki kod:
 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 :

Bir sonraki satırı nasıl yazacağımı bulamıyorum ...

Her biri yeni bir satırda alıntı yazmaya çalışıyorum ve işe yaramıyor....


Dosya Arama
 
Forexman77 :

Özel bir gösterge ile bir EA test ediyorum. Bazen şartlara uygun olarak işlemler açılır, bazen de neye dayanarak belli olmaz. Görselleştirmeye başlıyorum, gösterge olması gerektiği gibi çiziliyor ama anlaşmalar her zaman göstergeyle örtüşmüyor. Bir uyarı ile sorunlu alanları kontrol etmeye çalıştım ve danışmandaki gösterge okumalarındaki sıfırlar da çıkıyor. Sorunun ne olduğu belli değil, test sırasında gösterge doğru çizilirse danışmana iletilen gösterge değerleri nerede kaybolur?

Danışmandaki kod:

belki sorun danışmandadır?
 
Vladon :

belki sorun danışmandadır?
Dürüst olmak gerekirse, kendimi bilmiyorum. Tek bir görsel test yapıyorum, gösterge sıfırın üzerinde, yedinci ağın yüzdesinde işlem açıldı, geri kalanında değil.
 

Anlamadığım bir hata aldım:

'li_cnt' - undeclared identifier

Çizgide:

    return (li_cnt);

bu satır fonksiyonda:

 // 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);
}
Gördüğünüz gibi li_cnt değişkeni bildirildi. Derleyici, türün bildirilmediğine yemin eder. Bunun ne anlama gelmesi gerekiyor?
 
hoz :

Anlamadığım bir hata aldım:

Çizgide:

bu satır fonksiyonda:

Gördüğünüz gibi li_cnt değişkeni bildirildi. Derleyici, türün bildirilmediğine yemin eder. Bunun ne anlama gelmesi gerekiyor?


Değişkeniniz if içinde bildirildiği için
 
hoz :

Anlamadığım bir hata aldım:

Çizgide:

bu satır fonksiyonda:

Gördüğünüz gibi li_cnt değişkeni bildirildi. Derleyici, türün bildirilmediğine yemin eder. Bunun ne anlama gelmesi gerekiyor?

 // 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);
}