OrderSend() 함수에 버그가 있습니까? - 페이지 10

 
Roger :
이 방법으로는 할 수 없습니다. 첫 번째 틱에서 조건이 일치하지 않으면 전체 시간이 낭비됩니다.


H1에서 상태는 다음 막대까지 60분 동안 지속됩니다.

 //+------------------------------------------------------------------+
//|                                                     чернoвик.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+

static datetime LastTime = 0 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----  
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (NewBar()== true )
       {
        
           int ticket= OrderSend ( Symbol (),OP_BUY, 1 ,Ask, 3 ,Bid- 250 * Point ,Ask+ 250 * Point , " " , 16384 , 0 ,Green);
        
       }
   Comment ( "LastTime   " ,LastTime, "   NewBar   " ,NewBar());  
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
bool NewBar() 
    {
       
       if (iTime( NULL , 0 , 0 ) != LastTime) 
       {
          LastTime = iTime( NULL , 0 , 0 );      
           return ( true );
       } 
       else
           return ( false );
     
    }

테스터의 댓글을 봐

 
pako :


각 막대에서 한 위치만 열어 두십시오.

파코 , 놀랐어! 이 스레드 전체에서 "알바니아어 코드"로 저를 놀리셨지만 무엇을 제안하셨습니까? :) 같은 것, 단지 측면 보기! 결국 더 원시적 으로만 사용된 새 막대 와 동일한 기능을 갖게 됩니다. 그리고 주문을 보내는 기능, 모든 신호를 우회하는 등의 기능이 있습니다. 그러나 해결책은 여기에 없었습니다! 알바니아어가 있습니다.

백조 :
그럼 타키
현재 표시줄에서 주문이 열린 경우에만. 저것들. OpenBuy/Sell 기능에서 이 줄을 이동합니다.





백조 감사합니다! 그것이 해야 할 일이었습니다! 오더 개시 기능에서 새로운 바 시간이 할당되면 공백이 없습니다 . 나는 이미 그것을 확인했고, 나는 모든 것이 어떻게 명확하게 진행되는지 기뻐하지 않습니다. 전문가는 제대로 작동합니다.

한 가지 질문이 남아 있습니다. 이전 버전이 작동하지 않는 이유는 무엇입니까? 다음과 같은 조건도 있었습니다.

 // Проведение торговых операций
   if (signal != SIGNAL_NO)
       if (!Trade(signal))
           return ( 0 );

나는 여기 코드가 다음과 같다고 생각했습니다. Trade(signal)) 함수가 false 를 반환하면 함수를 종료하고... 그리고 줄의 lastBarTime 변수를 업데이트하기 전에:

lastBarTime = iTime( NULL , 0 , 0 );

오지 않을거야. 그러나 그것이 밝혀 졌듯이 모든 것이 그렇지 않습니다. 이 순간을 설명할 수 있습니까? 그것은 심지어 매우 흥미 롭습니다. 궁금하다..

 
hoz :

백조 감사합니다! 그것이 해야 할 일이었습니다! 오더 개시 기능에서 새로운 바 시간이 할당되면 공백이 없습니다 . 나는 이미 그것을 확인했고, 나는 모든 것이 어떻게 명확하게 진행되는지 기뻐하지 않습니다. 전문가는 제대로 작동합니다.

한 가지 질문이 남아 있습니다. 이전 버전이 작동하지 않는 이유는 무엇입니까? 다음과 같은 조건도 있었습니다.

나는 여기 코드가 다음과 같다고 생각했습니다. Trade(signal)) 함수가 false 를 반환하면 함수를 종료하고... 그리고 줄의 lastBarTime 변수를 업데이트하기 전에:

오지 않을거야. 그러나 그것이 밝혀 졌듯이 모든 것이 그렇지 않습니다. 이 순간을 설명할 수 있습니까? 그것은 심지어 매우 흥미 롭습니다. 궁금하다..

예, 하지만 만약
signal == SIGNAL_NO

새 막대의 첫 번째 눈금에서 lastBarTime 이 업데이트됩니다.


없이 할 수있다

   if (signal != SIGNAL_NO)
의도한대로 동작합니다.. 코드 확인이 어렵습니다.)
 
hoz :

파코 , 놀랐어! 이 스레드 전체에서 "알바니아어 코드"로 저를 놀리셨지만 무엇을 제안하셨습니까? :) 같은 것, 단지 측면 보기! 결국 더 원시적으로만 사용된 새 막대와 동일한 기능을 갖게 됩니다. 그리고 주문을 보내는 기능, 모든 신호를 우회하는 등의 기능이 있습니다. 그러나 해결책은 여기에 없었습니다! 알바니아어가 있습니다.

파코 :
TOR를 다시 공식화하는 것이 어렵지 않다면 왜 새로운 막대의 제어가 필요합니까?


호즈 :
쉽게 공식화 할게요! 1점 더 생각안했는데 요점만 말씀드리겠습니다 .

주문 수 에 대한 제한이 전혀 없었을 필요가 있습니다. 저것들. 주문은 수량에 관계없이 열 수 있습니다... 얼마나 많은 주문이 있더라도 현재 표시줄에서는 1개의 주문만 열어야 합니다. 그게 다야

저것들. 새 막대가 열렸습니다. 즉, 이 막대에서 1개의 주문을 열 수 있지만 현재 막대에서는 1개 이하의 주문을 열 수 있습니다. 다음 주문은 다음 바에서만 열 수 있으며 이전에는 열 수 없습니다..

이제 명확합니까?

나는 TOR에 따라 썼고, 한 위치가 새 막대에서 열립니다.

나는 TK에서 다른 것을 볼 수 없다

나는 당신에게 성공을 기원합니다

사유: