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

 
ilunga :
이것은 이미 두 번째 틱에 티켓 대신 쓰레기를 저장하는 지역 변수이기 때문에

정말 감사합니다! 솔직히, 나는 항상 그것에 대해 생각했습니다!
 
Roman. :


예고편을 참조하십시오. 그 내용을 터미널의 Experts 폴더에 넣습니다. 관심 있는 거래 상품의 시간대를 선택하고 해당 차트에 올빼미를 놓고,

동시에 전문가의 외부 변수에서 주문을 열기 위한 매개변수를 설정합니다.

다음으로, 선택한 악기의 시간대에 새로운 막대가 형성될 때까지 기다립니다...

전문가가 시장에서 주문을 열 때, 당신은 그 오픈 시간과 새로운 바의 오픈 시간을 비교합니다.

로만, 약속한 대로 '개막식' 고문과 함께 일할 때 실제로 어떤 일이 일어나는지 말해주고 있다. 첫째, 어드바이저는 1시간 차트에 배치된 후 다음 틱에 즉시 작동하고 다음 캔들이 열리면 두 번째 거래를 엽니다. 왜, 나는 아직도 그것을 알아낼 수 없습니다. 둘째 , 거래를 시작하는 가격은 여전히 새 양초를 여는 가격과 일치하지 않습니다.

2012.02.24.12:00,1.3392,1.3405,1.3383,1.3387.768 - 양초는 1.3392에서 열리고 주문은 1.3390에서 시작됩니다. 설정에서 1 포인트의 미끄러짐을 지정합니다. 0점을 지정하면 어드바이저가 전혀 작동하지 않습니다. 제대로 이해하고 있습니까?

로그를 첨부했습니다. 제게는 개장 주문이 양초의 시가와 일치하는 것이 여전히 중요합니다.

 

안녕하세요 여러분. 설명해 주시면 감사하겠습니다.

코드에서 순차적 으로 작성된 OrderDelete 명령 OrderSend 경우 어드바이저는 틱 번호 1에서 두 명령(제거 + 설치)을 모두 실행하라는 신호를 받은 후 다음을 수행합니다.

- 이 두 명령은 동일한 틱 번호 1에서 실행할 수 없으며 실행이 최소 3틱 확장됩니다.

- 틱 #1에서 OrderDelete 명령이 실행됩니다.

- OrderDelete 를 제출한 후 결과는 다음 틱 #2 에서만 반환되며 지금은 동일한 틱 #2에서만 OrderSend 명령을 보낼 수 있습니다.

- OrderSend 명령의 결과는 틱 #3에서만 알 수 있습니다.

그렇습니까?


그리고 같은 틱에 두 개의 명령을 MT에 보낼 가능성이 없다는 것이 사실입니까?

나는 MT4에 고문을 씁니다.

덕분에.

 
Les :

안녕하세요 여러분. 설명해 주시면 감사하겠습니다.

코드에서 순차적 으로 작성된 OrderDelete 명령 및 OrderSend 경우 어드바이저는 틱 번호 1에서 두 명령(제거 + 설치)을 모두 실행하라는 신호를 받은 후 다음을 수행합니다.

- 이 두 명령은 동일한 틱 번호 1에서 실행할 수 없으며 실행이 최소 3틱 확장됩니다.

- 틱 #1에서 OrderDelete 명령이 실행됩니다.

- OrderDelete 를 제출한 후 결과는 다음 틱 #2 에서만 반환되며 지금은 동일한 틱 #2에서만 OrderSend 명령을 보낼 수 있습니다.

- OrderSend 명령의 결과는 틱 #3에서만 알 수 있습니다.

그렇습니까?


그리고 같은 틱에 두 개의 명령을 MT에 보낼 가능성이 없다는 것이 사실입니까?

나는 MT4에 고문을 씁니다.

덕분에.

틱은 새로운 인용문입니다. 그리고 OrderDelete OrderSend 명령의 실행 시간과 연결이 없습니다.

예 + 미끄러짐이라는 뉴스가 있는 경우 간단한 OrderSend를 실행하는 동안 약 12틱이 소요됩니다. 그리고 시장에 나이트 플랫이 있다면 두 팀 모두 한 틱에 패스할 수 있습니다.

 
Les :

그것은 모두 틱이 얼마나 빨리 진행되는지에 달려 있습니다. 일반적으로 값을 반환하는 함수, OrderDelete, OrderSend 등 비동기적으로 실행되지 않습니다. 전체 작업이 완료되고 오류 코드 가 발행될 때까지(또는 성공하는 경우 NO_ERROR) 다음 명령문이 실행되지 않습니다. 또 다른 점은 이 시간 동안 여러 틱이 실행될 수 있지만 start() 함수에 의해 처리되지 않는다는 것입니다.


예를 들어 한 주문에 대해 손절매가 발생하고 동일한 틱에서 EA로 다른 주문을 열거나 닫으려는 경우에도 충돌이 발생할 수 있습니다. 그런 다음 서버에서 경우에 따라 작업 수행을 허용하지 않을 수 있습니다.


저것들. 귀하의 질문에 대한 대답은 아니오입니다.

 
ilunga :

틱은 새로운 인용문입니다. 그리고 OrderDelete OrderSend 명령의 실행 시간과 연결이 없습니다.

예 + 미끄러짐이라는 뉴스가 있는 경우 간단한 OrderSend를 실행하는 동안 약 12틱이 소요됩니다. 그리고 시장에 나이트 플랫이 있다면 두 팀 모두 한 틱에 패스할 수 있습니다.

내가 이해하는 한 MT는 틱 단위로 서버 틱에서 정보를 가져옵니다(그리고 서버는 새로운 틱을 보내는 것과 동시에 명령에 응답하여 시간 비용을 최적화합니다). 그리고 새로운 진드기가 오기 전에는 아무것도 알 수 없습니다. 나는 그것을 의미했다. 하지만 이 가정이 잘못된 것은 아닐까? 질문은 12개의 틱과 관련이 없을 가능성이 더 높지만 틱이 느릴 때 귀하가 지정한 두 번째 옵션과 관련이 있습니다.

명령 #1에 대한 응답을 받는 것이 명령 #2로 이동하여 완전히 처리하기 위한 전제 조건이 아닌 방식으로 당신을 올바르게 이해했습니까?

명령 응답이 명령의 "필수적이지 않은" 부분입니까? 다음 명령으로 넘어가는 데 그 존재가 중요하지 않습니까?

아래에서 우리는 alsu와 토론을 시작했으며, 나는 그와 같은 것을 가정하고 있다고 생각합니다. 즉, 응답을 받는 것이 중요합니다. 한 틱에 두 개의 명령을 처리할 수 있다고 작성합니다. 서버의 정보가 시세 흐름과 전혀 연결되지 않은 상태로 제공된다는 것이 밝혀졌습니다.


고맙습니다.

 
alsu :
그것은 모두 틱이 얼마나 빨리 진행되는지에 달려 있습니다. 일반적으로 값을 반환하는 함수, OrderDelete, OrderSend 등 비동기적으로 실행되지 않습니다. 전체 작업이 완료되고 오류 코드가 발행될 때까지(또는 성공하는 경우 NO_ERROR) 다음 명령문이 실행되지 않습니다. 또 다른 점은 이 시간 동안 여러 틱이 실행될 수 있지만 start() 함수에 의해 처리되지 않는다는 것입니다.


예를 들어 한 주문에 대해 손절매가 발생하고 동일한 틱에서 EA로 다른 주문을 열거나 닫으려는 경우에도 충돌이 발생할 수 있습니다. 그런 다음 서버에서 경우에 따라 작업 수행을 허용하지 않을 수 있습니다.


저것들. 귀하의 질문에 대한 대답은 아니오입니다.

자신의 말로 "그렇게"만 밝혀지면 어떻게 그렇지 않습니까? )) 아니면 내가 다시 뭔가를 이해하지 못했나요? 이전 명령 의 오류 코드 가 처리된 후에만 다음 명령문이 실행되는 방식으로 기능이 실행된다는 응답으로 저에게 편지를 보내셨습니다. 나는 "동일한 틱 번호 1에서 두 개의 명령 을 실행할 수 없다 "고 가정한 것 같습니다. 왜냐하면 응답(동일한 답변 또는 오류 코드)이 가장 먼저 새 틱으로 나타나기 때문입니다. 아님? 아니면 명령에 대한 응답이 따옴표 스트림과 연결되지 않은 별도의 시간 스트림으로 이동합니까? 아마도 내 실수는 명령 실행 결과가 새 인용문과 함께 반환된다고 가정한 것입니까?

물론, 먼저 틱이 느린 상황을 의미했습니다.

 
알려주세요, 거래를 마감하라는 표시 신호에도 불구하고 고문이 긍정적인 거래만 마감하도록 할 수 있습니까? 그리고 다음 지표 신호에 닫으면 이익이 발생합니까?
 
Les :

내가 이해하는 한 MT는 틱 단위로 서버 틱에서 정보를 가져옵니다(그리고 서버는 새로운 틱을 보내는 것과 동시에 명령에 응답하여 시간 비용을 최적화합니다). 그리고 새로운 진드기가 오기 전에는 아무것도 알 수 없습니다. 나는 그것을 의미했다. 하지만 이 가정이 잘못된 것은 아닐까? 질문은 12개의 틱과 관련이 없을 가능성이 더 높지만 틱이 느릴 때 귀하가 지정한 두 번째 옵션과 관련이 있습니다.

명령 #1에 대한 응답을 받는 것이 명령 #2로 이동하여 완전히 처리하기 위한 전제 조건이 아닌 방식으로 당신을 올바르게 이해했습니까?

명령 응답이 명령의 "필수적이지 않은" 부분입니까? 다음 명령으로 넘어가는 데 그 존재가 중요하지 않습니까?

아래에서 우리는 alsu와 토론을 시작했으며, 나는 그와 같은 것을 가정하고 있다고 생각합니다. 즉, 응답을 받는 것이 중요합니다. 한 틱에 두 개의 명령을 처리할 수 있다고 작성합니다. 서버의 정보가 시세 흐름과 전혀 연결되지 않은 상태로 제공된다는 것이 밝혀졌습니다.


고맙습니다.

명령 응답과 눈금은 별개이며 관련이 없습니다. 데드 플랫이 있는 경우 한 틱에 여러 주문을 열거나 닫을 "시간이 있습니다".
 

안녕하세요. 나는 프로그래밍을 전혀 잘하지 못한다. 따라서 도움을 요청합니다. StopLoss 및 TrailingStop에 의한 포지션 클로징 을 코드에 추가하도록 도와주세요. 조언자는 내 것이 아니지만 전략은 나쁘지 않으므로 시행 착오를 통해 나는 스스로 조언자를 다시 만듭니다. 관심 있는 분들을 위해 어드바이저를 말하자면 원래 포장에 그대로 싣습니다. 다음은 내가 하는 일입니다.


 //+------------------------------------------------------------------+
//|                                             stohastic_system.mq4 |
//|                                                    Анатолий      |                                                                  |
//+------------------------------------------------------------------+

extern double Lots= 0.4 ;
extern int TakeProfit= 50 ;
extern int NWave= 2 ;
extern int K= 9 ;
extern int D= 3 ;
extern int slowing= 5 ;
extern int Average_method= 2 ;
extern int price_field= 0 ;

int K_level= 0 ;
int down= 0 ;
int up= 0 ;


int init()
  {

   return ( 0 );
  }

int deinit()
  {

   return ( 0 );
  }

int start()
  {
     int ticket= 0 ;
     double stoch_1= iStochastic ( NULL , 0 ,K,D,slowing,Average_method,price_field,MODE_MAIN, 1 );
     double stoch_2= iStochastic ( NULL , 0 ,K,D,slowing,Average_method,price_field,MODE_MAIN, 2 );
     double stoch_3= iStochastic ( NULL , 0 ,K,D,slowing,Average_method,price_field,MODE_MAIN, 3 );
     int Hour_curr= TimeHour ( TimeCurrent ());
    
     if ((stoch_1> 90 )&&(stoch_2> 70 )) K_level= 90 ;
     if ((stoch_1< 10 )&&(stoch_2< 30 )) K_level= 10 ;  
     if ( OrdersTotal ()< 1 )
      {        
         if ((Hour_curr>= 1 )&&(Hour_curr< 24 )) //проверка сигналов только в этот промежуток времени
          {
             if ((K_level== 10 )&&(stoch_1> 10 )) //сигнал на покупку
              {
                 RefreshRates ();
                 Print ( "Сигнал на покупку. stoch_1=" ,stoch_1, " stoch_2=" ,stoch_2);
                ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 10 , 0 ,Ask+TakeProfit* Point , "buy_order1" , 1 , 0 , Blue );
                
                K_level= 10 ; 
                down= 0 ;               
              }
             if ((K_level== 90 )&&(stoch_1< 90 )) //сигнал на продажу
              {
                 RefreshRates ();
                 Print ( "Сигнал на продажу. stoch_1=" ,stoch_1, " stoch_2=" ,stoch_2);
                ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 10 , 0 ,Ask-TakeProfit* Point , "sell_order1" , 1 , 0 , Red );
               
                K_level= 90 ;
                up= 0 ; 
              }
          }
      }
    
   
   
     return ( 0 );
  }
   
파일:
사유: