MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1638

 
makssub # :

끝에서 두 번째가 아닌 마지막을 제공합니다(


당신이 쓴 것을 보십시오:

" 가격이 내려가서 다른 주문이 열리면 OrderOpenPrice가 최대인 주문이 끝에서 두 번째 주문이 됩니다 ."

함수는 최대 또는 최소 시작 가격을 찾습니다.

끝에서 두 번째만 원하는 경우 티켓을 열 때 기억하는 것이 좋습니다.

 
MakarFX # :

당신이 쓴 것을 보십시오:

" 가격이 내려가서 다른 주문이 열리면 OrderOpenPrice가 최대인 주문이 끝에서 두 번째 주문이 됩니다 ."

함수는 최대 또는 최소 시작 가격을 찾습니다.

끝에서 두 번째만 원하는 경우 티켓을 열 때 기억하는 것이 좋습니다.

죄송합니다. 때때로 제 생각을 명확하게 전달하지 못합니다.

이미 틱으로 하고 시간이 지나면 변동이 있을 때 가격이 오르고 내릴 수 있을 때 끝에서 두 번째가 아닐 수도 있습니다. 이러한 옵션은 이미 해결되었습니다. 따라서 시가가 최선의 선택입니다. 글쎄, 또는이 모든 것을 다시 확인하는 많은 기능이 있고 거기에서 나는 매우 혼란스러워 할 것입니다. 모든 것을 머리에 담을 시간이 많지 않습니다.

그 전에 나는 끝에서 두 번째에 썼고 그는 포기했습니다. 한 가지 문제는 OP_SELL과 OP_BUY를 구별하지 못했습니다. 두 번째 것이 나타나면 그는 그것을 세기 시작합니다(

 
makssub # :

죄송합니다. 때때로 제 생각을 명확하게 전달하지 못합니다.

이미 틱으로 하고 시간이 지나면 변동이 있을 때 가격이 오르고 내릴 수 있을 때 마지막에서 두 번째가 아닐 수도 있습니다. 이러한 옵션은 이미 해결되었습니다. 따라서 시가가 최선의 선택입니다. 글쎄, 또는이 모든 것을 다시 확인하는 많은 기능이 있고 거기에서 나는 매우 혼란스러워 할 것입니다. 모든 것을 머리에 담을 시간이 많지 않습니다.

그 전에 나는 끝에서 두 번째에 썼고 그는 포기했습니다. 한 가지 문제는 OP_SELL과 OP_BUY를 구별하지 못했습니다. 두 번째 것이 나타나면 그는 그것을 세기 시작합니다(

찾을 필요가 있는 것을 더 쉽게 작성하십시오(이런 일이 발생했다면 가져와야 합니다) ... 그렇지 않으면 저도 이미 혼란스럽습니다.

 
MakarFX # :

찾을 필요가 있는 것을 더 쉽게 작성하십시오(이런 일이 발생했다면 가져와야 합니다) ... 그렇지 않으면 저도 이미 혼란스럽습니다.

찾을 주문의 가격을 강조 표시했습니다.

OP_BUY가 없으면 어렵지 않습니다. OP_BUY가 나타나면 내 코드가 작동하지 않습니다(

 double FindPenultSellPrice()
{
   double   UpPrice = DBL_MAX , profit = 0 ;
   int     i;
   for (i = OrdersTotal ()- 2 ; i >= 0 ; i--)
   {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
             if ( OrderOpenPrice() < UpPrice)
            {
               UpPrice = OrderOpenPrice();
            }
         }
      }
   }
   return (UpPrice);
}
 
MakarFX # :

찾을 필요가 있는 것을 더 쉽게 작성하십시오(이런 일이 발생했다면 가져와야 합니다) ... 그렇지 않으면 저도 이미 혼란스럽습니다.

그는 시간 기준으로 끝에서 두 번째 순서가 필요하지 않고 가격이 다른 방향으로 갔을 경우 가격 기준으로 끝에서 두 번째 순서가 필요합니다. Alexei가 올바르게 썼습니다. 가격을 찾아야 합니다. 우리는 위 또는 아래를 만지지 않고 그 앞에서 원하는 것을 만집니다.

추신. 내 변수에서 두 번째 티켓의 마지막 주문(이것은 그리드) 티켓을 열 때 기억할 것입니다. 시작 알고리즘은 상단이 하나 있고 바로 아래에 하나가 있고 다시 하나가 바로 아래에 하나가 있는 경우에만 완료하면 됩니다.)))) 두 주문이 같은 방향으로 가는 경우, 우리는 마지막에서 두 번째와 마지막 하나의 티켓을 기억합니다. 세 번째 티켓이 열리는 경우 마지막 두 번째 티켓은 후자의 티켓이 되고 후자의 티켓은 세 번째 티켓과 동일합니다.

 
makssub # :

찾을 주문의 가격을 강조 표시했습니다.

OP_BUY가 없으면 어렵지 않습니다. OP_BUY가 나타나면 내 코드가 작동하지 않습니다(

이 시도

 //+------------------------------------------------------------------+
//|  Функция возвращает по символу и магику                          |
//|  1 - размер лота последней позиции                               |
//|  2 - цена последней открытой позиции                             |
//|  3 - время последней открытой позиции                            |
//+------------------------------------------------------------------+
double GetInfoLastPos( int a= 1 )
  {
   datetime t= 0 ;
   double result= 0 ,l= 0 ,p= 0 ,f= 0 ;
   
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if (t<OrderCloseTime()) {t=OrderOpenTime(); l=OrderLots(); p=OrderOpenPrice();}
              }
           }
        }
     }
   if (a== 1 ) {result=l;} else
   if (a== 2 ) {result=p;} else
   if (a== 3 ) {result=( double )t;}
   else      {result= 0 ;}
   return (result);
  }
//+------------------------------------------------------------------+
double FindOpenPrice()
  {
   double AbsPoint= DBL_MAX ;
   double openprice= 0 ;
   
   for ( int pos= OrdersTotal ()- 2 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if (AbsPoint> MathAbs (OrderOpenPrice()-GetInfoLastPos( 2 )))
                 {
                  AbsPoint= MathAbs (OrderOpenPrice()-GetInfoLastPos( 2 ));
                  openprice = OrderOpenPrice();
                 }
              }
           }
        }
     }
   return (openprice);
  }
//+------------------------------------------------------------------+
 
MakarFX # :

이 시도

노고에 감사드립니다.

한 가지 주의 사항이 있습니다.) 그는 위에서 빨간색으로 표시된 것을 찾습니다. OP_SELL의 경우 파란색으로 표시된 아래에서 필요합니다. 그리고 OP_BUY가 나오면 카운트가 어떻게 되는지는 확인하지 않았다고 바로 말씀드리겠습니다.

 
makssub # :

노고에 감사드립니다.

한 가지 주의 사항이 있습니다.) 그는 위에서 빨간색으로 표시된 것을 찾습니다. OP_SELL의 경우 파란색으로 표시된 아래에서 필요합니다. 그리고 OP_BUY가 나오면 카운트가 어떻게 되는지는 확인하지 않았다고 바로 말씀드리겠습니다.

가장 가까운 것이 위입니다!

나는 당신이 찾아야 할 것을 쓰라고 요청했고 당신은 일부를 제공했습니다 ...

예를 들어, "SELL이 열리면 위에서 가장 가까운 SELL을 찾아야합니다 ... 등"이 필요합니다.

추신: 당신은 무엇을 빨간색으로 표시 했습니까? 나는 0_o가 보이지 않는다
 
MakarFX # :

가장 가까운 것이 위입니다!

나는 당신이 찾아야 할 것을 쓰라고 요청했고 당신은 일부를 제공했습니다 ...

예를 들어, "SELL이 열리면 위에서 가장 가까운 SELL을 찾아야합니다 ... 등"이 필요합니다.

PS 무엇을 빨간색으로 표시 했습니까? 0_o가 보이지 않습니다.

그것은 나에게 일어난다. 나는 한 가지를 다른 것을 쓴다고 생각한다. 방심안해 미안)빨간색으로 나 자신도 쇼크)

 
makssub # :

그것은 나에게 일어난다. 나는 내가 다른 것을 쓰는 것을 생각한다. 방심안해 미안)빨간색으로 나 자신도 쇼크)

어쨌든 무엇이 필요합니까?