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

 

가장 간단한 항목을 작성하려고 합니다. 내가 원했던 대로 - 시작 가격이 패데니 포인트 수만큼 종가 보다 낮으면(이전 막대에서), 이익과 손절매를 고려하여 새 막대의 시작 부분에서 구매합니다. 하지만 뭔가 내가 원하는 대로 작동하지 않는 것 같습니다. 이해하도록 도와주세요


   MqlRates rt[ 1 ];

   if ( CopyRates ( _Symbol , _Period , 0 , 1 ,rt)!= 1 )
     {
       Print (" CopyRates of ", _Symbol ," failed, no history");
       return ;
     }
   
   ENUM_ORDER_TYPE signal= WRONG_VALUE ;

       if (rt[ 1 ].open - rt[ 1 ].close >= padenie) 
	 {
         signal= ORDER_TYPE_BUY ;
         printf (rt[ 1 ].open+"____"+rt[ 1 ].close);
         }
         
       if (signal != WRONG_VALUE && TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && Bars ( _Symbol , _Period )> 100 )
         ExtTrade.PositionOpen( _Symbol ,signal, 1 , SYMBOL_ASK , SymbolInfoDouble ( _Symbol , SYMBOL_BID )-sl, SymbolInfoDouble ( _Symbol , SYMBOL_ASK )+tp);
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
BorisD :

가장 간단한 항목을 작성하려고 합니다. 내가 원했던 대로 - 시작 가격이 패데니 포인트 수만큼 종가 보다 낮으면(이전 막대에서), 이익과 손절매를 고려하여 새 막대의 시작 부분에서 구매합니다. 하지만 뭔가 내가 원하는 대로 작동하지 않는 것 같습니다. 이해하도록 도와주세요


실수 1: 하나의 요소를 복사하고 있으므로 요소 인덱스는 [0]이 됩니다.

오픈 100, 클로즈 105 - 강세 막대. 시가 - 시가 = 100 - 105 = - 5. 결과가 음수이므로 '-5'는 항상 주어진 값보다 작습니다.

시가 110, 종가 103 - 약세 막대. Open - Close = 110 - 103 = 7. '7'은 양수이며 이미 올바르게 작동합니다.


결론: 지수에 대한 참조를 고정하십시오([1] 대신 지수 [0]을 참조해야 합니다. 계산하기 전에 양초 유형: 강세 또는 약세를 고려하십시오.

 

DRAW_HISTOGRAM2 구성에 대한 질문을 계속합니다.

예시:

 // Индикатор Проба DRAW_HISTOGRAM2.mq5
//+------------------------------------------------------------------+
#property indicator_chart_window                    
#property indicator_buffers    20                     
#property indicator_plots      20                   

#property indicator_color1      clrOrange                 
#property indicator_color2      clrOrange                
#property indicator_color3      clrLimeGreen         
#property indicator_color4      clrLimeGreen         

#property indicator_type5      DRAW_HISTOGRAM2
#property indicator_color5      clrOrange                
#property indicator_type6      DRAW_HISTOGRAM2
#property indicator_color6      clrLimeGreen         

//#property indicator_color9    clrRed                

double
   Line_High_Up[], Line_High_Dn[], Hist_High_Up[], Hist_High_Dn[],
   Line_Low_Up[],  Line_Low_Dn[],  Hist_Low_Up[],  Hist_Low_Dn[],  Line_Red[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit () 
   { 
   SetIndexBuffer      ( 0 , Line_High_Up,       INDICATOR_DATA ); 
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE ,     DRAW_LINE );      
   SetIndexBuffer      ( 1 , Line_High_Dn,       INDICATOR_DATA ); 
   PlotIndexSetInteger ( 1 , PLOT_DRAW_TYPE ,     DRAW_LINE );      

   SetIndexBuffer      ( 2 , Line_Low_Up,       INDICATOR_DATA );
   PlotIndexSetInteger ( 2 , PLOT_DRAW_TYPE ,     DRAW_LINE );     
   SetIndexBuffer      ( 3 , Line_Low_Dn,       INDICATOR_DATA );
   PlotIndexSetInteger ( 3 , PLOT_DRAW_TYPE ,     DRAW_LINE );     

   SetIndexBuffer      ( 4 , Hist_High_Up,       INDICATOR_DATA ); 
   SetIndexBuffer      ( 5 , Hist_High_Dn,       INDICATOR_DATA );

   SetIndexBuffer      ( 6 , Hist_Low_Up,       INDICATOR_DATA );
   SetIndexBuffer      ( 7 , Hist_Low_Dn,       INDICATOR_DATA );

   //SetIndexBuffer     (8, Line_Red,          INDICATOR_DATA);
   //PlotIndexSetInteger(8, PLOT_DRAW_TYPE,    DRAW_LINE);     
   }
//+------------------------------------------------------------------+
//| 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 i;
   for (i=prev_calculated; i<=rates_total- 1 ; i++)      
      {
      Line_High_Up[i] = high[i] + 50 * _Point ;
      Line_High_Dn[i] = high[i] + 30 * _Point ;
      Line_Low_Up[i]  = low[i]  - 30 * _Point ;
      Line_Low_Dn[i]  = low[i]  - 50 * _Point ;

      Hist_High_Up[i] = Line_High_Up[i];
      Hist_High_Dn[i] = Line_High_Dn[i];
      Hist_Low_Up[i]  = Line_Low_Up[i];
      Hist_Low_Dn[i]  = Line_Low_Dn[i];
      
       //Line_Red[i]     = low[i]  - 70*_Point;
      }
   return (i- 1 );
   }           
