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

 
Techno :
PapaYozh , 이 두 가지 옵션은 모두 닫기 전용이지만 수정 사항이 있는 경우에는 어떻게 됩니까? 닫기 및 업데이트를 위한 2개의 다른 주기보다 전체 처리에 2개의 틱이 필요한 것이 좋습니다.


무언가를 닫고 수정해야 하는 경우 for (i=0; i<OrderTotals(); i++) 구성은 더욱 잘못된 것입니다.

OrdersTotal()-1에서 0으로 이동해야 합니다.

 for ( i=OrderTotals()- 1 ; i>= 0 ; i-- )
{ 




 

저것들. 그런 구조가 맞을까요?

 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 ;
      }        
    }
  }  
}
 

그러나 나는 여전히 정규화를 이해하지 못합니다.

결국 가격을 계산하면 한 가지인데, 터미널 용량까지 가져와야 하는 것은 당연하다.

그러나 여기에서 청산은 플로우에서 받은 현재 가격 으로 이루어지며 물론 Digits보다 길 수 없습니다.

 
valenok2003 :

그러나 여기에서 청산은 플로우에서 받은 현재 가격으로 이루어지며 물론 Digits보다 길 수 없습니다.

정규화되지 않은 따옴표가 있는 테스터를 위한 것입니다.
 
valenok2003 :

그러나 나는 여전히 정규화를 이해하지 못합니다.

결국 가격을 계산하면 한 가지인데, 터미널 용량까지 가져와야 하는 것은 당연하다.

그러나 여기에서 청산은 플로우에서 받은 현재 가격으로 이루어지며 물론 Digits보다 길 수 없습니다.

농담이야, 그럴 수 있어. 때때로 Digits=4 Vid는 1.32343545654와 같을 수 있습니다. 자주는 아니지만 발생합니다
 
Techno :
농담이야, 그럴 수 있어. 때때로 Digits=4 Vid는 1.32343545654와 같을 수 있습니다. 자주는 아니지만 발생합니다


살고 배우십시오. 고맙습니다.
 
valenok2003 :

저것들. 그런 구조가 맞을까요?


그렇지 않습니다. 도구의 "기호"를 확인하지 않습니다. 여러 상품에 대한 주문이 시작되면 한 상품의 주문을 다른 상품의 가격으로 마감할 위험이 있습니다. Expert Advisor가 던져질 차트에서 악기의 주문을 마감해야 하는 경우 차트의 "기호"를 사용해야 합니다. 어떤 차트에 상관없이 모든 주문을 마감해야 하는 경우 조언자는 주문의 "기호"를 계산하고 해당 "캐릭터"의 요청 및 입찰을 요청합니다. 예, 코드에 추가 단계가 있습니다.

행운을 빕니다.

 
valenok2003 :

저것들. 그런 구조가 맞을까요?

 void CloseThisSymbolAll() {
   for ( int trade = OrdersTotal () - 1 ; trade >= 0 ; trade--) {
       OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == Symbol ()) {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber) {
         while (!IsTradeAllowed()) Sleep ( 1000 );
             if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, Blue );
             if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, Red );
             Print ( "close ALL orders Type : order :  Bid  " +OrderType()+ " :  " +OrderOpenPrice()+ "  :  " +Bid);            
         }
      }
   }
}
이렇게 하세요.
 
VladislavVG :


예, 코드에 추가 단계가 있습니다.

당신이 그것을 의미하는 경우
 int Total = OrdersTotal ();

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

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

 
Techno :
농담이야, 그럴 수 있어. 때때로 Digits=4 Vid는 1.32343545654와 같을 수 있습니다. 자주는 아니지만 발생합니다

그러나 예제 close.mq4 닫기 스크립트(표준 MT4 배포)에는 정규화가 없습니다.

   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if (cmd==OP_BUY || cmd==OP_SELL)
        {
         while (true)
           {
            if (cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price, 3 , CLR_NONE );
            if (result!=TRUE) { error= GetLastError (); Print ( "LastError = " ,error); }
            else error= 0 ;
            if (error== 135 ) RefreshRates();
            else break ;
           }
        }
     }