[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 375

 
Chiripaha :

동의할 준비가 되지 않았습니다. - 이러한 상황에서 금전과 직위의 고문이 작업과 계산의 정확성을 유지하는 논리가 손실되기 때문입니다. - 이 시간. 두번째. - 예를 들어 내 조언자가 100밀리초 동안 잠을 자고 그 시간에 다른 조언자가 작동하기 시작하면 이 100밀리초가 지나면 다른 조언자가 작업을 중지하고 ... 중간에 이것으로 그리고 끝없이 ... 반면에. 나는 Expert Advisors에서 각 작업 블록에서 몇 분 동안 여러 번 "잠자기"를 보내는 것을 보았습니다. - 그렇다면 이때 다른 올빼미들이 모두 작동하지 않는다면, 역시 어딘지 모르게 잘못된 것입니다. - 따라서 질문은 매우 관련이 있습니다. 이 순간 일의 논리를 이해하고 싶습니다. 그러나 공식 문서에서 자세한 설명을 찾지 못했습니다.

음, 동의할 준비가 되었습니다. 옵션으로, 처음에 mql4가 나타났을 때 다른 사람은 다중 통화 계정에 대해 생각하지 않았고 하나의 터미널에 올빼미 팩에 대해 생각했습니다. 그래서 이것이 정상이라는 옵션이 있습니다.

치리파하 :

그러나 나는 두 가지 악 중에서 후자를 택할 것이다. 이 경우, 나는 내가 확신하는 올빼미를 그냥 둘 것입니다. 이것이 완료되지 않으면 문제가되지 않습니다. 작업 속도가 느려지더라도 최소한 재 계산의 정확성이 유지됩니다.

여러 신호를 사용하는 것이 더 논리적입니다. 각 기호는 고유한 신호를 가지고 있으며 배열에서 필요한 만큼의 신호를 수집하고 모든 것은 한 명의 고문에 의해 거래됩니다. 논리는 동일하지만 왜 많은 Expert Advisors가 있습니까?

치리파하 :

문제는 보이는 것만큼 사소하지 않습니다. - 문제는 내 실험에서 알 수 있듯이 "어드바이저의 거래 허용" 확인란이 선택 취소되어 있으면 어드바이저의 작업이 중지되지 않고 모든 계산도 각 틱에서 수행된다는 것입니다. 어드바이저의 거래가 서버에 표시되지 않을 뿐입니다. 그러나 이러한 계산에서 이러한 "슬립"이 꽉 차면(완전히 정확하지는 않음) 그러한 고문이 5-10명이라면 현재 거래 중인 현재 고문의 실행을 구체적으로 늦출 수 있습니다.

예, 일부 프로그래머는 거래 권한을 제어하고 이를 기반으로 올빼미의 작업을 건너뜁니다. 그러나 그렇지 않은 경우가 더 많습니다. 코드가 닫히면 작업 속도가 느려지는지 여부(특히 어떤 올빼미인지)를 전혀 이해할 수 없습니다. - 이제 포럼 검색에서 이 주제를 살펴보겠습니다. 뭔가 느려졌습니다.

분명히 예, 이 버튼 " Expert Advisor의 거래 허용 "은 Expert Advisor의 코드에 제공된 경우에만 의도한 대로 작동합니다.
 
Chiripaha :

동의할 준비가 되지 않았습니다. - 이러한 상황에서 금전과 직위의 고문이 작업과 계산의 정확성을 유지하는 논리가 손실되기 때문입니다. - 이 시간. 두번째. - 예를 들어 내 조언자가 100밀리초 동안 잠을 자고 그 시간에 다른 조언자가 작동하기 시작하면 이 100밀리초가 지나면 다른 조언자가 작업을 중지하고 ... 중간에 이것으로 그리고 끝없이 ... 반면에. 나는 Expert Advisors에서 각 작업 블록에서 몇 분 동안 여러 번 "잠자기"를 보내는 것을 보았습니다. - 그렇다면 이때 다른 올빼미들이 모두 작동하지 않는다면, 역시 어딘지 모르게 잘못된 것입니다. - 따라서 질문은 매우 관련이 있습니다. 이 순간 일의 논리를 이해하고 싶습니다. 그러나 공식 문서에서 자세한 설명을 찾지 못했습니다.

그러나 나는 두 가지 악 중에서 후자를 택할 것이다. 이 경우, 나는 내가 확신하는 올빼미를 그냥 둘 것입니다. 이것이 완료되지 않으면 문제가되지 않습니다. 작업 속도가 느려지더라도 최소한 재 계산의 정확성이 유지됩니다.

문제는 보이는 것만큼 사소하지 않습니다. - 문제는 내 실험에서 알 수 있듯이 "어드바이저의 거래 허용" 확인란이 선택 취소되어 있으면 어드바이저의 작업이 중지되지 않고 모든 계산도 각 틱에서 수행된다는 것입니다. 고문의 거래가 서버에 표시되지 않을 뿐입니다. 그러나 이러한 계산에서 이러한 "슬립"이 꽉 차면(완전히 정확하지는 않음) 그러한 고문이 5-10명이라면 현재 거래 중인 현재 고문의 실행을 구체적으로 늦출 수 있습니다.

예, 일부 프로그래머는 거래 권한을 제어하고 이를 기반으로 올빼미의 작업을 건너뜁니다. 그러나 그렇지 않은 경우가 더 많습니다. 코드가 닫히면 작업 속도가 느려지는지 여부(특히 어떤 올빼미인지)를 전혀 이해할 수 없습니다. - 이제 포럼 검색에서 이 주제를 살펴보겠습니다. 뭔가 느려졌습니다.

생각나게 하고 업데이트한 질문에 대해 Arles 에게 감사드립니다. 이전에는 이 주제에 대해 작성된 내용을 이해하기에 충분한 경험이 없었습니다. 이제 다시 눕겠습니다.


프로세서 코드 처리의 미묘함을 다루지 않고 일반적인 "그림"에 대해 살펴보겠습니다. Sleep() 동안 - 이 특정 코드의 추가 처리를 위한 일시 중지(다른 모든 코드는 INDEPENDENT 병렬 스레드에서 처리됨).
 
TarasBY :
프로세서 코드 처리의 미묘함을 다루지 않고 일반적인 "그림"에 대해 살펴보겠습니다. Sleep() 동안 - 이 특정 코드의 추가 처리를 위한 일시 중지(다른 모든 코드는 INDEPENDENT 병렬 스레드에서 처리됨).

글쎄, 여기 ... 그리고 이것은 이미 "매복"입니다. 내가 말한 것을 올바르게 이해했다면. - 명확히 하자면...

Igor, 내가 당신을 올바르게 이해한다면 Expert Advisors는 일반적으로 순차적으로 처리되지 않고 (내 실험에서했던 것처럼) 병렬로 처리됩니까? 그리고 이것이 사실이라면 Arles 가 옳고 각 신호가 필요한 조건을 수신하면 2 개의 트랜잭션을 병렬로 동시에 열 수 있다는 것이 밝혀졌습니다.

이것이 나에게 중요한 이유는 작업을 올바르게 구성하는 데 도움이 될 것입니다. 무슨 일이 일어나고 어떻게 일어나는지 이해하지 못하면 제대로 엉망이 될 수 있습니다.
 

또한 임시로 Sleep()은 테스터에서 작동하지 않으며 문서 어딘가에 작성되어 있습니다.

Expert Advisor는 각 틱의 도착과 함께 Start() 함수에서 시작됩니다. 12명의 Expert Advisors가 있는 경우 오류를 처리하려고 하면 오류가 발생해야 합니다. DC에 여러 요청을 하면 "쓰레드가 사용 중입니다"와 같은 오류가 발생할 가능성이 큽니다.

" 고문 거래 허용 " 확인란에 대해. 예, 고문은 작동하지만 거래 만 금지됩니다. 로그를 참조하십시오. 모든 것이 기록됩니다.

 

안녕하세요, 이 스크립트는 무엇입니까?

 //+------------------------------------------------------------------+
//|                                                        close.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net/"
#property show_confirm

//+------------------------------------------------------------------+
//| script "close first market order if it is first in the list"     |
//+------------------------------------------------------------------+
int start()
  {
   bool    result;
   double price;
   int     cmd,error;
//----
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
       //---- first order is buy or sell
       if (cmd==OP_BUY || cmd==OP_SELL)
        {
         while ( true )
           {
             if (cmd==OP_BUY) price=Bid;
             else             price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price, 3 , CLR_NONE );
             if (result!=TRUE) { error= GetLastError (); Print ( "LastError = " ,error); }
             else error= 0 ;
             if (error== 135 ) RefreshRates();
             else break ;
           }
        }
     }
   else Print ( "Error when order select " , GetLastError ());
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
alex12 :

안녕하세요, 이 스크립트는 무엇입니까?

또한 "목록의 첫 번째 주문인 경우 첫 번째 시장 주문을 닫으십시오."라고 말합니다.
 
alex12 :

안녕하세요, 이 스크립트는 무엇입니까?


Alex, 바로 거기에 다음과 같이 적혀 있습니다.

 script "close first market order if it is first in the list"

목록의 첫 번째 주문인 경우 첫 번째 시장 주문을 마감하는 스크립트입니다.

저것들. 코드의 논리에서 알 수 있듯이 첫 번째 주문은 닫힐 가능성이 큽니다. 예를 들어 10개의 주문이 열려 있으면 주문 번호 1이 닫힙니다. 가장 먼저 개봉한 것.

 
Chiripaha :

글쎄, 여기 ... 그리고 이것은 이미 "매복"입니다. 내가 말한 것을 올바르게 이해했다면. - 명확히 하자면...

Igor, 내가 당신을 올바르게 이해한다면 Expert Advisors는 일반적으로 순차적으로 처리되지 않고 (내 실험에서했던 것처럼) 병렬로 처리됩니까? 그리고 이것이 사실이라면 Arles 가 옳고 각 신호가 필요한 조건을 받으면 2 개의 트랜잭션을 병렬로 동시에 열 수 있다는 것이 밝혀졌습니다.

