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

 
tsd Tsepkov :

이름, 성에 대해 이야기하는 것입니다. 이름을 실제 이름으로 변경해야한다고 나와 있지만 작동하지 않습니다.

예, "판매자" 상태인 경우 데이터를 수정할 수 없습니다.

설명과 함께 서비스 데스크에 요청을 작성하십시오.

 
Vladimir Karputov :

예, "판매자" 상태인 경우 데이터를 수정할 수 없습니다.

설명과 함께 서비스 데스크에 요청을 작성하십시오.

문제의 사실은 아니요, 하나가 되려면 편집해야 한다는 것입니다. 악순환...

판매자 등록 신청 이 중재자에 의해 거부되었습니다.

제공한 정보를 수정하십시오.

 
tsd Tsepkov :

***

제공한 정보를 수정하십시오 .

아마도 이것이 이유입니까? 사진이 비뚤어지거나 어둡거나 요구 사항에 따라 만들어지지 않습니다 ...

 
tsd Tsepkov :

문제의 사실은 아니요, 하나가 되려면 편집해야 한다는 것입니다. 악순환...

귀하의 판매자 등록 신청 이 중재자에 의해 거부되었습니다.

제공한 정보를 수정하십시오.

글쎄, 문제에 대해 서비스 데스크에 쓰십시오. 포럼의 레일을 두드리는 것보다 더 생산적입니다 ;)
 
VHS :

MQL5에서 프로그래밍할 때 void Ignore(long value) { m_ignore=value; 메서드를 사용하는 방법을 알려주세요. } 사용자 정의 Trailing 클래스의 표준 CExpertSignal 클래스? 액세스하려면 어떻게 해야 하나요?

위치를 열고 닫는 방법을 제공하는 사용자 정의 신호 클래스가 있습니다. 그러나 후행에서는 다른 방법을 사용하여 위치를 추적하고 싶었습니다. 사용자 정의 클래스 MySignal과 MyTrailing을 별도로 작성하면 먼저 작동한 조건에 따라 위치가 닫힙니다. 후행 조건이 더 일찍 작동했다면 모든 것이 정상입니다. 그러나 때때로 MySignal에서 새로운(역) 신호가 도착하고 위치가 반전되는데, 개봉 후에는 닫히지 않고 새 것이 열리지 않는 후행을 동반해야 합니다. 기본 클래스를 보고 신호 기본 클래스의 m_ignore가 이에 대한 책임이 있다는 느낌을 받았습니다. 해당 필터에서 값 1이 할당되면 아마도 정상적으로 작동할 것입니다. OnInit의 전문가 클래스에 filter0.Ignore(0)을 추가했습니다. 그러나 나는 OOP를 처음 사용하고 CExpertSignal 클래스 에서 상속되지 않았지만 "사촌"인 MyTrailing 클래스에서 어떻게 이해할 수 없습니까? 이 값을 변경하십시오(조건부로 filter0.Ignore(1)). 방법을 알려주세요.

사실, 더 일반적인 질문: 상속자가 아닌 두 클래스 간에 정보를 전송하는 방법은 무엇입니까? 후행 클래스에서 신호 클래스로 정보를 전달하는 방법은 무엇입니까? 아마도 전역 변수를 만들고 이를 통해 통신할 수 있습니다. 그러나 이것은 OOP에서 보호된 구성원의 논리와 관련하여 상당히 왜곡된 것처럼 보입니다.


누군가를 도와주세요! 이미 내장된 Ignore에서 벗어나려고 했지만(물론 그 자체로는 좋지 않으며 사람들은 기본 코드에 이를 포함하려고 시도했습니다) 여전히 어떤 식으로든 도킹할 수 없습니다. 사흘 동안 나는 발명을 하고 있다(교과서가 없다).

클래스 코드도 수정했습니다. MySignal 클래스에 보호된 부울 멤버(m_permition)를 도입하고 이에 대한 Set 메서드를 만들고 longcondition 및 shortcondition에 !m_permition if !m_permition을 추가했습니다. MyTrailing에서 보호된 부울 멤버 m_signal_permition도 만들고 이에 대한 Get 및 Set 메서드를 만들고 CheckTrailings에서 관리하도록 가르쳤습니다. if(position==NULL) {m_signal_permition = true; 반환(거짓);} 그렇지 않으면 m_signal_permition = 거짓;

나는 한 가지만 이해하지 못합니다. 어디서, 어떻게 그것들을 하나로 모으십시오. 방금 OnTick에서 참조하려고 했지만 작동하지 않습니다.

나는 Vladimir의 기사 "가르치는 법 ..."을 읽었습니다. 사용자 정의 신호에서 다른 신호의 인스턴스를 만들고 이를 통해 통신하는 아이디어는 이해할 수 있지만 어딘가에는 나와 완전히 맞지 않는 것 같습니다. 신호 및 후행 클래스는 서로 상속되지 않습니다.

도움이 되십시오.

 

안녕 동료들. MT5 견적에는 보호 가격 외에도 과거 스프레드 및 슬리피지(기본적으로 모든 곳에서 동일하며 10 5자리 포인트)와 같은 데이터가 있습니다.

포지션을 개설한 후 이러한 요청을 함으로써:

 Print ( "Expert name: " , __FILE__ , ", Открыта поза Sell с магиком №: " , IntegerToString (m_trade.RequestMagic()), ", Cпред " , SymbolInfoInteger ( _Symbol , SYMBOL_SPREAD ),
", Deviation " , IntegerToString (m_trade.RequestDeviation()));

다음과 같은 응답을 받습니다.

MT4에서처럼 MT5 테스터가 스프레드와 슬리피지를 함께 계산한다는 것을 올바르게 이해하고 있습니까? 스크린샷의 특정 예에 대해 수동으로 스프레드를 13포인트로 설정합니다.

 

안녕하세요, 누군가 도와주세요. mt5 고문을 특정 계정 번호 에 묶는 방법은 무엇입니까?

 
denis basuk :

안녕하세요, 누군가 도와주세요. mt5 고문을 특정 계정 번호 에 묶는 방법은 무엇입니까?

계좌번호를 확인하셔야 합니다. OnInit() 및 OnTick()에서 이 작업을 수행해야 합니다. 예시:

 

안녕하세요, MT4에서 MT5로 지표를 전송하려고합니다. 다음 막대까지의 시간을 표시하는 간단한 표시기가 있습니다. 표시기는 OnTimer를 사용합니다. OnTimer에서 새로 고침은 void refreshClock() 함수를 통해 발생합니다. OnTimer를 사용해야 하는 다른 지표에 이러한 구성을 사용하는 것이 올바른가요? 아니면 OnTimer에 대한 주소 처리를 최적화할 수 있습니까?

#property description "Time"
#property indicator_chart_window
#property indicator_plots    0

                                    
                                                                                             
input int Offset_Minutes = 60 ;                                                                                                         
input int Font__Size = 10 ;                                   
input color   Font_Color = clrWhite ;                         
input color   Font_No_Bar_Color = clrRed ;                        
input ENUM_BASE_CORNER   Corner = CORNER_RIGHT_UPPER ;        
input int Time_X = 140 ;                                          
input int Time_Y = 0 ;                                            


#define Clock_Name "Тimer"
int selectTime;
int diff;
int offsetHour;

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int    OnInit ()
{   
   EventSetMillisecondTimer ( 1000 ); 
   return ( 0 ); 
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnDeinit ( const int reason) 
{ 
   if (reason== REASON_REMOVE       || 
      reason== REASON_CHARTCHANGE || 
      reason== REASON_RECOMPILE    || 
      reason== REASON_CHARTCLOSE   || 
      reason== REASON_CLOSE        || 
      reason== REASON_PARAMETERS )    
   { 
     ObjectDelete ( 0 , "Тimer" );
     EventKillTimer (); 
   }
   ChartRedraw ();
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnTimer ( )                 
{ 
   refreshClock();  
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

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[])
{
   refreshClock();
   return (rates_total);
}
void refreshClock()
{
   static bool inRefresh = false ;
           if (inRefresh) return ;
               inRefresh = true ;
                              ShowClock(); ChartRedraw ();
               inRefresh= false ;
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void ShowClock()
{
   int periodMinutes     = periodToMinutes( Period ());
   int currentTime       = ( int ) TimeCurrent ();
   int localTime         = ( int ) TimeLocal ();
   int barTime           = ( int ) iTime ();
   
   diff = ( int ) MathMax ( round ((currentTime-localTime)/ 60.0 )* 60 ,- 24 * 3600 );
   offsetHour = ( int )-Offset_Minutes* 60 ; // сдвиг в минутах
   
   
   int currentTimeReal   = localTime+offsetHour;
   int sel_localTime     = localTime+diff;
   selectTime = sel_localTime;
   
     
       color   theColor;
       string time = getTime(barTime+periodMinutes* 60 -selectTime,theColor);
       int times = barTime+periodMinutes* 60 -selectTime;
       if (times < - 60 || TerminalInfoInteger ( TERMINAL_CONNECTED ) == false || 
      currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60 )
      time = "Time Off" ;
             
   if ( ObjectFind ( 0 , Clock_Name) < 0 )   
   ObjectCreate ( 0 , Clock_Name, OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetString ( 0 , Clock_Name, OBJPROP_TEXT , "Time: " + time);
   ObjectSetString ( 0 , Clock_Name, OBJPROP_FONT , "Verdana" );
   ObjectSetInteger ( 0 , Clock_Name, OBJPROP_FONTSIZE , Font__Size);
   ObjectSetInteger ( 0 , Clock_Name, OBJPROP_COLOR , theColor);
         ObjectSetInteger ( 0 , Clock_Name, OBJPROP_CORNER , Corner);
         ObjectSetInteger ( 0 , Clock_Name, OBJPROP_XDISTANCE , Time_X);
   ObjectSetInteger ( 0 , Clock_Name, OBJPROP_YDISTANCE , Time_Y);
      
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

string getTime( int times, color & theColor)
{
   string stime = "" ;
   int     seconds;
   int     minutes;
   int     hours;
   int currentTime       = ( int ) TimeCurrent ();
   int localTime         = ( int ) TimeLocal ();
   
   
   offsetHour = ( int )-Offset_Minutes* 60 ;
   
   int currentTimeReal   = localTime+offsetHour;
  
   if (times < 0 || TerminalInfoInteger ( TERMINAL_CONNECTED ) == false || 
   currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60 ) {
         theColor = Font_No_Bar_Color; times = ( int ) fabs (times); }
   else   theColor = Font_Color;
   
   seconds = (times% 60 );
   hours   = (times-times% 3600 )/ 3600 ;
   minutes = (times-seconds)/ 60 -hours* 60 ;

   if (hours> 0 )
   if (minutes < 10 )
         stime = stime+( string )hours+ ":0" ;
   else   stime = stime+( string )hours+ ":" ;
         stime = stime+( string )minutes;
   if (seconds < 10 )
         stime = stime+ ":0" +( string )seconds;
   else   stime = stime+ ":" +( string )seconds;
   return (stime);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+
  
datetime iTime ( ENUM_TIMEFRAMES forPeriod= PERIOD_CURRENT )
{
   datetime times[]; if ( CopyTime ( Symbol (),forPeriod, 0 , 1 ,times)<= 0 ) return ( TimeLocal ());
   return (times[ 0 ]);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int periodToMinutes( int period)
{
   int i;
   static int _per[]={ 1 , 2 , 3 , 4 , 5 , 6 , 10 , 12 , 15 , 20 , 30 , 0x4001 , 0x4002 , 0x4003 , 0x4004 , 0x4006 , 0x4008 , 0x400c , 0x4018 , 0x8001 , 0xc001 };
   static int _min[]={ 1 , 2 , 3 , 4 , 5 , 6 , 10 , 12 , 15 , 20 , 30 , 60 , 120 , 180 , 240 , 360 , 480 , 720 , 1440 , 10080 , 43200 };

   if (period== PERIOD_CURRENT )
       period = Period ();  
             for (i= 0 ;i< 20 ;i++) if (period==_per[i]) break ;
   return (_min[i]);  
}
 
VHS :

누군가를 도와주세요! 이미 내장된 Ignore에서 벗어나려고 했지만(물론 그 자체로는 좋지 않으며 사람들은 기본 코드에 이를 포함하려고 시도했습니다) 여전히 어떤 식으로든 도킹할 수 없습니다. 3일째 나는 발명을 하고 있다(교과서가 없다).

클래스 코드도 수정했습니다. MySignal 클래스에 보호된 부울 멤버(m_permition)를 도입하고 이에 대한 Set 메서드를 만들고 longcondition 및 shortcondition에 !m_permition if !m_permition을 추가했습니다. MyTrailing에서 보호된 부울 멤버 m_signal_permition도 만들고 이에 대한 Get 및 Set 메서드를 만들고 CheckTrailings에서 관리하도록 가르쳤습니다. if(position==NULL) {m_signal_permition = true; 반환(거짓);} 그렇지 않으면 m_signal_permition = 거짓;

나는 한 가지만 이해하지 못합니다. 어디서, 어떻게 그것들을 하나로 모으십시오. 방금 OnTick에서 참조하려고 했지만 작동하지 않습니다.

나는 Vladimir의 기사 "가르치는 법 ..."을 읽었습니다. 사용자 정의 신호에서 다른 신호의 인스턴스를 만들고 이를 통해 통신하는 아이디어는 이해할 수 있지만 어딘가에는 나와 완전히 맞지 않는 것 같습니다. 신호 및 후행 클래스는 서로 상속되지 않습니다.

도움이 되십시오.

나는 일주일 만에 발전했다! CExpert 클래스 에서 Signal 메서드를 찾았습니다. OnTick 코드에 붙여넣기

CExpertSignal *my_signal = ExtExpert.Signal(); my_signal.Ignore(0);

이제 괄호 안의 "1"로 수동으로 변경하면 무시 방법이 작동합니다. Expert Advisor는 신호에 대해 거래를 하지 않습니다.

OnTick에서 후행 객체에 대한 정보를 얻는 방법을 이해하는 것만 남아 있습니다. 불행히도 후행 개체에 대한 참조를 가져오는 ExtExpert.Trailing() 메서드가 없으므로 컴파일러는 후행에 구현된 GetPermition 메서드를 적용하려는 개체를 이해하지 못합니다. 누군가가 나에게 그것을하는 방법을 말해 줄 수 있습니까?

사유: