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

[삭제]  
de_leonid :

도와 주셔서 감사합니다. 또한 EA에 EA의 이러한 행에서 값을 가져오는 방법의 예(코드의 일부)를 요청할 수 있습니다.

여기에서 나는 수평 또는 추세선에서 작업을 수행할 수 있는 https://www.mql5.com/en/code/34046 전문가의 눈을 멀게 했습니다.

Tymen_STARC_Bands_MTF 표시기에서 수평선의 이름을 찾아야 합니다.

여기 그들의 이름이 있습니다

 string    m_r2_name      = " Highest " ;
string    m_r1_name      = "Top" ;
string    m_0_name       = "Middle" ;
string    m_s1_name      = "Bottom" ;
string    m_s2_name      = "Lowest" ;

전문가에게 입력하고 명령을 설정하십시오.

여기

 sinput group "----------------- Trade Line UP ------------------------"
sinput ENUM_MODE          FilterLine_13              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES     InpPeriod_Up               = PERIOD_CURRENT ;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedUp         = open_buy;         // Trade command:
sinput string              InpNameAverageUp           = " Line Up " ;         // Line Name UP(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedUpLow      = open_sell;         // Trade command:
sinput bool                InpDelLineUp               = false ;             // Delete (Horizontal Line or Trend Line)
sinput double              InpObjStepTradeUp          = 0 ;                 // Obj: Distance from price to object, in pips
sinput color               InpObjAverageclrUp         = clrBlue ;           // EA only monitors this lines color
sinput group "----------------- Trade Line_2 UP ----------------------"
sinput ENUM_MODE          FilterLine_15              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES     InpPeriod_Up_2             = PERIOD_CURRENT ;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedUp_2       = open_buy;         // Trade command:
sinput string              InpNameAverageUp_2         = "Line_2 Up" ;       // Line Name UP(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedUpLow_2    = open_sell;         // Trade command:
sinput bool                InpDelLineUp_2             = false ;             // Delete (Horizontal Line or Trend Line)
sinput double              InpObjStepTradeUp_2        = 0 ;                 // Obj: Distance from price to object, in pips
sinput color               InpObjAverageclrUp_2       = clrBlue ;           // EA only monitors this lines color
sinput group "----------------- Trade Line DOWN ----------------------"
sinput ENUM_MODE          FilterLine_14              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES     InpPeriod_Down             = PERIOD_CURRENT ;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedDown       = open_buy;         // Trade command:
sinput string              InpNameAverageDown         = "Line Down" ;       // Line Name DOWN(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedDownLow    = open_sell;         // Trade command:
sinput bool                InpDelLineDown             = false ;             // Delete (Horizontal Line or Trend Line)
sinput double              InpObjStepTradeDown        = 0 ;                 // Obj: Distance from price to object, in pips
sinput color               InpObjAverageclrDown       = clrRed ;           // EA only monitors this lines color
sinput group "----------------- Trade Line_2 DOWN --------------------"
sinput ENUM_MODE          FilterLine_16              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES     InpPeriod_Down_2           = PERIOD_CURRENT ;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedDown_2     = open_buy;         // Trade command:
sinput string              InpNameAverageDown_2       = "Line_2 Down" ;     // Line Name DOWN(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedDownLow_2  = open_sell;         // Trade command:
sinput bool                InpDelLineDown_2           = false ;             // Delete (Horizontal Line or Trend Line)
sinput double              InpObjStepTradeDown_2      = 0 ;                 // Obj: Distance from price to object, in pips
sinput color               InpObjAverageclrDown_2     = clrRed ;           // EA only monitors this lines color
Algorithm manually automate
Algorithm manually automate
  • www.mql5.com
Эксперт для Автоматизации Ручной торговли.
[삭제]  
de_leonid :

도와 주셔서 감사합니다. 또한 EA에 EA의 이러한 행에서 값을 가져오는 방법의 예(코드의 일부)를 요청할 수 있습니다.

수평 또는 추세선에서 Expert Advisor의 기능 자체

여기 - ( 노란색으로 표시됨 - 라인 이름이 여기에 설정 됨)\\\\\\\\\\\\ 1분 동안 테스트 - 수평 또는 추세선을 수동으로 그리고 EA에서 동일한 이름을 설정하고 라인 그 자체.

 //+------------------------------------------------------------------+
//|                                                TrendOpenedUp.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
//---
sinput string InpNameAverageUp = " Line Up " ; // Line Name UP(Horizontal Line or Trend Line)
sinput bool    InpDelLineUp     = false ;     // Delete (Horizontal Line or Trend Line)
//---
datetime ExtPrevBarsUp;     // "0" -> D'1970.01.01 00:00';
datetime ExtLastAverageUp; // "0" -> D'1970.01.01 00:00';
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   TrendOpenedUp();
  }
//+------------------------------------------------------------------+
//| Check for long position opening                                  |
//+------------------------------------------------------------------+
bool TrendOpenedUp( void )
  {
   bool res= false ;
   datetime time_0= iTime ( Symbol (), Period (), 0 );
   if (time_0==ExtPrevBarsUp)
       return ( true );
   ExtPrevBarsUp=time_0;
     {
       if ( ObjectFind ( 0 , InpNameAverageUp )< 0 )
         return ( true );
       MqlRates ratesAverage[];
       ArraySetAsSeries (ratesAverage, true );
       int start_pos= 0 ,count= 3 ;
       if ( CopyRates ( Symbol (), Period (),start_pos,count,ratesAverage)!=count)
         return ( false );
       if (ratesAverage[ 0 ].time==ExtLastAverageUp)
         return ( true );
       double price_line= 0.0 ;
       long object_type= ObjectGetInteger ( 0 , InpNameAverageUp , OBJPROP_TYPE );
       if (object_type== OBJ_HLINE )
         price_line= ObjectGetDouble ( 0 , InpNameAverageUp , OBJPROP_PRICE );
       else
         if (object_type== OBJ_TREND )
            price_line= ObjectGetValueByTime ( 0 , InpNameAverageUp ,ratesAverage[ 1 ].time, 0 );
       double value_by_time=price_line;
       if (value_by_time== 0.0 )
         return ( true );
       if (ratesAverage[ 1 ].open<value_by_time && ratesAverage[ 1 ].close>value_by_time)
        {
         PlaySound ( "request.wav" );
         if (InpDelLineUp)
             ObjectsDeleteAll ( 0 , InpNameAverageUp );
         res= true ;
        }
       if (ratesAverage[ 1 ].open>value_by_time && ratesAverage[ 1 ].close<value_by_time)
        {
         PlaySound ( "tick.wav" );
         if (InpDelLineUp)
             ObjectsDeleteAll ( 0 , InpNameAverageUp );
         res= true ;
        }
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
[삭제]  
de_leonid :

도와 주셔서 감사합니다. 또한 EA에 EA의 이러한 행에서 값을 가져오는 방법의 예(코드의 일부)를 요청할 수 있습니다.

가장 간단하고 쉬운 방법은 지표에서 수평 또는 추세선의 이름을 가져오는 것입니다.

- 차트에서 마우스 오른쪽 버튼을 클릭하고 LIST OF OBJECTS 항목을 찾습니다 ( 복사하여 전문가에 붙여넣기 )

스냅 사진

 
안녕하세요 !
도움을 요청합니다. 이미 머리가 깨져서 다음을 구현하는 방법을 찾을 수 없습니다.
새 막대를 열 때 계산을 수행하십시오.
새 막대를 다시 열 때 다시 계산하고 모든 작업을 수행하십시오.
MQL 5에 대해 특별히 이 모든 것을 찾을 수는 없습니다.
도와주세요, 제발 !!!
 
mr LSV :
안녕하세요 !
도움을 요청합니다. 이미 머리가 깨져서 다음을 구현하는 방법을 찾을 수 없습니다.
새 막대를 열 때 계산을 수행하십시오.
새 막대를 다시 열 때 다시 계산하고 모든 작업을 수행하십시오.
MQL 5에 대해 특별히 이 모든 것을 찾을 수는 없습니다.
도와주세요, 제발 !!!
지표를 위한 것이라면 Rates_total 및 prev_calculated가 있습니다. Expert Advisor의 경우 mql4와 동일합니다.
 
Alexey Viktorov :
지표를 위한 것이라면 Rates_total 및 prev_calculated가 있습니다. Expert Advisor의 경우 mql4와 동일합니다.

그리고 짧은 코드 조각을 얻을 수 있습니까? 저는 초보자이고 머리는 이미 끓고 있습니다. 혼란스러운.

 
Alexey Viktorov :
지표를 위한 것이라면 Rates_total 및 prev_calculated가 있습니다. Expert Advisor의 경우 mql4와 동일합니다.

예, 이것은 지표용입니다.

 

Alexey Viktorov :
Если это для индикатора, то есть rates_total и prev_calculated. Если-же для советника, то так-же как и в mql4…


 if (rates_total > prev_calculated)
 Print ("Новый бар");

제대로 이해합니까?

 

양초의 열림은 9-12초의 지연으로 발생합니다.
말해주세요, 이것이 첫 번째 틱이 오는 것입니까?

새 양초의 첫 번째 눈금에 계산을 수행하고 모든 작업을 수행하는 것이 매우 중요합니다.

 2021.06 . 02 16 : 42 : 09.522 Test (Volatility 10 Index,M1)      Новый бар
2021.06 . 02 16 : 43 : 09.621 Test (Volatility 10 Index,M1)      Новый бар
2021.06 . 02 16 : 44 : 09.552 Test (Volatility 10 Index,M1)      Новый бар

 
mr LSV :

제대로 이해합니까?

 datetime fin= 0 , last= 0 ;

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[])
   {
   fin= iTime (symbol,frame, 0 );
   if (last==fin) return (rates_total);
   last=fin;