KimIV'ten faydalı özellikler - sayfa 105

 
zennon :
MovingInWL() işlevi, sy,op,mn giriş filtrelerinden bağımsız olarak tüm açık konumlar üzerinde aptalca yinelenir. Bu, örnek olarak eklenen Expert Advisor için de geçerlidir (sayfa 55).
ne için parmaklıyor?! durdurma kaybını yeniden düzenlemek ve her şeyi Değiştirici işlevine göndermek için
 

Mantıksız yardım edin.

Ayrıca bu daldan olmasa da "KimIV'ten çok kullanışlı özellikler" - INI dosyalarını okumak.

Kimov eklenmesinin bir parçası (derleme için yeterli, ancak tümü değil - okunabilirlik için)

 //+------------------------------------------------------------------+
//|                                                     IniFiles.mqh |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|   25.04.2006  Библиотека функций для работы с INI-файлами.       |
//+------------------------------------------------------------------+
#property library
#import "kernel32.dll"
   int GetPrivateProfileStringA
      ( string SectionName,     // Наименование секции
         string KeyName,         // Наименование параметра
         string Default,         // Значение по умолчанию
         string ReturnedString, // Возвращаемое значение параметра
         int     nSize,           // Размер буфера под значение параметра
         string FileName);       // Полное имя файла
   int WritePrivateProfileStringA
      ( string SectionName,     // Наименование секции
         string KeyName,         // Наименование параметра
         string sString,         // Записываемое значение параметра
         string FileName);       // Полное имя файла
#import
//+------------------------------------------------------------------+
//| Параметры:                                                       |
//|   FileName    - полное имя файла                                 |
//|   SectionName - наименование секции                              |
//|   KeyName     - наименование параметра                           |
//|   Default     - значение параметра по умолчанию                  |
//+------------------------------------------------------------------+
string ReadIniString( string FileName, string SectionName, string KeyName, 
                     string Default = "" )
  {
   string ReturnedString = "" ;
   int nValue = GetPrivateProfileStringA(SectionName, KeyName, Default, 
                                          ReturnedString, 255 , FileName);
   if (nValue > 0 )
       return (ReturnedString);
   else 
       return (Default);
  }

INI Dosyasını okuma işlevini çağıran komut dosyası

 #include <IniFiles.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   string strPair = "" ;
   string strTradeType = "" ;
   string Path = "C:\\TestIni" ;
   string Section = "TestSection" ;
   string strAction = ReadIniString(Path, Section, "Action" );
   if (strAction == "Open" )
  {
   strPair = ReadIniString(Path, Section, "Pair" , "" );
   Print (
         "Пара =   " , strPair
         );
   strTradeType = ReadIniString(Path, Section, "TradeType" , "" );
   Print ( "Акция " ,
         "Пара =   " , strPair,
         "Тип =    " , strTradeType
         );
  }
   else
   Print ( "Действо не найдено" );
   
//----
   return ( 0 );
  }

Gerçek INI dosyası

[TestSection]
Action=Open
Pair=EURUSD
TradeType=Buy
Volume=- 0.06

Beğenmemeler - günlük snippet'i

 12:49:14 Test IniFiles AUDUSD,H1: Пара =   EURUSD
12:49:14 Test IniFiles AUDUSD,H1: Акция Пара =   BuyТип =    Buy

Soru - neden? İşlevler doğru tanımlanmış gibi görünüyor. Okuduğumda (tüm aramalardan sonra) ve ardından çift (Hacim) yazdırdığımda, tüm değişkenler eşit olur - 0.06.

225 oluşturun.

 
KimIV :

ArrayAvg() işlevi.

Bu işlev, dizi öğelerinin aritmetik ortalamasını döndürür.

     for ( i = 0 ; i < k ; i ++ ) s += x [ i ] ;
    if ( k > 0 ) s /= k ;
    • x - double türünde bir dizi öğe.
    neden iMA kullanmıyorsunuz?
     
    KimIV :

    CorrectTF() işlevi.

    Giriş parametresini en yakın uygun doğru zaman dilimine sığdırır ve değerini döndürür.
       if ( TimeFrame >= PERIOD_M5   && TimeFrame < PERIOD_M15 ) return ( PERIOD_M5 ) ;
       if ( TimeFrame >= PERIOD_M15 && TimeFrame < PERIOD_M30 ) return ( PERIOD_M15 ) ;

    14, 15'e 5'ten daha yakın değil mi?

    KimIV : Örneğin, 60 yerine 50 saat girdim. Şey... bir nevi kaçırdım.

    ve işlev 30 döndürür. cool :)

     
    eddy :

    14, 15'e 5'ten daha yakın değil mi? ve işlev 30 döndürür. cool :)

    Bu, açık bir kurala göre iştir: TF arasında kalan her şey, daha küçük TF'nin değeri ile değiştirilir.
    Beğenmezseniz, kuralınızı ve kodunuzu gönderin.
     
    Koddaki kuralı anlıyorum, ancak kod açıklamasında farklı bir kural var
     
    KimIV :

    GetExtremumZZPrice() işlevi.

    Bu işlev, standart özel ZigZag göstergesinin uç noktasını arar ve fiyat seviyesini döndürür. İşlev, aşağıdaki isteğe bağlı parametreleri kabul eder:

    • sy - Araç adı. "" veya NULL geçerli karakterdir. Varsayılan değer NULL'dur .
    • tf - Zaman çerçevesi. Varsayılan değer 0 , geçerli karakterdir.
    • ne - Uç nokta numarası. 0 - son, 1 - önceki, 2 - önceki vb.
    • dp , dv , bs - ZigZaga parametreleri: ExtDepth, ExtDeviation, ExtBackstep.


    Bu işlevi kullanmak istedim, ancak şu durumla karşılaştım: yeni bir ekstremum göründüğünde, fiyat seviyesi hemen değişmez, ancak bir süre aynı kalır. Teste müdahale eder. Nasıl düzeltilir?

     
    söyle lütfen, arka arkaya kârsız kapalı pozisyonları saymak için bir fonksiyon varmış gibi, tüm fonksiyonların listesi nerede - martingale için gerekli.
     
    eddy :
    Koddaki kuralı anlıyorum, ancak kod açıklamasında farklı bir kural var
    Sayesinde! Açıklamayı düzelttim ... benim yerimde ... Kimin umurunda, onu da düzelt)))
    Neden: