KimIV의 유용한 기능 - 페이지 105

 
zennon :
MovingInWL() 함수는 입력 필터 sy,op,mn에 관계없이 모든 열린 위치를 어리석게 반복합니다. 이는 예시로 첨부된 Expert Advisor(55페이지)에도 적용됩니다.
그녀는 무엇을 위해 핑거링?! 손절매를 재정렬하고 모든 것을 수정자 기능으로 보내기 위해
 

불합리한 것을 도와주세요.

또한 "KimIV의 매우 유용한 기능"(이 분기에서는 아니지만 INI 파일 읽기).

Kimov 포함의 단편(컴파일에 충분하지만 가독성을 위해 전부는 아님)

 //+------------------------------------------------------------------+
//|                                                     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 파일 읽기 기능을 호출하는 스크립트

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

실제 INI 파일

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

싫어요 - 로그 스니펫

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

질문 - 왜? 기능이 제대로 설명된 것 같습니다. (모든 호출 후) 읽고 double (Volume)을 인쇄하면 모든 변수가 0.06과 같아집니다.

빌드 225.

 
KimIV :

ArrayAvg() 함수.

이 함수는 배열 요소의 산술 평균을 반환합니다.

     for ( i = 0 ; i < k ; i ++ ) s += x [ i ] ;
    if ( k > 0 ) s /= k ;
    • x - double 유형의 요소 배열입니다.
    왜 iMA를 사용하지 않습니까?
     
    KimIV :

    올바른TF() 함수.

    입력 매개변수를 가장 가까운 적절한 올바른 시간 프레임에 맞추고 해당 값을 반환합니다.
       if ( TimeFrame >= PERIOD_M5   && TimeFrame < PERIOD_M15 ) return ( PERIOD_M5 ) ;
       if ( TimeFrame >= PERIOD_M15 && TimeFrame < PERIOD_M30 ) return ( PERIOD_M15 ) ;

    14는 5보다 15에 가깝지 않나요?

    KimIV : 예를 들어, 나는 60시간 대신에 50시간을 입력했습니다. 음... 일종의 놓친 것입니다.

    함수는 30을 반환합니다. 멋진 :)

     
    eddy :

    14는 5보다 15에 가깝지 않나요? 함수는 30을 반환합니다. 멋진 :)

    이것은 명확한 규칙에 따른 작업입니다. TF 사이 에 있는 모든 것은 더 작은 TF의 값으로 대체됩니다.
    마음에 들지 않으면 규칙과 코드를 게시하십시오.
     
    코드의 규칙을 이해하지만 코드 설명에 다른 규칙이 있습니다.
     
    KimIV :

    GetExtremumZZPrice() 함수.

    이 함수는 표준 사용자 지정 ZigZag 표시기의 극한값을 검색하고 해당 가격 수준을 반환합니다. 이 함수는 다음과 같은 선택적 매개변수를 허용합니다.

    • sy - 도구 이름. "" 또는 NULL 은 현재 문자입니다. 기본값은 NULL 입니다.
    • tf - 기간. 기본값 0 은 현재 문자입니다.
    • ne - 극한 포인트 번호. 0 - 마지막, 1 - 이전, 2 - 이전 등
    • dp , dv , bs - ZigZaga 매개변수: ExtDepth, ExtDeviation, ExtBackstep.


    이 기능을 사용하고 싶었지만 다음과 같은 상황에 직면했습니다. 새로운 극값이 나타날 때 가격 수준이 즉시 변경되지 않고 일정 시간 동안 그대로 유지됩니다. 테스트를 방해합니다. 어떻게 고치는 지?

     
    무익한 마감 포지션 을 연속적으로 계산하는 기능이 있는 것처럼 모든 기능의 목록이 어디에 있는지 알려주세요. 마틴게일에 필요합니다.
     
    eddy :
    코드의 규칙을 이해하지만 코드 설명에 다른 규칙이 있습니다.
    덕분에! 설명을 수정했습니다 ... 내 자리에서 ... 누가 신경쓰고 수정도 해주세요)))