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

 
Artyom Trishkin :
이것은 EA 설정 창의 표준 설정과 아무 관련이 없는 단순한 소프트웨어 제한 사항입니다. 이러한 설정 은 EA 설정 에 속하며 EA에서 제어됩니다.

감사합니다. 이제 작동 방식을 이해했습니다.

 
Alexandr Sokolov :
코드에서 TP 또는 SL에 도달했을 때 손익 값을 얻는 방법은 무엇입니까?

예를 들어, margin을 얻을 수 있는 AccountFreeMarginCheck() 함수가 있습니다. 그리고 적어도 지정된 기호, 볼륨 및 주문 유형에 대한 포인트 비용을 결정하는 기능이 없습니다.

MQL4

https://www.mql5.com/ru/forum/131859/page3

여기에서 검색하십시오. 많은 기능이 있습니다. 어쩌면 당신이 스스로 고칠 수 있고 그것은 정상일 것입니다

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

그런데 TF 일정을 추정할 때 재계산 기능을 어떻게 설정해야 할까요?

 
Lomonosov1991 :

그런데 TF 일정을 추정할 때 재계산 기능을 어떻게 설정해야 할까요?

문서 도 있습니다 . 때때로 뒤집을 수 있습니다. UninitializeReason() 함수가 있으며 초기화 해제 이유 코드를 반환합니다. 그리고 심지어 예도 있습니다.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
//| get text description                                             | //| Expert deinitialization function                                 |
 

좋은 저녁이에요. 친구의 요청으로 표준 MT5 스토캐스틱 지표에서 Stoch_HISTOGRAM_MQL5_3 수정 버전을 만들었습니다.

이 버전에서 표시기는 히스토그램으로 표시됩니다. 동지는 50 이상의 막대는 녹색, 그 이하의 막대는 빨간색으로 요청했습니다.

나에게 이것은 완전히 새로운 경험이고 히스토그램에 대처한 것 같지만 색상을 전환하는 방법을 이해하지 못하고 뇌가 폭발했습니다. 도움말 조언 pliz.

아래에 코드를 붙여넣고 파일을 첨부하겠습니다.

 //+------------------------------------------------------------------+
//|                                       Stoch_HISTOGRAM_MQL5_3.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009-2017, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots    3
#property indicator_type1    DRAW_LINE
#property indicator_type2    DRAW_LINE
#property indicator_type3    DRAW_HISTOGRAM2
#property indicator_type4    DRAW_HISTOGRAM2
#property indicator_color1   LightSeaGreen
#property indicator_color2   Blue
#property indicator_color3   Green
#property indicator_style2    STYLE_DOT
#property indicator_style3    STYLE_SOLID
//--- input parameters
input int InpKPeriod= 5 ;   // K period
input int InpDPeriod= 3 ;   // D period
input int InpSlowing= 3 ;   // Slowing
//--- indicator buffers
double     ExtMainBuffer[];
double     ExtSignalBuffer[];
double     HISTOGRAM2_1[];
double     HISTOGRAM2_2[];
double     ExtHighesBuffer[];
double     ExtLowesBuffer[];
color      colors[]={ clrRed , clrGreen };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtMainBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtSignalBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,HISTOGRAM2_1, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,HISTOGRAM2_2, INDICATOR_DATA );
   SetIndexBuffer ( 4 ,ExtHighesBuffer, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 5 ,ExtLowesBuffer, INDICATOR_CALCULATIONS );
//--- set accuracy
   IndicatorSetInteger ( INDICATOR_DIGITS , 2 );
//--- set levels
   IndicatorSetInteger ( INDICATOR_LEVELS , 3 );
   IndicatorSetDouble ( INDICATOR_LEVELVALUE , 0 , 20 );
   IndicatorSetDouble ( INDICATOR_LEVELVALUE , 1 , 50 );
   IndicatorSetDouble ( INDICATOR_LEVELVALUE , 2 , 80 );
////--- установим пустое значение для HISTOGRAM2
//   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);   
//--- set maximum and minimum for subwindow 
   IndicatorSetDouble ( INDICATOR_MINIMUM , 0 );
   IndicatorSetDouble ( INDICATOR_MAXIMUM , 100 );
