초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1236

 
Vladimir Karputov :

디버깅에서 어떤 경우에 조건이 충족되는지 확인하십시오.


rate_total - prev_calculates 는 매우 효율적인 구성입니다.

  • 0이면 현재 막대에서 눈금으로 계산한다는 의미입니다.
  • 1과 같으면 새로운 막대를 의미하며 과거와 현재의 두 막대가 계산됩니다.
  • 1보다 크면 첫 번째 출시 또는 과거 데이터의 변경을 의미합니다.
한계를 계산합니다. 그리고 한계에서 0보다 크거나 같은 주기에서 지표 데이터를 계산합니다. 음, limit = Rates_total - prev_calculates를 계산할 때 제한이 무엇인지 스스로 계산하십시오.
 
Artyom Trishkin :

rate_total - prev_calculates 는 매우 효율적인 구성입니다.

  • 0이면 현재 막대에서 눈금으로 계산하는 것을 의미합니다.
  • 1과 같으면 새로운 막대를 의미하며 과거와 현재의 두 막대가 계산됩니다.
  • 1보다 크면 첫 번째 출시 또는 과거 데이터의 변경을 의미합니다.
한계를 계산합니다. 그리고 한계에서 0보다 크거나 같은 주기에서 지표 데이터를 계산합니다. 음, limit = Rates_total - prev_calculates를 계산할 때 제한이 무엇인지 스스로 계산하십시오.

코드를 보세요.

그런 다음 의견을 말하십시오.

 
Vladimir Karputov :

코드를 보세요.

그런 다음 의견을 말하십시오.

왜 무례함? 나는 당신에게 무례하지 않았다.

나는 당신이 인용한 라인과 그 조건이 충족될 경우에 대답했습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

초보자의 질문 MQL5 MT5 MetaTrader 5

블라디미르 카르푸토프 , 2020.08.06 13:03

디버깅에서 어떤 경우에 귀하의 조건이 충족되는지 확인하십시오.


그리고 그는 세 가지 가능한 상태로 답을 보완했으며 이 경우 수행되는 작업은 다음과 같습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

초보자의 질문 MQL5 MT5 MetaTrader 5

Artyom Trishkin , 2020.08.06 15:17

rate_total - prev_calculates 는 매우 효율적인 구성입니다.

  • 0이면 현재 막대에서 눈금으로 계산하는 것을 의미합니다.
  • 1과 같으면 새로운 막대를 의미하며 과거와 현재의 두 막대가 계산됩니다.
  • 1보다 크면 첫 번째 출시 또는 과거 데이터의 변경을 의미합니다.
한계를 계산합니다. 그리고 한계에서 0보다 크거나 같은 주기에서 지표 데이터를 계산합니다. 음, limit = Rates_total - prev_calculates를 계산할 때 제한이 무엇인지 스스로 계산하십시오.

또한, 직접 처리하기 위해 아무 것도 할 필요가 없습니다. 이러한 계산은 필요한 값에서 세 가지 상태 각각으로의 주기를 시작합니다.

 
Artyom Trishkin :

왜 무례함? 나는 당신에게 무례하지 않았다.

나는 당신이 인용 한 라인과 그 조건이 어떤 경우에 충족되는지 대답했습니다.

그리고 세 가지 가능한 상태로 답변을 보완했으며 이 경우 수행되는 작업은 다음과 같습니다.

또한, 직접 처리하기 위해 아무 것도 할 필요가 없습니다. 이러한 계산은 필요한 값에서 세 가지 상태 각각으로의 주기를 시작합니다.

코드를 가져와 디버깅을 진행합니다. 그런 다음 자신에게 말하십시오. 이제 문제를 끝내고 적어도 세 가지 실수를 설명하십시오.

 
Vladimir Karputov :

코드를 가져와 디버깅을 진행합니다. 그런 다음 자신에게 말하십시오. 이제 문제를 끝내고 적어도 세 가지 실수를 설명하십시오.

아니요. 저는 바쁩니다. 나는 당신이 인용 한 줄에만 대답했습니다 - 거기에는 실수가 없습니다. 그런 다음 (눈으로 코드를 보았음) 그가 그것을 알아내도록 하십시오(오류가 있고 표면에 있습니다).

포럼 및 해당 서비스에는 이러한 구성에 대한 많은 예가 있습니다.

Viktor Nikolaev는 항상 그것을 사용했으며(또는 그가 게으르지 않다면 여전히 그것을 사용합니다), 그는 고대에 저에게 가르쳤습니다.

Victor Nikolaev
Victor Nikolaev
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin :

아니요. 저는 바쁩니다. 나는 당신이 인용 한 줄에만 대답했습니다 - 거기에는 실수가 없습니다. 그런 다음 (눈으로 코드를 보았음) 그가 그것을 알아내도록 하십시오(오류가 있고 표면에 있습니다).

포럼 및 해당 서비스에는 이러한 구성에 대한 많은 예가 있습니다.

Viktor Nikolaev는 항상 그것을 사용했으며(또는 그가 게으르지 않다면 여전히 그것을 사용합니다), 그는 고대에 저에게 가르쳤습니다.

휴대 전화가 아닌 컴퓨터에서 포럼을 읽는 것이 좋습니다. 그리고 즐겨찾기가 아닌 모든 메시지를 읽으십시오. 돕고 싶지 않다면 대화에 전혀 관여하지 마십시오.

 
Сергей Таболин :