//+------------------------------------------------------------------+

제시된 지표에서 우리는 두 히스토그램을 모두 구축할 수 있었습니다. 다음은 예상치 못한 기능입니다.

레코드의 일반 라인의 경우 #property indicator_colorn, #property indicator_typen 등 값 n은 버퍼 인덱스 보다 1 더 큽니다.
또한 버퍼 인덱스가 행에 지정되지 않고 인접한 버퍼 사이에 여유 공간이 있는 경우에도 이 요구 사항이 유지됩니다.
예를 들어 인덱스 0, 1, 2, 3, 8을 사용하면 다섯 줄 모두 안전하게 표시됩니다.

DRAW_HISTOGRAM2 유형의 구성에는 다음과 같은 다른 요구 사항이 있습니다.
히스토그램이 행에 지정된 경우 #property indicator_colorn, #property indicator_typen 등의 항목이 있습니다.
n 값은 버퍼 인덱스가 아니라 숫자 개수에서 계산됩니다. 예에서는 논리적으로 5와 7이 예상되지만 인덱스 5와 6이 지정됩니다.

이 모든 넌센스는 두 개의 히스토그램을 따라가는 일반 선(빨간색)에 대해 n의 값이 무엇이어야 하는지를 이해하는 것이 전혀 불가능하다는 사실로 이어집니다.
이 예에서는 n=9 값이 지정되었지만 작동하지 않으므로 버퍼 8과 관련된 모든 행이 주석 처리됩니다. n의 다른 값에서도 작동하지 않았습니다.

결론: 모든 히스토그램은 버퍼 목록 끝에 있는 행에 나열되어야 합니다. 더욱이, 그들의 값은 (버퍼의 인덱스에도 불구하고) 정량적 계정에 따라 단순히 연속적으로 계산되어야 합니다.
당신은 그것을 이해할 수 없지만 당신은 그것을 가지고 살 수 있습니다.

통과 중: INDICATOR_CALCULATIONS 및 INDICATOR_DATA 유형의 버퍼 순서 영향이 감지되지 않았습니다.

문제 해결에 참여해 주신 Vladimir Karputov와 Artyom Trishkin에게 감사드립니다.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
User_mt5 :

DRAW_HISTOGRAM2 구성에 대한 질문을 계속합니다.

예시:

제시된 지표에서 우리는 두 히스토그램을 모두 구축할 수 있었습니다. 예상치 못한 기능은 다음과 같습니다.

레코드의 일반 라인의 경우 #property indicator_colorn, #property indicator_typen 등 값 n은 버퍼 인덱스 보다 1 더 큽니다.
또한 버퍼 인덱스가 행에 지정되지 않고 인접한 버퍼 사이에 여유 공간이 있는 경우에도 이 요구 사항이 유지됩니다.
예를 들어 인덱스 0, 1, 2, 3, 8을 사용하면 다섯 줄 모두 안전하게 표시됩니다.

DRAW_HISTOGRAM2 유형의 구성에는 다음과 같은 다른 요구 사항이 있습니다.
히스토그램이 행에 지정된 경우 #property indicator_colorn, #property indicator_typen 등의 항목이 있습니다.
n 값은 버퍼 인덱스가 아니라 숫자 개수에서 계산됩니다. 예에서는 논리적으로 5와 7이 예상되지만 인덱스 5와 6이 지정됩니다.

이 모든 넌센스는 두 개의 히스토그램 다음에 오는 일반 선(빨간색)에 대한 인덱스가 무엇이어야 하는지를 전혀 이해하는 것이 불가능하다는 사실로 이어집니다.
이 예에서는 n=9 값이 지정되었지만 작동하지 않으므로 버퍼 8과 관련된 모든 행이 주석 처리됩니다. n의 다른 값에서도 실패했습니다.

결론: 모든 히스토그램은 버퍼 목록 끝에 있는 행에 나열되어야 합니다. 더욱이, 그들의 값은 (버퍼의 인덱스에도 불구하고) 정량적 계정에 따라 단순히 연속적으로 계산되어야 합니다.
당신은 그것을 이해할 수 없지만 당신은 그것을 가지고 살 수 있습니다.

통과 중: INDICATOR_CALCULATIONS 및 INDICATOR_DATA 유형의 버퍼 순서 영향이 감지되지 않았습니다.

문제 해결에 참여해 주신 Vladimir Karputov와 Artyom Trishkin에게 감사드립니다.

물론이죠. 하지만 문제를 해결하지 못했습니다.

표시기는 다른 유형의 버퍼 순서에 의존하지 않습니다. 계산된 것들만 그려진 것들 뒤에 와야 합니다.

 
Artyom Trishkin :

물론이죠. 그러나 당신은 문제를 해결하지 않았습니다.

표시기는 다른 유형의 버퍼 순서에 의존하지 않습니다. 계산된 것들만 그려진 것들 뒤에 와야 합니다.

많은 확신은 없지만 여전히 나는 이 두 진술이 모두 틀렸다고 믿습니다.

"의존성 없음" 때문입니다. 나는 마지막 예에서 8번째 버퍼를 표시하는 데 어떤 식으로든 성공하지 못했습니다. 이 주문은 무엇이어야합니까 .. 어쩌면 당신은 그것을 할 수 있습니까?

"그려진 후 계산된 .."를 희생하여. 내 지표에는 200개 이상의 버퍼가 사용되며 그 중 처음 100개는 계산된 버퍼입니다.
제 경우에는 이것들이 모두 단순한 줄이므로 #property에 대한 n의 계산은 버퍼 인덱스 의 값인 n=b+1을 기반으로 합니다. 그리고 간단한 라인이 표시됩니다. 오해는 히스토그램의 출현으로 시작됩니다.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
User_mt5 :

많은 확신은 없지만 여전히 나는 이 두 진술이 모두 틀렸다고 믿습니다.

"의존성 없음" 때문입니다. 나는 마지막 예에서 8번째 버퍼를 표시하는 데 어떤 식으로든 성공하지 못했습니다. 이 주문은 무엇이어야합니까 .. 어쩌면 당신은 그것을 할 수 있습니까?

"그려진 후 계산된 .."를 희생하여. 내 지표에는 200개 이상의 버퍼가 사용되며 그 중 처음 100개는 계산된 버퍼입니다.
제 경우에는 이것들이 모두 단순한 줄이므로 #property에 대한 n의 계산은 버퍼 인덱스 의 값인 n=b+1을 기반으로 합니다. 그리고 간단한 라인이 표시됩니다. 오해는 히스토그램의 출현으로 시작됩니다.

나는 논쟁하지 않을 것이다. 나는 절대적으로 어떤 순서로 드로어블 버퍼를 생성합니다. 그러나 그들 사이에 계산 버퍼가 추가되자마자 그려진 지표의 그래픽 구성은 더 이상 차트에 표시되지 않습니다. 해당 값은 데이터 창에 남아 있습니다. 기사에서 지표 및 해당 버퍼의 생성을 설명하기 위해 많은 테스트를 수행했습니다. 계산된 버퍼(지시자 버퍼의 선언 순서대로 배열)만이 그려진 버퍼의 표시/비표시에 어떻게든 영향을 미친다는 결론에 도달했습니다.

 
Artyom Trishkin :

나는 논쟁하지 않을 것이다. 나는 절대적으로 어떤 순서로 드로어블 버퍼를 생성합니다. 그러나 그들 사이에 계산 버퍼가 추가되자마자 그려진 지표의 그래픽 구성은 더 이상 차트에 표시되지 않습니다. 해당 값은 데이터 창에 남아 있습니다. 기사에서 지표 및 해당 버퍼의 생성을 설명하기 위해 많은 테스트를 수행했습니다. 계산된 버퍼(지시자 버퍼 선언 순서대로 배열)만이 그려진 버퍼의 표시/비표시에 어떻게든 영향을 미친다는 결론에 도달했습니다.

나도 잘 모르겠다.

얼마 전부터(지난 3~4개월), 일반적으로 심볼 창에서 이해할 수 없고 놀라운 현상이 발생했습니다.