//--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "Stoch_HISTOGRAM(" +( string )InpKPeriod+ "," +( string )InpDPeriod+ "," +( string )InpSlowing+ ")" );
   PlotIndexSetString ( 0 , PLOT_LABEL , "Main" );
   PlotIndexSetString ( 1 , PLOT_LABEL , "Signal" );
   PlotIndexSetString ( 2 , PLOT_LABEL , "UP" );
   PlotIndexSetString ( 3 , PLOT_LABEL , "LOW" );
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,InpKPeriod+InpSlowing- 2 );
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN ,InpKPeriod+InpDPeriod);
   PlotIndexSetInteger ( 2 , PLOT_DRAW_BEGIN ,InpKPeriod+InpSlowing- 2 );
   PlotIndexSetInteger ( 3 , PLOT_DRAW_BEGIN ,InpKPeriod+InpSlowing- 2 );
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Stochastic Oscillator                                            |
//+------------------------------------------------------------------+
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,k,start;
//--- check for bars count
   if (rates_total<=InpKPeriod+InpDPeriod+InpSlowing)
       return ( 0 );
//---
   start=InpKPeriod- 1 ;
   if (start+ 1 <prev_calculated) start=prev_calculated- 2 ;
   else
     {
       for (i= 0 ;i<start;i++)
        {
         ExtLowesBuffer[i]= 0.0 ;
         ExtHighesBuffer[i]= 0.0 ;
        }
     }
//--- calculate HighesBuffer[] and ExtHighesBuffer[]
   for (i=start;i<rates_total && ! IsStopped ();i++)
     {
       double dmin= 1000000.0 ;
       double dmax=- 1000000.0 ;
       for (k=i-InpKPeriod+ 1 ;k<=i;k++)
        {
         if (dmin>low[k])  dmin=low[k];
         if (dmax<high[k]) dmax=high[k];
        }
      ExtLowesBuffer[i]=dmin;
      ExtHighesBuffer[i]=dmax;
     }
//--- %K
   start=InpKPeriod- 1 +InpSlowing- 1 ;
   if (start+ 1 <prev_calculated) start=prev_calculated- 2 ;
   else
     {
       for (i= 0 ;i<start;i++) ExtMainBuffer[i]= 0.0 ;
     }
//--- main cycle
   for (i=start;i<rates_total && ! IsStopped ();i++)
     {
       double sumlow= 0.0 ;
       double sumhigh= 0.0 ;
       for (k=(i-InpSlowing+ 1 );k<=i;k++)
        {
         sumlow +=(close[k]-ExtLowesBuffer[k]);
         sumhigh+=(ExtHighesBuffer[k]-ExtLowesBuffer[k]);
        }
       if (sumhigh== 0.0 ) ExtMainBuffer[i]= 100.0 ;
         else           ExtMainBuffer[i]=sumlow/sumhigh* 100 ;
       if (ExtMainBuffer[i]> 50 ){
         HISTOGRAM2_1[i]= 50 ; 
         HISTOGRAM2_2[i]=ExtMainBuffer[i]; 
         //colors[i]=clrGreen;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrGreen);
         } 
       if (ExtMainBuffer[i]< 50 ){
         HISTOGRAM2_1[i]=ExtMainBuffer[i]; 
         HISTOGRAM2_2[i]= 50 ; 
         //colors[i]=clrRed;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrRed);
         } 
       //PlotIndexSetInteger(2,PLOT_LINE_COLOR,colors[i]);
     }
//--- signal
   start=InpDPeriod- 1 ;
   if (start+ 1 <prev_calculated) start=prev_calculated- 2 ;
   else
     {
       for (i= 0 ;i<start;i++) ExtSignalBuffer[i]= 0.0 ;
     }
   for (i=start;i<rates_total && ! IsStopped ();i++)
     {
       double sum= 0.0 ;
       for (k= 0 ;k<InpDPeriod;k++) sum+=ExtMainBuffer[i-k];
      ExtSignalBuffer[i]=sum/InpDPeriod;
     }
//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }
//+------------------------------------------------------------------+
파일:
 
Sergey Voytsekhovsky :

좋은 저녁이에요. 친구의 요청으로 표준 MT5 스토캐스틱 지표에서 Stoch_HISTOGRAM_MQL5_3 수정 버전을 만들었습니다.

이 버전에서 표시기는 히스토그램으로 표시됩니다. 동지는 50 이상의 막대는 녹색, 그 이하의 막대는 빨간색으로 요청했습니다.

나에게 이것은 완전히 새로운 경험이고 히스토그램에 대처한 것 같지만 색상을 전환하는 방법을 이해하지 못하고 뇌가 폭발했습니다. 도움말 조언 pliz.

아래에 코드를 붙여넣고 파일을 첨부하겠습니다.

정말 놀랍습니다. 문서를 읽고 DRAW_HISTOGRAM2를 보고 DRAW_COLOR_HISTOGRAM2를 보지 않는 방법

예, 추가 버퍼가 발표되었습니다.
 
Alexey Viktorov :

정말 놀랍습니다. 문서를 읽고 DRAW_HISTOGRAM2를 보고 DRAW_COLOR_HISTOGRAM2를 보지 않는 방법

예, 추가 버퍼가 발표되었습니다.

댓글 감사합니다. 오오오오, 문서를 읽을 때, 터치로 방법과 솔루션을 찾을 때, 안개 속에 있는 것처럼, 선생님, 멘토, 경험 많은 친구 등이 없을 때 얼마나 많은 것을 눈치채지 못했는지 상상조차 할 수 없습니다. 감사합니다. 이미 DRAW_COLOR_HISTOGRAM2를 찾았습니다. 의미를 깨달았습니다. 바로 다시 실행하겠습니다.

추가 버퍼에 대해 더 자세히 설명할 수 있습니까? 경험은 결코 불필요한 것이 아니며 버퍼는 분명히 불필요한 것입니다. :-0

 
Sergey Voytsekhovsky :

댓글 감사합니다. 오오오오, 문서를 읽을 때, 터치로 방법과 솔루션을 찾을 때, 안개 속에 있는 것처럼, 선생님, 멘토, 경험 많은 친구 등이 없을 때 얼마나 많은 것을 눈치채지 못했는지 상상조차 할 수 없습니다. 감사합니다. 이미 DRAW_COLOR_HISTOGRAM2를 찾았습니다. 의미를 깨달았습니다. 바로 다시 실행하겠습니다.

추가 버퍼에 대해 더 자세히 설명할 수 있습니까? 경험은 결코 불필요한 것이 아니며 버퍼는 분명히 불필요한 것입니다. :-0

음... 확률에 버퍼가 2개 있으면 내 메모리 칩이 모두 소진됩니다. 더 정확하게는 2개의 구성입니다. 따라서 히스토그램 형태의 디스플레이로 대체하여 저장하면 됩니다. 실제로 DRAW_COLOR_HISTOGRAM2의 두 가지 구성에는 6개의 버퍼가 필요합니다. 그러나 양에 대해 말했지만 나는이 라인을 의미했습니다.

 #property indicator_type1    DRAW_LINE
#property indicator_type2    DRAW_LINE
#property indicator_type3    DRAW_HISTOGRAM2
#property indicator_type4    DRAW_HISTOGRAM2

내 생각에는 그래야 한다

 #property indicator_buffers 5
#property indicator_plots    2
#property indicator_type1    DRAW_COLOR_HISTOGRAM2 // основная 
#property indicator_type2    DRAW_LINE              // сигнальная
#property indicator_color1    clrGreen , clrRed        // цвет гистограмм
#property indicator_color2    clrBlue                // цвет линии
 

모두를 환영합니다!
당신이 알고 있다면 말해.

보시다시피, 녹색(Vigor=0.1154)은 빨간색(Signal=0.1133)을 넘지 않았지만 판매가 이루어졌습니다. 그리고 이것은 고립된 경우가 아닙니다.

여기 또 하나...

여기서 그들은 적어도 "병합"되었지만 여전히 Vigor=0.0543 및 Signal=0.0525입니다.

모든 것이 모든 곳에서 "정규화"됩니다.

이 조건에 대한 코드: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S(신호-빨강), 각각 RVI_S_M(활기-녹색).

누군가가 가치 있는 말을 할 수 있다면 - 나는 매우 감사할 것입니다.

 
KrasAleks :

모두를 환영합니다!
아시는 분은 말씀해 주십시오.

보시다시피, 녹색(Vigor=0.1154)은 빨간색(Signal=0.1133)을 넘지 않았지만 판매가 이루어졌습니다. 그리고 이것은 고립된 경우가 아닙니다.

여기 또 하나...

여기에서 그들은 적어도 "병합"되었지만 여전히 Vigor=0.0543 및 Signal=0.0525입니다.

모든 곳에서 모든 것이 "정규화"됩니다.

이 조건에 대한 코드: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S(신호-빨강), 각각 RVI_S_M(활기-녹색).

가치 있는 말을 할 수 있는 사람이 있다면 정말 감사하겠습니다.

교차로가 있었을 가능성이 높지만 다시 그렸습니다.
양초가 닫힌 후 신호를 확인해야 합니다.