이것이 나에게 중요한 이유는 작업을 올바르게 구성하는 데 도움이 될 것입니다. 무슨 일이 일어나고 어떻게 일어나는지 이해하지 못하면 제대로 엉망이 될 수 있습니다.

Sergey, "모든 Expert Advisors는 터미널에서 순차적으로 처리된다"는 가정은 어디에서 얻었습니까? - 병렬 컴퓨팅 시대 . ;)

나는 그러한 실험을 수행하지 않았습니다 (터미널에서 고문 코드를 처리하는 순서를 설정하기 위해)-내 대답은 논리 수준입니다. 나는 단순히 (터미널 운영의 세부 사항에 들어가지 않고) 거래 작업 동안 Expert Advisors의 일관된 작업을 (강제로) 구성합니다. 그러나 가장 정확한 답은 자신의 경험입니다. 사실, 실험을 설정할 때 얻은 결과를 올바르게 처리하기 위해 입력 매개 변수를 올바르게 고려하는 것을 잊어서는 안됩니다. :)

추신: "내 종탑"에서 사용자 터미널이 무엇과 관련이 있는지 명확하지 않지만 현재 MT4 빌드가 최대 8개(내 기억이 제공하는 경우) 거래 주문을 동시에 처리할 수 있다는 (개발자로부터) 어딘가에서 읽었습니다. - 이것은 DC 서버에 의해 규제됩니다("다른 쪽 끝에서"). ;)

 
Chiripaha :

...

저것들. 코드의 논리에서 알 수 있듯이 첫 번째 주문은 닫힐 가능성이 큽니다. 예를 들어 10개의 주문이 열려 있으면 주문 번호 1이 닫힙니다. 가장 먼저 개봉한 것.


네. 그러나 그 첫 번째 주문이 시장 주문인 경우에만. 지연되면 아무 일도 일어나지 않습니다.
 
TarasBY :

Sergey, "모든 Expert Advisors는 터미널에서 순차적으로 처리됩니다"라는 가정은 어디에서 얻었습니까? 병렬 컴퓨팅 시대. ;)

나는 그러한 실험을 수행하지 않았습니다 (터미널에서 고문 코드를 처리하는 순서를 설정하기 위해)-내 대답은 논리 수준입니다. 나는 단순히 (터미널 운영의 세부 사항에 들어가지 않고) 거래 작업 동안 Expert Advisors의 일관된 작업을 (강제로) 구성합니다. 그러나 가장 정확한 답은 자신의 경험입니다. 사실, 실험을 설정할 때 얻은 결과를 올바르게 처리하기 위해 입력 매개 변수를 올바르게 고려하는 것을 잊어서는 안됩니다. :)

그것이 바로 요점입니다(실험 매개변수의 올바른 설정을 위해). 때문에 질문을 드리는 것입니다. 나는 내 자신의 능력에 자신이 없으므로 식별하려고 노력하고 있습니다. 아마도 이러한 결과가 다를 경우 내가 뭔가를 잘못했을 것입니다. 이것은 오히려 테스트의 문제입니다. 그러한 순간에 올바르게 작성된 프로그램 이 충돌하는 것처럼 보이고 어딘가를 봐야한다는 것을 이해합니다.

이 "실험"은 나에게 우연히 일어났다. 나는 또한 병렬 작업을 위한 프로그램을 작성했습니다. 지금은 이 방법을 포기했습니다. 이것은 효율성을 높이지 못했습니다(다른 프로젝트에서 구현되었을 수 있음). 결과적으로 첫 번째 프로그램이 처리 될 때까지 데이터가 수신되지 않은 다음 두 번째 프로그램이 시작되지 않은 것으로 나타났습니다 (또는 더 정확하게는 저주). 그리고 이 순서는 내가 어떤 창에(즉, 어떤 순서로) 어드바이저 블록을 배치했는지에 따라 다릅니다. - 따라서 결론 - 윈도우의 순서가 중요하기 때문에 Expert Advisors가 병렬이 아닌 순차적으로 처리된다는 의미입니다. 그리고 이 순서는 터미널 목록의 창 번호에 따라 다릅니다.

이것이 얻은 경험의 핵심이었습니다.

그러나 다시 말하지만 이것은 내 결과에 대한 잘못된 해석일 수 있습니다. 그래서 저는 지금 이 문제를 단순히 '실패' 문제가 아닌 해결하기 위해 부단히 노력하고 있습니다.