포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 117

 

메타 인용 따옴표에서 그러한 울타리를 처리하는 방법을 알려주십시오.)

 
Zhunko :
메시지를 가로채야 합니다.

메시지가 이미 실행되었으면 큐에서 이미 제거된 것입니다.

그래서 다음 질문이 있습니다.

 #property indicator_chart_window
bool First = true ;
int start(){
   if (First){
       int indexFirstLeftOnChart = WindowFirstVisibleBar(); //иницилизируем под флагом, потому что в init() могут быть артефакты
       Alert ( "indexFirstLeftOnChart " , indexFirstLeftOnChart);
      First = false ;
   }
   if (WindowFirstVisibleBar() != indexFirstLeftOnChart){ //проверяем на каждом тике, изменилось ли значение
       Alert ( "first indexFirstLeftOnChart " , indexFirstLeftOnChart);      
      indexFirstLeftOnChart = WindowFirstVisibleBar(); //если изменилось, записываем его
       Alert ( "second indexFirstLeftOnChart " , indexFirstLeftOnChart);
   }
   return ( 0 );
}

- 첫 번째 indexFirstLeftOnChart가 0인 것으로 밝혀졌기 때문에 매 틱마다 신호음이 울립니다. 그것을 처리하는 방법? 빌드 509.

 
static bool First = true;
 
gyfto :

메시지가 이미 실행되었으면 큐에서 이미 제거된 것입니다.

일반적으로 실행 전에 가로채십시오. 그렇지 않으면 가로채는 이유가 명확하지 않습니까?
 
FAQ :
 static bool First = true ;


준코 :
일반적으로 실행 전에 가로채십시오. 그렇지 않으면 가로채는 이유가 명확하지 않습니까?


실행 전에 질문이 아닙니다. 이는 AccountNumber() 유효성 검사를 dll로 전송하는 것은 의미가 없습니다. dll의 계정 번호는 이미 하드 코딩되어 있다고 가정합니다.

 
static int indexFirstLeftOnChart;
 

나는 간단한 순간에 무언가를 가지고 있습니다. 주문을 조회하는 기능이 있습니다.

t - 모든 주문의 카운터.

p - 보류 중인 주문의 카운터.

 //+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders( int & t, int & p)
{
   int total = OrdersTotal () - 1 ;
   t = 0 ;
   p = 0 ;
   for ( int i=total; i>= 0 ; i--)
   {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderType() > 1 )
      {
          p++;
      }
      t++;
      pr ( "FindOrders(): " + "t = " + t + "   " + TimeToStr( TimeCurrent ()));
      pr ( "FindOrders(): " + "p = " + p + "   " + TimeToStr( TimeCurrent ()));
   }
}

나는 처음부터 전화한다:

 int start()
{
   if (g_lastBarTime == Time[ 0 ])         // На текущем баре все необходимые действия..
       return ( 0 );                               // ..уже были выполнены
   
   int oTotal = 0 , oPending = 0 ;
   
   FindOrders(oTotal, oPending);
   
   int signal = GetGeneralSignal(oTotal);
   
   if (signal != SIGNAL_NO)
   {
       if (!Trade(signal))
       return ( 0 );
   }
   else

실제로 인쇄할 때 주문이 없을 때에도 다음과 같이 표시됩니다(주문이 없을 때도 다음과 같이 인쇄됩니다. ...).

그렇습니까?

 
모두 좋은 저녁입니다. 최근에 저는 MQL4 언어를 마스터하기로 결정했습니다(저는 Sergey Kovalev의 교과서에서 배우고 있습니다). 오늘은 간단한 오더 오프닝 스크립트를 만들기 위해 연습을 해보기로 했습니다. 코드는 다음과 같이 밝혀졌습니다.
정수 시작()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
경고( GetLastError() );

반품;

}

스크립트가 작동하지 않고 오류 4109(거래가 허용되지 않음)가 표시되었습니다. 상황을 변경하려고 하면 오류 4016(초기화되지 않은 배열)도 나타납니다. 이러한 오류의 원인은 무엇이며 거래를 열기 위한 간단한 스크립트를 만드는 방법을 알고 싶습니다. 관심을 끌기 위해 https://book.mql4.com/ru/trading/ordersend 자습서(GetLastError 함수만 추가)에서 예제를 복사했지만 여전히 오류 4109가 발생했습니다.

 int start ()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend ( Symbol () , OP_BUY , 0.1 , Ask , 3 , Bid - 15 * Point , Bid + 15 * Point ) ;
Alert(GetLastError());
   return ;                                   // Выход из start()
  }

Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
 
예금 = 유형 6
 
알려주세요. 기본적으로 주문에 댓글을 어떻게 설정할 수 있나요 ???