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

 
Vladon :
한 번에 코드 기반에서 다른 유형을 닫기 위한 세트를 게시했습니다.
이 경우 이 분기에서 유용하지 않은 컴파일된 파일을 제공합니다.
블라돈 :
https://www.mql5.com/ru/code/mt4

죄송합니다. 여기에 잘못된 포럼이 있습니다.

범죄가 없습니다.

 

오, 그게 아니에요 :-), 바로 지금.


https://www.mql5.com/ru/code/9052

 
int Close_This_Symbol_All()
{
//----
  string a = "Всего ордеров = " + DoubleToStr( OrdersTotal (), 0 )+ "\n" ;
  for ( int Cnt = OrdersTotal (); Cnt >= 0 ; Cnt--) 
  {
    if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;

        while (!IsTradeAllowed()) Sleep ( 1000 );
        RefreshRates();
        if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, CLR_NONE );
        if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, CLR_NONE );
       Comment (a+ GetLastError ());  
  }
//----
   return ( 0 );
}
그런 다음 이러한 구성은 이론적으로 일반적으로 모든 주문을 닫아야 하지만 현재 창의 쌍만 닫습니다. 무엇이 잘못되었습니까?
 
Vladon :

오, 그게 아니에요 :-), 지금.


https://www.mql5.com/ru/code/9052


예, 귀하의 세트는 좋지만 내 코드에서 오류가 어디에 있는지 알 수 없습니다.
 
valenok2003 :

예, 귀하의 세트는 훌륭하지만 내 코드에서 오류가 어디에 있는지 알 수 없습니다.

 int Close_This_Symbol_All()
{
//----
   string a = "Всего ордеров = " + DoubleToStr( OrdersTotal (), 0 )+ "\n" ;
   for ( int Cnt = OrdersTotal (); Cnt >= 0 ; Cnt--) 
  {
     if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;

         while (!IsTradeAllowed()) Sleep ( 1000 );
        RefreshRates();
         if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, CLR_NONE );
         if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, CLR_NONE );
       Comment (a+ GetLastError ());  
  }
//----
   return ( 0 );
}


for ( int  Cnt = OrdersTotal (); Cnt >= 0 ; Cnt--) 
때때로 완고함은 단순히 놀랍습니다. 이 스레드의 세 번째 페이지와 스레드를 따라 더 나아가 주문을 열거하는 올바른 예가 표시되었습니다. 결국 RTFM. 몇 번이나 반복할 수 있습니까? 배열 범위를 벗어났습니다 . 번호가 있는 주문
 OrdersTotal ()

존재하지 않는다 ! 그러면 다음과 같이 작동합니다.

 if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;
 
VladislavVG :
때때로 완고함은 단순히 놀랍습니다. 이 스레드의 세 번째 페이지와 스레드를 따라 더 나아가 주문을 열거하는 올바른 예가 표시되었습니다. 결국 RTFM. 몇 번이나 반복할 수 있습니까? 배열 범위를 벗어났습니다 . 번호가 있는 주문

존재하지 않는다 ! 그러면 다음과 같이 작동합니다.


Vladislav, 죄송합니다. 이것은 완고함이 아니라 부주의입니다. 나는 실험했고 코드를 수정하지 않았다.

확실히 맞습니다:

 for ( int  Cnt = OrdersTotal ()- 1 ; Cnt >= 0 ; Cnt--) 

다만, 수정된 설계로 인해 이는 이유가 아닌 것으로 보인다.

 int Close_This_Symbol_All()
{
//----
  string a = "Всего ордеров = " + DoubleToStr( OrdersTotal (), 0 )+ "\n" ;
  for ( int Cnt = OrdersTotal ()- 1 ; Cnt >= 0 ; Cnt--) 
  {
    if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;

        while (!IsTradeAllowed()) Sleep ( 1000 );
        RefreshRates();
        if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, CLR_NONE );
        if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, CLR_NONE );
       Comment (a+ GetLastError ());  
  }
//----
   return ( 0 );
}

어쨌든 스크립트를 던진 창 쌍에 대해서만 주문을 닫고 모든 쌍을 닫지는 않습니다.

 

topic-starter의 프로필에서 "주문을 포함하여 MQL4로 작성합니다." - 과잉 돼지의 전형적인 예.

나는 프로그래머도 평균이라는 것을 이해합니다. 당신은 그것에 익숙해. 예, 때로는 시도하지만 코드를 잘 작성하지 않습니다. 근데 뭐될까...

나는 누군가의 오랜 가정을 확인합니다. 화제 스타터는 머리에 양털이 있습니다.

 
valenok2003 :


Vladislav, 죄송합니다. 이것은 완고함이 아니라 부주의입니다. 나는 실험했고 코드를 수정하지 않았다.

확실히 맞습니다:

다만, 수정된 설계로 인해 이는 이유가 아닌 것으로 보인다.

어쨌든 스크립트를 던진 창 쌍에 대해서만 주문을 닫고 모든 쌍을 닫지는 않습니다.

모든 쌍인 경우 Ask, Bid를 잘못 사용하고 있는 것입니다. 현재 차트에서 가져옵니다. 주문을 마감할 때 오류를 처리한 경우 메시지가 표시됩니다.

질문 대신 - MarketInfo(OrderSymbol(),MODE_ASK);, 입찰 대신 - MarketInfo(OrderSymbol(),MODE_BID);

행운을 빕니다.

PS 및 스크립트 이름을 변경하십시오. 그렇지 않으면 이름에 따라 올바르게 작동합니다.).

 
gip :

topic-starter의 프로필에서 "주문을 포함하여 MQL4로 작성합니다." - 과잉 돼지의 전형적인 예.

나는 프로그래머도 평균이라는 것을 이해합니다. 당신은 그것에 익숙해집니다. 예, 때로는 시도하지만 코드를 잘 작성하지 않습니다. 근데 뭐될까...

나는 누군가의 오랜 가정을 확인합니다. 화제 스타터는 머리에 양털이 있습니다.


물론 이런 말을 듣는 것은 부끄러운 일입니다. 그러나 나는 내가 이행할 수 없는 명령은 절대 받지 않습니다. 그리고 주문 수준도 다를 수 있음을 이해하시기 바랍니다. 그리고 누군가가 말했듯이-모르는 것을 부끄러워하지 마십시오. 묻지 못해서 부끄럽습니다.... 그리고 제가 알기로 이 포럼은 배움의 기회가 있기 위해 존재하는 것뿐입니다. 그러므로 당신의 속물은 나에게 분명하지 않으며 나는 당신의 비판을 받아들이지 않습니다. 나는 당신이 이 포럼에서 가장 똑똑하다는 것을 인정하지만.

추신: 프로그래밍의 기술은 코드를 작성하는 능력이 아니라 올바른 알고리즘을 구성하는 능력에 있습니다. 평생 Lada를 몰고 벤츠로 옮겼는데 손잡이와 버튼이 어디에 있는지 모른다고 해서 나쁜 운전자가 되지는 않는 것과 같습니다.

 
VladislavVG :

모든 쌍인 경우 Ask, Bid를 잘못 사용하고 있는 것입니다. 현재 차트에서 가져옵니다. 주문을 마감할 때 오류를 처리한 경우 메시지가 표시됩니다.

질문 대신 - MarketInfo(OrderSymbol(),MODE_ASK);, 입찰 대신 - MarketInfo(OrderSymbol(),MODE_BID);

행운을 빕니다.


대단히 감사합니다. 오류를 처리하는 중입니다. 메시지가 옵니다 - 잘못된 가격 이지만 무엇이 잘못되었는지 알 수 없습니다.