다음은 예입니다. DRAW_COLOR_CANDLES를 기준으로 촛불의 크기가 지정된 크기보다 작으면 촛불을 그리지 않습니다.

주의: 이것은 수정된 지표 입니다. 원래는 높음과 낮음에 따라 양초를 그렸습니다. 그리고 아직 틱이 없습니다. DRAW_COLOR_CANDLES로 작업하는 예일 뿐입니다. 양초 크기가 지정된 크기보다 작으면 양초가 그려지지 않습니다.

 //+------------------------------------------------------------------+
//|                                             High Low Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots    1
//--- plot HLC_
#property indicator_label1    "High Low Candles"
#property indicator_type1    DRAW_COLOR_CANDLES
#property indicator_color1    clrLimeGreen , clrLavender
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- input parameters
input uint      InpMinSize     = 150 ;             // Candles: min size
//--- indicator buffers
double    OpenBuffer[];   // open
double    HighBuffer[];   // high
double    LowBuffer[];   // low
double    CloseBuffer[]; // close
double    Colors[];
//---
double    m_min_size           = 0.0 ;             // Candles: min size          -> double
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,OpenBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,HighBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,LowBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,CloseBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 4 ,Colors, INDICATOR_COLOR_INDEX );
//--- an empty value
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0.0 );
//--- set the display of the symbol
   string symbol= Symbol ();
   PlotIndexSetString ( 0 , PLOT_LABEL ,symbol+ " Open;" +symbol+ " High;" +symbol+ " Low;" +symbol+ " Close" );
   IndicatorSetString ( INDICATOR_SHORTNAME , "HLC (" +symbol+ ")" );
//---
   m_min_size=InpMinSize* Point ();
//---
   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[])
  {
//---
   int limit=prev_calculated- 1 ;
   if (prev_calculated== 0 )
      limit= 0 ;
   for ( int i=limit; i<rates_total; i++)
     {
      HighBuffer[i]=high[i];
      LowBuffer[i]=low[i];
       if (open[i]<close[i])
        {
         if (close[i]-open[i]>m_min_size)
           {
            OpenBuffer[i]=low[i];
            CloseBuffer[i]=high[i];
            Colors[i]= 1.0 ;
           }
         else
           {
            OpenBuffer[i]= 0.0 ;
            HighBuffer[i]= 0.0 ;
            LowBuffer[i]= 0.0 ;
            CloseBuffer[i]= 0.0 ;
            Colors[i]= 0.0 ;
           }
        }
       else
        {
         if (open[i]-close[i]>m_min_size)
           {
            OpenBuffer[i]=high[i];
            CloseBuffer[i]=low[i];
            Colors[i]= 0.0 ;
           }
         else
           {
            OpenBuffer[i]= 0.0 ;
            HighBuffer[i]= 0.0 ;
            LowBuffer[i]= 0.0 ;
            CloseBuffer[i]= 0.0 ;
            Colors[i]= 0.0 ;
           }
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+


결과:


파일:
 
Vladimir Karputov :

휴대 전화가 아닌 컴퓨터에서 포럼을 읽는 것이 좋습니다. 그리고 즐겨찾기가 아닌 모든 메시지를 읽으십시오. 돕고 싶지 않다면 대화에 전혀 관여하지 마십시오.

너 아프니? :)


 

여러분, Artyom과 Vladimir는 다투지 마십시오. 정말 아무 이유도 아닙니다...)))

이제 실수를 위해. 나는 이 기사 에서 읽은 내용을 시각화하기 위해 이 지표를 쓰기 시작했습니다. 그리고 한 달 전 목욕을 하고 나서 쓰기 시작했습니다. 제 실수를 스스로 찾아보는 시간을 가졌습니다. 찾을 수 없었기 때문에 여기에 도움을 요청했습니다.

코드에서 내가 틀린 부분을 보여달라고 요청했습니다. 그리고 바람직하게는 왜.

디버거를 사용할 수 없습니다. 나는 방법을 모른다. "관찰 가능 항목"에는 변수가 추가되지 않습니다(저는 이에 대해 포럼에서 꽤 오랫동안 썼습니다...).

플러그가 어디 있는지 알려주세요.

Дискретизация ценового ряда, случайная составляющая и "шумы"
Дискретизация ценового ряда, случайная составляющая и "шумы"
  • www.mql5.com
Классический способ представления ценовых движений в виде временных отрезков возник на заре становления финансовых рынков, когда еще не было компьютеров и вся торговля шла на реальных рынках, реальными товарами. Хранить каждое изменение цены в течении дня было трудно, да и не имело смысла, цены менялись не так быстро. Поэтому представлялось...
 
Сергей Таболин :

플러그가 어디 있는지 알려주세요.

코드 구성의 결함. 보려고 했으나 뇌가 이를 인지하지 못하는 방식으로 쓰여져 있다. 뭐가 잘못됐는지 어떻게 설명해야 할지 모르겠습니다.

나는 처음부터 순서대로 시작하라고만 조언할 수 있습니다.

  1. 모든 N 번째 촛불을 강조 표시하여 시작하십시오.
  2. 그런 다음 강조 표시할 촛불을 선택하기 위한 조건을 설정합니다.
그리고 마지막으로 디버거 사용법을 배웁니다.
사유: