초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 672

 
fxsaber :
감사해요!!!
 

마틴게일에서 일하는 어드바이저를 쓰고 있습니다.

한 통화 쌍의 포인트가 최대 허용 손실에 도달했을 때 그가 개설한 모든 주문을 닫도록 강제하는 방법은 무엇입니까?

 
RichLux :

마틴게일에서 일하는 어드바이저를 쓰고 있습니다.

한 통화 쌍의 포인트가 최대 허용 손실에 도달했을 때 그가 개설한 모든 주문을 닫도록 강제하는 방법은 무엇입니까?


double GetProfitinCurrency( string order_symbol= "" , int order_type=- 1 , int order_magic=- 1 )
  {
   double profit= 0 ;
   int     i,k= OrdersTotal ();

   if (order_symbol== "0" ) order_symbol= Symbol ();
   for (i= 0 ; i<k; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if (( OrderSymbol ()==order_symbol || order_symbol== "" ) && (order_type< 0 || OrderType ()==order_type))
           {
             if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
              {
               if (order_magic< 0 || OrderMagicNumber ()==order_magic)
                 {
                  profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
                 }
              }
           }
        }
     }
   return (profit);
  }


함수는 열린 포즈에서 이익을 반환합니다. 기호, 유형, 마법으로 필터링할 수 있습니다.

모든 포지션 닫기

void CPD( string order_symbol= "" , int order_type=- 1 , int order_magic=- 1 )
  {
   int i,k= OrdersTotal ();

   if (order_symbol== "0" ) order_symbol= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if (( OrderSymbol ()==order_symbol || order_symbol== "" ) && (order_type< 0 || OrderType ()==order_type))
           {
             if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
              {
               if (order_magic< 0 || OrderMagicNumber ()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
              }
           }
        }
     }
  }
 
Vladislav Andruschenko :

...

함수는 열린 포즈에서 이익을 반환합니다. 기호, 유형, 마법으로 필터링할 수 있습니다.

모든 포지션 닫기

감사합니다. 하지만 손실을 마감하는 데 관심이 있습니다. 이것을 어떻게 구현할 수 있습니까?
 

음, 내 말은, 나는 당신에게 위의 모든 것을 주었습니다.

따라서 이익은 일반적인 개념입니다.

-20은 -20

if( GetProfitinCurrency( Symbol() ,-1,-1)<-20 )CPD(Symbol(),-1,-1);

 
Vladislav Andruschenko :

double GetProfitinCurrency( string order_symbol= "" , int order_type=- 1 , int order_magic=- 1 )
  {
   double profit= 0 ;
   int     i,k= OrdersTotal ();

   if (order_symbol== "0" ) order_symbol= Symbol ();
   for (i= 0 ; i<k; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if (( OrderSymbol ()==order_symbol || order_symbol== "" ) && (order_type< 0 || OrderType ()==order_type))
           {
             if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
              {
               if (order_magic< 0 || OrderMagicNumber ()==order_magic)
                 {
                  profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
                 }
              }
           }
        }
     }
   return (profit);
  }

감사합니다. 이제 이해합니다.

다음 사항은 코드에서 아직 명확하지 않습니다. (order_type< 0 || OrderType ()==order_type) THIS는 "및 판매 또는 구매 주문"과 같이 읽을 수 있습니까?

 
RichLux :

주문 유형 = OP_BUY OP_SELL -1

 

컴파일러는 여전히 ClosePosBySelect에서 맹세합니다.

이 함수를 별도로 작성해야 합니까?

 
이 주제와 관련이 없는 댓글은 " 현재 시간 표시됨 "으로 이동되었습니다.
 

블라디슬라프 안드루셴코

RichLux :

컴파일러는 여전히 ClosePosBySelect에서 맹세합니다.

이 함수를 별도로 작성해야 합니까?

void CPD( string order_symbol= "" , int order_type=- 1 , int order_magic=- 1 )
  {
   int i,k= OrdersTotal ();

   if (order_symbol== "0" ) order_symbol= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if (( OrderSymbol ()==order_symbol || order_symbol== "" ) && (order_type< 0 || OrderType ()==order_type))
           {
             if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
              {
               if (order_magic< 0 || OrderMagicNumber ()==order_magic) OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 1 ,CLR_GREEN);
              }
           }
        }
     }
  }