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

 
trader781 :

이제 코드를 빗질하면 논리를 이해해야 하는 다른 사람들은 말할 것도 없고 더 읽기 쉬워질 것입니다. 모든 떼가 거기에서 볼 수 있습니다.

알았어, 그게 더 나아?
이제 여분의 중괄호 쌍을 제거하고 나머지는 일반적으로 블록으로 정렬합니다. 그러면 논리에서 잼이 어디에 있는지 알 수 있습니다.
 
Artyom Trishkin :
이제 여분의 중괄호 쌍을 제거하고 나머지는 일반적으로 블록으로 정렬합니다. 그러면 논리에서 잼이 어디에 있는지 알 수 있습니다.
어떤 것이 중복됩니까?
 
trader781 :
어떤 것이 중복됩니까?
코드에 추가 코드가 많이 있습니다. 스타일러 로 코드를 처리하면 즉시 빈 쌍의 중괄호가 추가로 표시됩니다.
 
Artyom Trishkin :
코드에 추가 코드가 많이 있습니다. 스타일러 로 코드를 처리하면 즉시 빈 쌍의 중괄호가 추가로 표시됩니다.
만들어진
파일:
 
trader781 :
만들어진
나는 나중에 볼 것입니다 - 상황은 약 4 시간입니다. 그 이하도 아닙니다 ...
 
trader781 :
만들어진
1.카운트++; // 프로그램 시작부터 틱 계산

다음과 같이 더 좋습니다. if(count<=20) count++; - 최대 21개까지만 필요한 경우 더 세는 이유는 무엇입니까?

2.
   if (count> 20 ) //  если количество тиков больше начинаем работу ... и дальше код эксперта
     {
       if ( Bars < 801 || ( IsTradeAllowed ()== false )) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
         Print ( "Нет достаточного количества баров или торговля на текущем инструменте запрещена" );
       return ;
     }

그리고 여기 wigwam이 있습니다. 여기에서는 막대의 수만 확인하고 count> 20 일 때 인쇄하고 나머지 코드는 count<= 20 일 때도 작동 합니다.

삼.

if ( OrderSymbol ()== Symbol () && OrderType ()< 2 )
             continue ;

시장 코드만 고려해야 하는 경우(추가 코드를 기반으로 함) 계속 은 여기에 전혀 필요하지 않습니다.

4.

         if (y== true && ( OrderType ()== 0 )) //+-----покупка
           {
            dummy=( OrderClose ( OrderTicket (), OrderLots (), Bid , 0 ,White));

              {
               if ((dummy== true ) && (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))== false ))

                   PlaySound ( "music" );
               Sleep ( 20000 );
               PlaySound ( "music" );
               Sleep ( 20000 );
               PlaySound ( "music" );
               Sleep ( 20000 );
               dummy= false ;
               ExpertRemove ();
              }
           }

하나의 주문을 닫고 자체적으로 제거합니까? 더 있으면 어떻게 합니까? 예, 그리고 잠을 1분 ...

나는 더 이상 보지 않았고, 아직 테스트 할 곳이 없습니다.

 

1 알았어, 내가 고칠게

2 엉망, 다음 블록이 count< 20 에서 작동하지 않는 것이 필요합니다.

3 알았어, 내가 고칠게

4 네, 잠시만요. 현재 상품에 대한 시장 주문이 더 이상 남아 있지 않은 경우에만 시작해야 합니다. 나는 order selection 의 부정적인 결과를 통해 그것을 구현하려고 시도 했으므로 어딘가에 반환을 넣어야하고 void OnTick() 의 반환이 어떻게 든 좋지 않아 보입니다. 다시 말하지만, 모든 상품에 대해 많은 주문이 밀려 있는 경우 OrdersTotal()은 잘못된 결과를 제공합니다.

 
trader781 :

2 엉망, 다음 블록이 count< 20 에서 작동하지 않는 것이 필요합니다.

그런 다음 블록 else return 뒤에 추가해야 합니다.

4 네, 잠시만요. 현재 상품에 대한 시장 주문이 더 이상 남아 있지 않은 경우에만 시작해야 합니다. 나는 order selection 의 부정적인 결과를 통해 그것을 구현하려고 시도 했으므로 어딘가에 반환을 넣어야하고 void OnTick() 의 반환이 어떻게 든 좋지 않아 보입니다. 다시 말하지만, 모든 상품에 대해 많은 주문이 밀려 있는 경우 OrdersTotal()은 잘못된 결과를 제공합니다.

그렇다면 왜 3배의 소리를 내는 것일까요?

따라서 모든 작업을 두 단계로 수행할 수 있습니다. 첫 번째 주기에서는 주문을 마감하고, 다음 주기에서는 모든 시장 주문을 다시 계산하여 남아 있는 주문이 있는지 확인하고, 없으면 팡파르가 재생됩니다.

그러나 나는 주문이 끝난 후 음악의 캐치가 무엇인지 여전히 이해하지 못합니다. 글쎄, 당신은 잡지에 인쇄를 할 수 있습니다, 메일에 메시지를 보내거나 스마트에 알림을 보낼 수 있지만 조언자를 오르골로 만들 수 있습니까?
 
Vitalie Postolache :

그런 다음 블록 else return 뒤에 추가해야 합니다.

그렇다면 왜 3배의 소리를 내는 것일까요?

따라서 모든 작업을 두 단계로 수행할 수 있습니다. 첫 번째 주기에서는 주문을 마감하고, 다음 주기에서는 모든 시장 주문을 다시 계산하여 남아 있는 주문이 있는지 확인하고, 없으면 팡파르가 재생됩니다.

그러나 나는 주문이 끝난 후 음악의 캐치가 무엇인지 여전히 이해하지 못합니다. 글쎄, 당신은 잡지에 인쇄를 할 수 있습니다, 메일에 메시지를 보내거나 스마트에 알림을 보낼 수 있지만 조언자를 오르골로 만들 수 있습니까?

주기를 분리하는 방법?

사운드를 마지막으로 닫힌 사운드에 정확히 바인딩하는 방법은 무엇입니까? 주문이 없으면 고문이 작동하지 않기 때문입니다.

자, 마지막. 음악 옵션은 지금까지 나에게 적합합니다.

 
trader781 :

주기를 분리하는 방법?

사운드를 마지막으로 닫힌 사운드에 정확히 바인딩하는 방법은 무엇입니까? 주문이 없으면 고문이 작동하지 않기 때문입니다.

자, 마지막. 음악 옵션은 지금까지 나에게 적합합니다.

그렇다면 분리한다는 것은 무엇을 의미합니까? 아무 것도 분리할 필요가 없습니다. 일반적으로 동일한 두 개의 주기를 작성해야 합니다. 하나는 OrderClose()이고 다른 하나는 주문 카운터입니다. 주문 선택 의 표시는 동일합니다. 카운터=0이면 모든 주문이 마감되고 음악을 재생할 수 있습니다.

예, 또한 조건이

         if (Uslovie1== true ) //Bid+ma6
           {
             if (( Bid >=ma1-X* Point && Bid <ma1) || ( Bid <=ma1+X* Point && Bid >ma1))
              {
                 {y= true ;}
              }
           }

특정 순서를 언급하지 않는 것 같습니다. 왜 주기에 있습니까?

마감 주기 전에 확인하겠습니다.

사유: