MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 638

 
Alexey Viktorov :

따라서 중간으로 제한하십시오. 누가 금지???

그가 남성이 아니라면 분명히 PMS 증후군은 읽고 적절한 질문을하는 것을 금지합니다. 지금은 비명을 지르십시오 ... 나는 이것이 아니라 이것을 원합니다 ...

추신: 저는 4개의 포럼에 있습니다. 가능하면 한 달에 MT4에서 약 20개의 작업을 무료로 수행하고 개별 TK에 대해 약 10개의 주문을 하지만 정기적으로 1.5-2개월마다 뇌를 날려버릴 동화 같은 캐릭터가 나타납니다. , 그는 MT4를 다룰 필요도 없고, 특정한 작업을 지시할 필요도 없기 때문에... 그는 단지 누군가를 두뇌로 만들기만 하면 되는, 그것이 그의 모든 작업...

나는 Artyom의 평생 동안 인내심을 위해 기념비를 세울 것입니다.

 
Alexey Viktorov :

하는 것은 매우 쉽습니다.

옵션 번호 1은 두뇌를 긴장시킵니다.

그래도 작동하지 않으면 옵션 #2를 사용할 수 있습니다.

vyezhivaya가 없고 개발자, 특히 포럼 사용자를 모욕하지 않고 포럼에서 도움을 요청하십시오.

그렇지 않으면 ... 메일로 보내집니다.

이 "기능"을 우회하는 방법을 알고 있습니다.

이 포럼의 "존경하는 사람들"과 달리 나는 이것을 비밀로하지 않을 것입니다.

이 방법은 다음과 같습니다.

관심이 없는 배열의 나머지 부분을 최대값으로 채우면 표시기가 선 그리기 를 중지합니다.

표준 MT4 지표(예: SMA, EMA, SMMA 및 기타)에서 볼 수 있는 것은 이 문제에 대한 "바보 같은" 솔루션입니다.

그러나 이것은 완전한 바보입니다. 그리고 설명에서 이 문제를 "해결"하는 방법에 대해 한 마디도 언급하지 않은 것은 바로 이 어리석음 때문이라고 생각합니다.

내가 틀릴 수도 있지만 표준 지표에서 다른 방법을 찾지 못했습니다.

 
Alexey Viktorov :

정확히. 수수료가 전혀 없는 내부 이체를 통해 새 계정을 열고 이전 계정에서 새 계정으로 돈을 이체합니다.

나는 아무것도 이해하지 못했다. Alexey, 당신은 그것이 무엇에 관한 것인지 어떻게 이해 했습니까? 그리고 이것은 일부 번역가가 번역할 수 없는 8개의 표시기 버퍼와 어떤 관련이 있습니까? 젠장 다리 부러져...
 
Igor Makanu :

그가 남성이 아니라면 분명히 PMS 증후군은 읽고 적절한 질문을하는 것을 금지합니다. 지금은 비명을 지르십시오 ... 나는 이것이 아니라 이것을 원합니다 ...

추신: 저는 4개의 포럼에 있습니다. 가능하면 한 달에 MT4에서 약 20개의 작업을 무료로 수행하고 개별 TK에 대해 약 10개의 주문을 하지만 정기적으로 1.5-2개월마다 뇌를 날려버릴 동화 같은 캐릭터가 나타납니다. , 그는 MT4를 다룰 필요도 없고, 특정한 작업을 지시할 필요도 없기 때문에... 그는 단지 누군가를 두뇌로 만들기만 하면 되는, 그것이 그의 모든 작업...

나는 Artyom의 평생 동안 인내심을 위해 기념비를 세울 것입니다.

아마 쉬어야 할 것 같습니다.

 
앞으로 문제가 없도록 아이들을 술에 취하게해야합니다.
 

글쎄, 내가 뭘 잘못하고 있니?

 //+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                                                        RomanRott |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "RomanRott"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1
//--- plot HL_CCI
#property indicator_label1    "HL_CCI"
#property indicator_type1    DRAW_HISTOGRAM
#property indicator_color1    clrRed
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- input parameters
input int       Period_= 70 ; //Период
//--- indicator buffers
double          HL_CCIBuffer[];
int cci_h1, cci_h2;
double cci1[], cci2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,HL_CCIBuffer, INDICATOR_DATA );
   cci_h1 = iCCI ( _Symbol , PERIOD_CURRENT , Period_, PRICE_HIGH );
   cci_h2 = iCCI ( _Symbol , PERIOD_CURRENT , Period_, PRICE_LOW );
   
   //ArraySetAsSeries(cci1, true);
   //ArraySetAsSeries(cci2, true);
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   CopyBuffer (cci_h1, 0 , 0 , rates_total-prev_calculated, cci1);
   CopyBuffer (cci_h2, 0 , 0 , rates_total-prev_calculated, cci2);
   for ( int i = prev_calculated; i<rates_total;i++){
      HL_CCIBuffer[i] = cci1[i]-cci2[i];
   }
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin :
나는 아무것도 이해하지 못했다. Alexey, 당신은 그것이 무엇에 관한 것인지 어떻게 이해 했습니까? 그리고 이것은 일부 번역가가 번역할 수 없는 8개의 표시기 버퍼와 어떤 관련이 있습니까? 젠장 다리 부러져...

