어떤 디자인이 맞습니까? - 페이지 4

 
Martingeil :
이렇게 하세요.

 if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber)

여기에이 오해가 있습니다. 제 생각에는 여기에는 전혀 필요하지 않습니다. 아니면 내가 틀렸습니까?

 
valenok2003 :

여기에이 오해가 있습니다. 제 생각에는 여기에는 전혀 필요하지 않습니다. 아니면 내가 틀렸습니까?

이 특정 기호의 마법을 차단하는 데 필요합니다.

검색할 때 마법 없이 단순히 기호로 주문의 처음부터 검색하고, 없으면 기능이 작동을 멈춥니다.......... 그러한 기호가 있는 주문을 찾으면 다음을 통과합니다. 그 중 마법을 찾기 위해 마법을 찾고, 마법에 해당하는 것을 닫습니다. 거래 흐름이 자유롭다면.

 
valenok2003 :

여기에이 오해가 있습니다. 제 생각에는 여기에는 전혀 필요하지 않습니다. 아니면 내가 틀렸습니까?

모든 주문을 삭제하는 것에 대해 이야기하는 경우 정규화에 대해 이 줄이 필요하지 않습니다. 내장 스크립트가 예제를 가져와야 한다는 아이디어는 어디서 얻었습니까?
 
Martingeil :

이 특정 기호의 마법을 차단하는 데 필요합니다.

검색할 때 먼저 마법이 없는 기호로 단순히 주문을 검색하고, 없으면 기능이 작동을 중지하고, 이러한 기호가 있는 주문이 있으면 통과하여 마법과 일치하는 것을 찾은 다음 닫습니다. 무역 흐름이 자유롭다면.

그리고 OrderMagicNumber()를 사용하여 가져오기 때문에 MagicNumber를 어떻게 미리 알 수 있습니까? 그리고 게다가 라인
OrderSymbol() == Symbol ()

중복.

또한 이 라인

 Print ( "close ALL orders Type : order :  Bid  " +OrderType()+ " :  " +OrderOpenPrice()+ "  :  " +Bid);

내 의견으로는 불필요합니다. 폐쇄에 대한 정보는 이미 기록되어 있습니다.

 
Techno :
모든 주문을 삭제하는 것에 대해 이야기하는 경우 정규화에 대해 이 줄이 필요하지 않습니다. 내장 스크립트가 예제를 가져와야 한다는 아이디어는 어디서 얻었습니까?


글쎄, 마르크스, 결국.
 
Martingeil :

이 특정 기호의 마법을 차단하는 데 필요합니다.

검색할 때 마법 없이 단순히 기호로 주문의 처음부터 검색하고, 없으면 기능이 작동을 멈춥니다.......... 그러한 기호가 있는 주문을 찾으면 다음을 통과합니다. 그 중 마법을 찾기 위해 마법을 찾고, 마법에 해당하는 것을 닫습니다. 거래 흐름이 자유롭다면.

그냥 모든 주문을 닫는다는 얘기니까 바로 들어가진 않았어요

나는 당신의 예를 다음과 같이 바꿀 자유를 얻었습니다.

  for ( int trade = OrdersTotal () - 1 ; trade >= 0 ; trade--) 
  {
    OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol() == Symbol ()) 
    { 
      if (OrderMagicNumber() == MagicNumber)
      {
        while (!IsTradeAllowed()) Sleep ( 1000 );
        if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), 5 , CLR_NONE );
        if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), 5 , CLR_NONE );
      }
    }
  }

모든 주문을 닫으려면

  for ( int trade = OrdersTotal () - 1 ; trade >= 0 ; trade--) 
  {
    OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol() == Symbol ()) 
    { 
      while (!IsTradeAllowed()) Sleep ( 1000 );
      if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), 5 , CLR_NONE );
      if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), 5 , CLR_NONE );
    }
  }
 
valenok2003 :


글쎄, 마르크스, 결국.
예, 엥겔스도) 개인 숭배가 필요하지 않습니다. 지식을 바탕으로 작성하십시오)
 
valenok2003 :
당신이 그것을 의미하는 경우

다음은 코드 투명도를 위한 추가 변수입니다.

아니면 다른 얘기를 하고 있는 걸까요?

 void Close_All()
{
  int Total = OrdersTotal ();
  for ( int i=Total; i >= 1 ; i--)                                                        
  {                                                                                          
    if ( OrderSelect ( i- 1 ,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch (OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Bid, Digits ), 5 ); break ;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Ask, Digits ), 5 ); break ;
        default     : break ;
      }        
    }
  }  
}

이 경우 그것에 대해.

C\C++의 경우 "공통 표준"은 다음과 같습니다.

 void Close_All()
{
  int Total = OrdersTotal ();
  for ( int i=Total- 1 ; i >= 0 ; i--)                                                        
  {                                                                                          
    if ( OrderSelect ( i ,SELECT_BY_POS,MODE_TRADES))
    {
      switch (OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Bid, Digits ), 5 ); break ;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Ask, Digits ), 5 ); break ;
        default     : break ;
      }        
    }
  }  
}

차이점은 거래 횟수입니다. 이 경우 강력한 효과가 없다면 예를 들어 테스터의 스타일 차이가 최적화 시간에 상당한 영향을 미칠 것입니다. 실제로 - 작업 속도에서 때로는 중요합니다.

이 구성은 특히 느립니다.

 for ( int i= 0 ; i< OrdersTotal (); i++)

여기에서 루프의 각 패스 에서 함수가 호출 됩니다. 계산 비용 측면에서 가장 "비싼" 작업입니다.

행운을 빕니다.

ZY 예, 이러한 의미에서 코드를 수정한 것으로 보입니다.

 

결과는 다음과 같은 스크립트입니다.

 //+------------------------------------------------------------------+
//|                                           CloseThisSymbolAll.mq4 |
//+------------------------------------------------------------------+
int start()
{
//----
  for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--) 
  {
    OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol() == Symbol ()) 
    { 
      while (!IsTradeAllowed()) Sleep ( 1000 );
      if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), 5 , CLR_NONE );
      if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), 5 , CLR_NONE );
    }
  }
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
질문 - 왜 항상 모든 주문을 마감하지 않습니까? 예를 들어, 연속으로 세 개의 Sell을 연 다음 스크립트로 닫으려고 하면 하나 또는 둘 또는 모두 닫힐 수 있습니다. 이유는 무엇입니까?
 

젠장, 이것은 필요합니다. 모든 옵션에서 잘못된 옵션 중 하나를 선택하십시오. 내 친구, 당신은 코딩에 금기입니다.

그리고 requots 때문에 모든 것을 닫지 않습니다.