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

 
Vitalie Postolache :


잔액과 비교하면 다음과 같습니다.

고맙습니다.

 
trader781 :

좋아, 그러면 내가 이해하는 한 원하는 기능을 반환하는 세 가지 다른 사용자 정의 기능이 있을 것입니다(세 가지 다른 매개변수를 찾는 경우)

배열 정렬

~ 후에

원하는 숫자로 ArrayBsearch

그러면 이것은 어떻습니까?

즉, 배열에서 구조의 요소로의 전환

당신은 이해하지 않는다.

전역 수준에서 선언 된 배열을 채우고 정렬하는 함수를 하나 만들어야 합니다. 배열은 참조로 함수에 전달되어야 합니다.

그리고 이 배열에서 필요한 데이터를 가져오는 추가 함수가 필요합니다.

 
Artyom Trishkin :

당신은 이해하지 않는다.

전역 수준에서 선언 된 배열을 채우고 정렬하는 함수를 하나 만들어야 합니다. 배열은 참조로 함수에 전달되어야 합니다.

그리고 이 배열에서 필요한 데이터를 가져오는 추가 함수가 필요합니다.

알겠습니다. 구조 배열에서 무언가를 추출하는 방법을 보여드릴까요? 채워지고 정렬되었다고 가정 해 봅시다.

참조로 전달하고 작성하는 방법

 

조건이 어떻게 생겼는지 알려주세요. 손절매가 발동되면 로트에 2를 곱하고 다음 주문에 이익 실현이 발생하면 로트는 손절매 이전의 원래 로트로 돌아갑니다.

이렇게 이해가 가는데 아직 더 나아가는 방법을 모르겠어..

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
   {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )
      {
       if ( OrderMagicNumber ()==magic)
         {
         if ( OrderStopLoss ()== OrderClosePrice ())
            {
            lot=lot* 4 ;
            }
         }
      }

   } 

 

또 다른 질문, 주문 삭제 블록에 무엇을 잘못 썼습니까? 항상 주문을 삭제하는 것은 아니며 로그에 기록합니다.

OrderDelete error 4108
market order # 1 cannot be deleted

if ( Hour ()== 23 && Minute ()== 59 )            
         {
         for ( int n= OrdersTotal ()- 1 ;n>= 0 ;n--)
            {
             if ( OrderSelect (n, SELECT_BY_POS ))
               {
               if ( OrderMagicNumber ()==magic)
                  {
                   bool del= OrderDelete ( OrderTicket ());
                   if (del== true )
                     {
                     otl_b= 0 ; otl_s= 0 ; //обнуляем переменные отложек
                     }
                  
                  }  
               }  
            }
         }
 
wishmast :

또 다른 질문, 주문 삭제 블록에 무엇을 잘못 썼습니까? 항상 주문을 삭제하는 것은 아니며 로그에 기록합니다.

OrderDelete error 4108
market order # 1 cannot be deleted

if ( Hour ()== 23 && Minute ()== 59 )            
         {
         for ( int n= OrdersTotal ()- 1 ;n>= 0 ;n--)
            {
             if ( OrderSelect (n, SELECT_BY_POS ))
               {
               if ( OrderMagicNumber ()==magic)
                  {
                   bool del= OrderDelete ( OrderTicket ());
                   if (del== true )
                     {
                     otl_b= 0 ; otl_s= 0 ; //обнуляем переменные отложек
                     }
                  
                  }  
               }  
            }
         }


시장가 주문을 삭제하려고 하면 삭제되지 않고 OrderClose() 함수에 의해 닫힙니다. 루프가 올바르게 삭제되거나 닫히려면 유형별로 풀을 구별해야 합니다.

if(OrderType()<=OP_SELL) - 시장 주문의 경우 if(OrderType()>OP_SELL) - 보류 중인 주문의 경우.

 

그런 것이 있습니다: CHARTEVENT_MOUSE_MOVE

질문: 마우스가 없는 모바일 장치에서 작동합니까?

 
wishmast :

조건이 어떻게 생겼는지 알려주세요. 손절매가 발동되면 로트에 2를 곱하고 다음 주문에 이익 실현이 발생하면 로트는 손절매 이전의 원래 로트로 돌아갑니다.

이렇게 이해가 가는데 아직 더 나아가는 방법을 모르겠어..

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
   {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )
      {
       if ( OrderMagicNumber ()==magic)
         {
         if ( OrderStopLoss ()== OrderClosePrice ())
            {
            lot=lot* 4 ;
            }
         }
      }

   } 

신속하게 수행하면 마지막으로 수익성이없는 것이 주어질 것입니다. 어떻게해야하는지 그리고 스스로 수정해야 할 매개 변수는 무엇인지 알아낼 것입니다.
파일:
last1.mq4  4 kb
 
wishmast :

조건이 어떻게 생겼는지 알려주세요. 손절매가 발동되면 로트에 2를 곱하고 다음 주문에 이익 실현이 발생하면 로트는 손절매 이전의 원래 로트로 돌아갑니다.

이렇게 이해가 가는데 아직 더 나아가는 방법을 모르겠어..

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
   {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )
      {
       if ( OrderMagicNumber ()==magic)
         {
         if ( OrderStopLoss ()== OrderClosePrice ())
            {
            lot=lot* 4 ;
            }
         }
      }

   } 

이 문제에 대한 해결책은 고문의 전체 논리에 달려 있으며 손절매 또는 이익실현의 운영은 주석으로 추적할 수 있습니다.

   if ( StringFind ( OrderComment (), "sl" )>= 0 ) // сработал стоплосс
   if ( StringFind ( OrderComment (), "tp" )>= 0 ) // сработал тейкпрофит

...

 
Artyom Trishkin :

당신은 이해하지 않는다.

전역 수준에서 선언 된 배열을 채우고 정렬하는 함수를 하나 만들어야 합니다. 배열 은 참조로 함수에 전달되어야 합니다.

그리고 이 배열에서 필요한 데이터를 가져오는 추가 함수가 필요합니다.

Artyom, 당신은 틀렸습니다. 전역 수준에서 선언된 배열은 프로그램의 모든 부분에서 볼 수 있으며 어딘가에서 어딘가로 전송할 필요가 없습니다. 프로그램의 한 곳에서는 채워지고 다른 곳에서는 정렬되고 세 번째로 읽혀지는 것은 중요하지 않습니다.