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

 
khorosh :
코드의 정확성을 평가하려면 작성자가 얻고자 하는 것이 무엇인지 정확히 알아야 합니다. 귀하의 정보가 충분하지 않습니다. 얻고자 하는 것이 완전히 명확하지 않습니다. 반대 주문을 열어 그리드를 닫은 후 손실을 보상하고 가격이 이 마지막 주문 방향으로 특정 수의 포인트를 통과할 것으로 예상하는 경우 보상 프로세스는 이 주문의 로트와 가격이 유리한 방향으로 지나갈 거리. 즉, 로트를 계산하기 위해서는 손실을 보상하기 위해 가격이 통과해야 하는 거리도 설정해야 합니다. 아마도 당신은 다른 것을 의미했습니다.


예, 더 정확해야합니다. 이 함수가 해야 할 일을 이미 두 번이나 충분히 설명했지만 아무도 대답하지 않았습니다. 다시 한 번, 이 기능은 무엇을 해야 합니까? 내가 주문 그리드를 가지고 있다고 가정해 봅시다. 그들이 같은 단계로 열려 있는지 여부는 중요하지 않습니다. 일부 주문은 더 일찍 열렸고 일부는 나중에 열렸습니다. 즉, 각 위치는 다른 로트에서 다른 수의 포인트를 통과했습니다. 특정 조건에서 그리드가 닫히고 TP 포인트에 대한 이 그리드의 손실을 충당하는 데 필요한 로트를 계산해야 합니다. 두 개의 미러 함수를 작성하지 않기 위해 함수에 otype 매개변수를 도입했습니다.

그러나 어딘가에 오류가 있습니다. 문제를 해결하도록 도와주세요.

 double FindRightLot ( int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
   double Lot= 0 ; double TotalLot= 0 ;
   for ( int i = OrdersTotal ()- 1 ; i> 0 ; i--)
  {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
    {
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic && OrderType () == otype)
       {
         if (otype == OP_BUY )
         {
           Lot = NormalizeDouble ((( OrderOpenPrice ()- Bid )* Point )* OrderLots ()/TP, 2 ); 
           if (Lot> 0 )
           {
              TotalLot= TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL )
         {
           Lot = NormalizeDouble ((( Ask - OrderOpenPrice ())* Point )* OrderLots ()/TP, 2 );
           if (Lot> 0 )
           {
            TotalLot= TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
 
BeerGod :

어떻게 든 올바르게 구현하여 0에서 시작하여 닫힐 수 있습니까? 가능하면 코드를 입력하십시오.
전체 목록(주문)을 필요한 방향으로 반복하고 티켓 값을 배열에 입력한 다음 이 배열을 반복하여 주문을 삭제합니다.
 
BeerGod :

어떻게 든 올바르게 구현하여 0에서 시작하여 닫힐 수 있습니까? 가능하면 코드를 입력하십시오.


황급히:

 //+------------------------------------------------------------------+
//|                 Закрыть все ордера                               |
//+------------------------------------------------------------------+


double ClossAllOrders ()

{
   for ( int i= 0 ; i< OrdersTotal (); )
  {
     if ( ! OrderSelect (i, SELECT_BY_POS ) )
      break;
    
     int type   = OrderType ();

     bool result = false ;
    
     switch (type)
    {
       //Close opened long positions
       case OP_BUY        : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ), Slippage, Lime );
                           break ;
      
       //Close opened short positions
       case OP_SELL       : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ), Slippage, Lime );
                           break ;

       //Close pending orders
       case OP_BUYLIMIT   :
       case OP_BUYSTOP    :
       case OP_SELLLIMIT :
       case OP_SELLSTOP   : result = OrderDelete ( OrderTicket () );
    }
    
     if (result == false )
    {
       Print ( "Order " , OrderTicket () , " failed to close. Error:" , GetLastError() );
      i++;
       Sleep ( 500 );
    }  
  }
}

// End
 
Trader7777 :

예, 더 정확해야합니다. 이 함수가 해야 할 일을 이미 두 번이나 충분히 설명했지만 아무도 대답하지 않았습니다. 다시 한 번,이 기능은 무엇을해야합니까? 내가 주문 그리드를 가지고 있다고 가정해 봅시다. 그들이 같은 단계로 열려 있는지 여부는 중요하지 않습니다. 일부 주문은 더 일찍 열렸고 일부는 나중에 열렸습니다. 즉, 각 위치는 다른 로트에서 다른 수의 포인트를 통과했습니다. 특정 조건에서 그리드가 닫히고 TP 포인트에 대한 이 그리드의 손실을 충당하는 데 필요한 로트를 계산해야 합니다. 두 개의 미러 함수를 작성하지 않기 위해 함수에 otype 매개변수를 도입했습니다.

그러나 어딘가에 오류가 있습니다. 문제를 해결하도록 도와주세요.



나는 다른 길을 갈 것이다. 먼저 그리드 폐쇄로 인한 손실을 계산합니다. 그럼 모든 것이 간단합니다. 손실 = 다음 주문의 이익. 주문의 이익을 로트와 TR로 표현하고 방정식에서 로트를 찾으십시오.
 
Contender :


황급히:


응답해주신 모든 분들께 감사드립니다. 모든 것이 올바르게 작동합니다!


 
khorosh :
나는 다른 길을 갈 것이다. 먼저 그리드 폐쇄로 인한 손실을 계산합니다. 그럼 모든 것이 간단합니다. 손실 = 다음 주문의 이익. 주문의 이익을 로트와 TR로 표현하고 방정식에서 로트를 찾으십시오.


돈이나 포인트에서 그리드를 닫는 손실?
 
Trader7777 :

돈이나 포인트에서 그리드를 닫는 손실?
예금 통화 .
 
그러나 각 쌍의 포인트 가격이 다르다는 사실을 어떻게 고려해야 할까요?
 
Trader7777 :
그러나 각 쌍의 포인트 가격이 다르다는 사실을 어떻게 고려해야 할까요?
그리고 왜 필요합니까?
 
Trader7777 :
그러나 각 쌍의 포인트 가격이 다르다는 사실을 어떻게 고려해야 할까요?

여기에서 구현 방법을 볼 수 있습니다.


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

https://www.mql5.com/ru/forum/113937/page2

https://docs.mql4.com/en/constants/marketinfo