Artyom, 당신은 프로그래머... M. Botvinnik이 컴퓨터는 바보라고 말한 적이 있습니다. 따라서 모든 프로그래머는 바보와 대화하는 방법을 알고 있습니다.

버퍼가 8~512개 정도가 조금 더 빨랐고, 이 글은 브로커가 MT4에서 MT5로 계좌 이체를 거부했다는 민원이었다.


이고르 마카누 :

나는 Artyom의 평생 동안 인내심을 위해 기념비를 세울 것입니다.

이미 ...


 
Roman Sharanov :

글쎄, 내가 뭘 잘못하고 있니?

 //+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://mql5.com/ru/users/artmedia70"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots    1
//--- plot DivCCI
#property indicator_label1    "DivCCI"
#property indicator_type1    DRAW_HISTOGRAM
#property indicator_color1    C'143,188,139'
#property indicator_style1    STYLE_SOLID
#property indicator_width1    2
//--- input parameters
input uint      InpPeriod= 70 ;   // CCI period
//--- indicator buffers
double          BufferDivCCI[];
double          BufferHCCI[];
double          BufferLCCI[];
//--- global variables
int             period_cci;
int             handle_hcci;
int             handle_lcci;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- set global variables
   period_cci= int (InpPeriod< 2 ? 2 : InpPeriod);
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,BufferDivCCI, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,BufferHCCI, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 2 ,BufferLCCI, INDICATOR_CALCULATIONS );
//--- setting indicator parameters
   IndicatorSetString ( INDICATOR_SHORTNAME , "HL CCI (" +( string )period_cci+ ")" );
   IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());
//--- setting buffer arrays as timeseries
   ArraySetAsSeries (BufferDivCCI, true );
   ArraySetAsSeries (BufferHCCI, true );
   ArraySetAsSeries (BufferLCCI, true );
//--- create CCI's handles
   ResetLastError ();
   handle_hcci= iCCI ( NULL , PERIOD_CURRENT ,period_cci, PRICE_HIGH );
   if (handle_hcci== INVALID_HANDLE )
     {
       Print ( "The iCCI(" ,( string )period_cci, ") object was not created: Error " , GetLastError ());
       return INIT_FAILED ;
     }
   handle_lcci= iCCI ( NULL , PERIOD_CURRENT ,period_cci, PRICE_LOW );
   if (handle_lcci== INVALID_HANDLE )
     {
       Print ( "The iCCI(" ,( string )period_cci, ") object was not created: Error " , GetLastError ());
       return INIT_FAILED ;
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- Проверка и расчёт количества просчитываемых баров
   if (rates_total< fmax (period_cci, 4 )) return 0 ;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if (limit> 1 )
     {
      limit=rates_total- 1 ;
       ArrayInitialize (BufferDivCCI, EMPTY_VALUE );
       ArrayInitialize (BufferHCCI, 0 );
       ArrayInitialize (BufferLCCI, 0 );
     }
//--- Подготовка данных
   int count=(limit> 1 ? rates_total : 1 ),copied= 0 ;
   copied= CopyBuffer (handle_hcci, 0 , 0 ,count,BufferHCCI);
   if (copied!=count) return 0 ;
   copied= CopyBuffer (handle_lcci, 0 , 0 ,count,BufferLCCI);
   if (copied!=count) return 0 ;

//--- Расчёт индикатора
   for ( int i=limit; i>= 0 && ! IsStopped (); i--)
     {
      BufferDivCCI[i]=BufferHCCI[i]-BufferLCCI[i];
     }

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 

표시기가 모든 틱 이 아닌 초당 작동하도록 법원을 추가해야 하는 사항을 알려주세요 ??

#속성 표시기_차트_창

#속성 표시기_버퍼 1

#property indicator_color1 빨간색

#속성엄격

이중 버퍼[];

무효 초기화()

{

SetIndexBuffer(0, 버퍼);

SetIndexStyle(0,STYLE_SOLID);

}

무효 시작()

{


이중 vbid_1 = MarketInfo("USDRUB",MODE_BID);

이중 vbid_2 = MarketInfo("EURUSD",MODE_BID);




더블 a = vbid_1;

더블 b = vbid_2;

더블 x = a / b ;

버퍼[0] = x;

주석(x);

}


 
gonsharov :

표시기가 모든 틱 이 아닌 초당 작동하도록 법원을 추가해야 하는 사항을 알려주세요 ??

https://docs.mql4.com/en/basis/function/events 를 읽어야 합니다.

그리고 자신의 이벤트 핸들러 OnTimer() 를 작성하십시오.

Функции обработки событий - Функции - Основы языка - Справочник MQL4
Функции обработки событий - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
В языке MQL4 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL4: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...