첫째, 지표의 구성은 명백한 이유 없이 예를 들어 아래 또는 오른쪽과 같이 임의의 방향으로 단순히 이동할 수 있다는 점에 대해 반복적으로 언급되었습니다. 새로운 진드기에, 전체 지표 bam! 그리고 움직였다. 때로는 처음에 같은 일이 발생합니다. PC.

둘째, 일부 버퍼가 삭제되고 컴파일이 수행되면 설명되지 않는 이벤트(TF 앞뒤로 전환, 새 재컴파일, 설정 업데이트 등)가 발생할 때까지 이러한 원격 빌드의 "추적"이 남아 있습니다. 아마도 데이터 창 에서 너무 "추적" 과거의 기억인 남아(기술적으로 어레이는 강제로 정리될 뿐이며 MT 5에서는 어레이가 필요하지 않은 경우 단순히 "레지스터에서 제거"되지만 데이터는 남아 있습니다. 물론 이 모든 MT5 글리치임)
--

농담이 있습니다. 우리 조국의 역사는 예측할 수 없습니다. MT5에 대해서도 마찬가지입니다. 너무 신비롭습니다. :)
--

그건 그렇고, 이제 최근 진술에 따라 실제 지표를 변경했습니다. 작동하지 않습니다. 배열을 반영하기 위해 DRAW_HISTOGRAM2 및 INDICATOR_CALCULATIONS를 추가했습니다. 작동했습니다.

Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
 
User_mt5 :


MQL5 마법사를 사용하여 Expert Advisor 공백을 만들 필요가 없습니다. 이렇게 하면 그래픽 플롯과 표시기 배열을 선언할 때 오류를 최소화할 수 있습니다.

 
User_mt5 :

나도 잘 모르겠다 .

얼마 전부터(지난 3~4개월), 일반적으로 심볼 창에서 이해할 수 없고 놀라운 현상이 발생했습니다.

첫째, 지표의 구성은 명백한 이유 없이 예를 들어 아래 또는 오른쪽과 같이 임의의 방향으로 단순히 이동할 수 있다는 점에 대해 반복적으로 언급되었습니다. 새로운 진드기에 전체 지표 bam! 그리고 움직였다. 때로는 처음에 같은 일이 발생합니다. PC.

둘째, 일부 버퍼가 삭제되고 컴파일이 수행되면 설명되지 않는 이벤트(TF 앞뒤로 전환, 새 재컴파일, 설정 업데이트 등)가 발생할 때까지 이러한 원격 빌드의 "추적"이 남아 있습니다. 아마도 데이터 창 에서 너무 "추적" 과거의 기억인 남아(기술적으로 어레이는 강제로 정리될 뿐이며 MT 5에서는 어레이가 필요하지 않은 경우 단순히 "레지스터에서 제거"되지만 데이터는 남아 있습니다. 물론 이 모든 MT5 글리치임)
--

농담이 있습니다. 우리 조국의 역사는 예측할 수 없습니다. MT5에 대해서도 마찬가지입니다. 너무 신비롭습니다. :)
--

그건 그렇고, 이제 최근 진술에 따라 실제 지표를 변경했습니다. 작동하지 않습니다. 배열을 반영하기 위해 DRAW_HISTOGRAM2 및 INDICATOR_CALCULATIONS를 추가했습니다. 작동했습니다.

나에 대한 것이 아닙니다 .

나머지는 당신의 실수와 부주의입니다 (지시선의 변위를 제외하고는 메모리가 제공되면 이미 수정 된 것 같습니다)

어떤 빌드가 있습니까?

 
Vladimir Karputov :

MQL5 마법사를 사용하여 Expert Advisor 공백을 만들 필요가 없습니다. 이렇게 하면 그래픽 플롯과 표시기 배열을 선언할 때 오류를 최소화할 수 있습니다.

마지막 예에서 8번째 버퍼를 올바르게 반영하는 방법을 알려주실 수 있습니까? 주도권 없이?
규칙을 말할 수 있습니까?

Artyom Trishkin :

나에 대한 것이 아닙니다 .

나머지는 당신의 실수와 부주의입니다 (지시선의 변위를 제외하고는 메모리가 제공되면 이미 수정 된 것 같습니다)

어떤 빌드가 있습니까?

마지막 예에서 8번째 버퍼를 올바르게 반영하는 방법을 알려주실 수 있습니까? 모든 주의와 함께?
그리고 이유를 댈까요?
빌드 2530.

--
저는 아직 배우는 중이므로 문서에서 이 모든 내용을 읽을 수 있는 위치를 지정해 주시면 대단히 감사하겠습니다.

사유: