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

 
bij :

if(iTime(NULL, PERIOD_D1 ,i+1)!=iTime(NULL,PERIOD_D1,i)&& 여기에 쓰는 방법? )

시간[i]에서 날짜를 추출하여 날짜 시간[i+1]과 비교해야 합니다. 같지 않으면 time[i]에서 시간을 추출하고 주어진 시간과 비교합니다. 일치하면 선을 그립니다.

이 모든 것이 추출되는 방법 - 스크립트에 표시했습니다. 생각하는 것만 남아 있습니다.

 
Artyom Trishkin :

시간[i]에서 날짜를 추출하여 날짜 시간[i+1]과 비교해야 합니다. 같지 않으면 time[i]에서 시간을 추출하고 주어진 시간과 비교합니다. 일치하면 선을 그립니다.

이 모든 것이 추출되는 방법 - 스크립트에 표시했습니다. 생각하는 것만 남아 있습니다.

금요일 저녁, 나는 그것이 나쁜 것 같아요) 아무것도 구축하지 않습니다. 왜요?

   datetime date1=time[i]; 
   datetime date2=time[i+ 1 ];
 
   MqlDateTime str1,str2; 
   TimeToStruct (date1,str1); 
   TimeToStruct (date2,str2); 
   if (str1.day!=str2.day&&str1.mon!=str2.mon&&str1.year!=str2.year&&str2.hour== 17 &&str2.min== 30 ){
  
   if (!TrendCreate( 0 , "closek" +time[i], 0 , iTime ( NULL , PERIOD_D1 ,i+ 1 ), iClose (i+ 1 , NULL , PERIOD_M30 ), iTime ( NULL , PERIOD_D1 ,i), 0 , clrLime , STYLE_SOLID , 2 , false , false , false , false , 0 ))
        {
         continue ;
        }
        }
 
Artyom Trishkin :

그런 다음 시간 [i] 에서 시간을 추출하고 주어진 시간과 비교합니다.

아마도 시간[i+1]일 것이므로 하루가 끝난 후 마지막 날에 줄을 서야 합니다.

 

안녕하세요.

어리석은 질문이지만 도와주세요

나는 어떤 가격에 거래에 들어갔고, 나는 항상 롱) 그리고 나는 거래 가격을 현재 입찰가와 비교합니다 . 만약 우리가 0.5% 증가하면 나는 닫습니다. 입찰에 맹세합니다(((   

   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select(my_symbol))                             //если уже существует позиция по этому символу
        {
         if ((m_Position.PositionType()== POSITION_TYPE_BUY ) && ( fabs ( DEAL_PRICE - Bid [ 0 ])/ DEAL_PRICE )>= 0.005 ) m_Trade.PositionClose(my_symbol);   //и тип этой позиции Buy, то закрываем ее
           return ;                            
        }
      m_Trade.Buy( 0.1 ,my_symbol);                                 //если дошли сюда, значит позиции нет, открываем ее
     }
 
ISL :

나는 어떤 가격에 거래에 들어갔고, 나는 항상 롱) 그리고 나는 거래 가격을 현재 입찰가와 비교합니다 . 만약 우리가 0.5% 증가하면 나는 닫습니다. 입찰에 맹세합니다(((   

분명히 MQL5이기 때문입니다. 그리고 "bid"는 여기에 없지만 SymbolInfoDouble (_Symbol, SYMBOL_BID)이 있습니다.


 
ISL :

안녕하세요.

어리석은 질문이지만 도와주세요

나는 어떤 가격에 거래에 들어갔고, 나는 항상 롱) 그리고 나는 거래 가격을 현재 입찰가와 비교합니다 . 만약 우리가 0.5% 증가하면 나는 닫습니다. 입찰에 맹세합니다(((   

그리고 그는 욕으로 옳은 일을 합니다. MQL5에는 입찰가가 있는 배열이 없습니다.

로 변경

m_symbol. Bid ()

, 루프 전에 가격을 업데이트하는 것을 잊지 마십시오.

   if (! RefreshRates ())
       return ;
 
Vladimir Karputov :

그리고 그는 욕으로 옳은 일을 합니다. MQL5에는 입찰가가 있는 배열이 없습니다.

로 변경

, 루프 전에 가격을 업데이트하는 것을 잊지 마십시오.

나는 두 가지 다른 방법으로 그것을 했다:

1) Expert Advisor는 작동하지만 불행히도 아이디어를 구현하지 않습니다. 간단합니다. 이전 양초가 하락하고 다음 양초가 마감될 때 매수합니다. 위에 폐쇄. 그리고 가격이 0.5% 상승한 경우에만 닫습니다.

그는 이상한 거래를 한다

   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select(my_symbol))                             //если уже существует позиция по этому символу
        {
         if ((m_Position.PositionType()== POSITION_TYPE_BUY ) && ( SymbolInfoDouble ( _Symbol , SYMBOL_BID )- DEAL_PRICE )/ DEAL_PRICE >= 0.005 ) m_Trade.PositionClose(my_symbol);   //и тип этой позиции Buy, то закрываем ее
           return ;                            
        }
      m_Trade.Buy( 0.1 ,my_symbol);                                 //если дошли сюда, значит позиции нет, открываем ее
     }

2) 방법은 다음과 같다.

 if (! RefreshRates ())
       return ; 
   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select(my_symbol))                             //если уже существует позиция по этому символу
        {
         if ((m_Position.PositionType()== POSITION_TYPE_BUY ) && (m_symbol. Bid ())- DEAL_PRICE )/ DEAL_PRICE >= 0.005 ) m_Trade.PositionClose(my_symbol);   //и тип этой позиции Buy, то закрываем ее
           return ;                            
        }
      m_Trade.Buy( 0.1 ,my_symbol);                                 //если дошли сюда, значит позиции нет, открываем ее
     }

하이킹은 모든 것을 혼동했습니다 (((

오류 메시지를 표시합니다.


 
ISL :

나는 두 가지 다른 방법으로 그것을 했다:

1) Expert Advisor는 작동하지만 불행히도 아이디어를 구현하지 않습니다. 간단합니다. 이전 양초가 하락하고 다음 양초가 마감될 때 매수합니다. 위에 폐쇄. 그리고 가격이 0.5% 상승한 경우에만 닫습니다.

그는 이상한 거래를 한다

2) 방법은 다음과 같습니다.

하이킹은 모든 것을 혼란스럽게 했습니다(((

오류 메시지를 표시합니다.


내 코드를 열면 m_symbol과 RefreshRates가 모두 표시됩니다.

 
Vladimir Karputov :

내 코드를 열면 m_symbol과 RefreshRates가 모두 표시됩니다.

고맙습니다. 읽기 완료.

이제 임베디드 알고리즘이 실행되지 않는 이유를 알 수 없습니다.

       if (! RefreshRates ())
         return ;
1)   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
2)       if (m_Position.Select( Symbol ()))                             //если уже существует позиция по этому символу
        {
         
           return ;                            
        }
2*)    m_Trade.Buy( 0.1 , Symbol ());                                 //если дошли сюда, значит позиции нет, открываем ее
     }
3)  if 
   ((m_Position.PositionType()== POSITION_TYPE_BUY ) && (((m_symbol. Bid ()- DEAL_PRICE )/ DEAL_PRICE )>= 0.1 ))
       {
         m_Trade.PositionClose( Symbol ());   //и тип этой позиции Buy, то закрываем ее
      }


다음과 같은 상황이 발생합니다. 조건에 따라 구매

1) 조건이 충족되는 경우

2) 그곳에 이미 오픈 포지션 이 있는지 확인하고, 있다면 3)으로 이동하고, 없으면 2*)를 엽니다.

3) 포지션이 매수이고 가격이 진입 가격에서 10% 상승한 조건이 충족되면 나는 그것을 닫습니다

테스트 중 아래와 같은 상황이 발생하는데, 조건에 따른 포지션이 아닌 단순히 포지션이 열리고 닫힙니다.

 
ISL :

고맙습니다. 읽기 완료.

이제 임베디드 알고리즘이 실행되지 않는 이유를 알 수 없습니다.


다음과 같은 상황이 발생합니다. 조건에 따라 구매

1) 조건이 충족되는 경우

2) 그곳에 이미 오픈 포지션 이 있는지 확인하고, 있다면 3)으로 이동하고, 없으면 2*)를 엽니다.

3) 포지션이 매수이고 가격이 진입 가격에서 10% 상승한 조건이 충족되면 나는 그것을 닫습니다

테스트 중 아래와 같은 상황이 발생하는데, 조건에 따른 포지션이 아닌 단순히 포지션이 열리고 닫힙니다.

다음 알고리즘을 제안합니다.

   if (! RefreshRates ())
       return ;
   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ]) //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select( Symbol ())) //если уже существует позиция по этому символу
        {
         if (m_Position.PositionType()== POSITION_TYPE_BUY && (m_symbol. Bid ()-m_Position.PriceOpen())/m_Position.PriceOpen()>= 0.1 )
           {
            m_Trade.PositionClose( Symbol ());   //и тип этой позиции Buy, то закрываем ее
             return ;
           }
        }
       else
         m_Trade.Buy( 0.1 , Symbol ()); //если дошли сюда, значит позиции нет, открываем ее
     }

m_Position에 주목하세요. 가격오픈 ()

사유: