"KimIV의 유용한 기능"만. - 페이지 2

 

NumberOfOrders() 함수.

이 함수는 주문 수를 반환하고 기능적으로 ExistOrders() 를 완전히 재정의합니다. ExistOrders() 함수를 NumberOfOrders () 함수로 바꾸려면 반환 값이 0보다 큰지 확인하는 것이 필요하고 충분합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 악기의 순서만 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
  • op - 보류 중인 주문 유형. 유효한 값은 OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP 또는 -1 입니다. 기본값 -1 은 모든 순서를 의미합니다.
  • mn - 주문 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), ko= 0 , ot;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if (ot> 1 && ot< 6 ) {
         if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || ot==op)) {
           if (mn< 0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
   return (ko);
}
 

ClosePosBySelect() 함수.

하나의 미리 선택된 위치 를 닫습니다. 이 함수는 일부 조건에 따라 닫기 위치를 선택하는 데 도움이 되는 여러 다른 함수에서 호출되기 때문에 다소 보조적입니다.

 void ClosePosBySelect() {
   bool    fc;
   color   clClose;
   double ll, pa, pb, pp;
   int     err, it;

   if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
     for (it= 1 ; it<=NumberOfTry; it++) {
       if (!IsTesting() && (!IsExpertEnabled() || IsStopped ())) break ;
       while (!IsTradeAllowed()) Sleep ( 5000 );
      RefreshRates();
      pa=MarketInfo(OrderSymbol(), MODE_ASK);
      pb=MarketInfo(OrderSymbol(), MODE_BID);
       if (OrderType()==OP_BUY) {
        pp=pb; clClose=clCloseBuy;
      } else {
        pp=pa; clClose=clCloseSell;
      }
      ll=OrderLots();
      fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
       if (fc) {
         if (UseSound) PlaySound (NameFileSound); break ;
      } else {
        err= GetLastError ();
         if (err== 146 ) while (IsTradeContextBusy()) Sleep ( 1000 * 11 );
         Print ( "Error(" ,err, ") Close " ,GetNameOP(OrderType()), " " ,
              ErrorDescription(err), ", try " ,it);
         Print (OrderTicket(), "  Ask=" ,pa, "  Bid=" ,pb, "  pp=" ,pp);
         Print ( "sy=" ,OrderSymbol(), "  ll=" ,ll, "  sl=" ,OrderStopLoss(),
               "  tp=" ,OrderTakeProfit(), "  mn=" ,OrderMagicNumber());
         Sleep ( 1000 * 5 );
      }
    }
  } else Print ( "Некорректная торговая операция. Close " ,GetNameOP(OrderType()));
}
 

ClosePosBySizeProfitInCurrency() 함수.

이 기능은 예금 통화의 이익이 특정 지정된 값을 초과한 포지션만 청산합니다. 함수 매개변수를 사용하여 청산할 위치를 지정할 수 있습니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
  • pr - 예금 통화의 이익 수준. 기본값은 0 입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие тех позиций, у которых профит в валюте депозита       |
//|             превысил некоторое значение                                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    pr - профит                                                             |
//+----------------------------------------------------------------------------+
void ClosePosBySizeProfitInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , double pr= 0 ) {
   int i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
             if (OrderProfit()+OrderSwap()>pr) ClosePosBySelect();
          }
        }
      }
    }
  }
}
 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 25.04.2008                                                     |
//|  Описание : Закрытие тех позиций, у которых убыток в валюте депозита       |
//|             превысил некоторое значение                                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    pr - профит/убыток                                                      |
//+----------------------------------------------------------------------------+
void ClosePosBySizeLossInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , double pr= 0 ) {
   int i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
             if (OrderProfit()+OrderSwap()<- MathAbs (pr)) ClosePosBySelect();
          }
        }
      }
    }
  }
}

ClosePositions() 함수.

이 함수는 매개변수가 지정된 값을 충족하는 위치를 닫습니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) ClosePosBySelect();
        }
      }
    }
  }
}
 

ClosePosFirstProfit() 함수.

이 기능은 특정 순서, 즉 먼저 수익성이 있고 나머지는 모두 포지션을 마감합니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене сначала прибыльных           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal ();
   if (sy== "0" ) sy= Symbol ();

   // Сначала закрываем прибыльные позиции
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
             if (OrderProfit()+OrderSwap()> 0 ) ClosePosBySelect();
          }
        }
      }
    }
  }
   // Потом все остальные
  k= OrdersTotal ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) ClosePosBySelect();
        }
      }
    }
  }
}
 

함수 ClosePosWithMaxProfitInCurrency().

이 기능은 예금 통화에서 최대 양수 이익으로 한 포지션을 마감합니다. 즉, 각각의 이익이 현재 -34, 15, 73, -90, 41인 5개 포지션 중 예금 통화로 73단위 이익이 있는 포지션이 청산됩니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие одной позиции с максимальным положительным профитом   |
//|             в валюте депозита                                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePosWithMaxProfitInCurrency( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double pr= 0 ;
   int     i, k= OrdersTotal (), np=- 1 ;

   if (sy== "0" ) sy= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if (pr<OrderProfit()+OrderSwap()) {
            pr=OrderProfit()+OrderSwap();
            np=i;
          }
        }
      }
    }
  }
   if (np>= 0 ) {
     if ( OrderSelect (np, SELECT_BY_POS, MODE_TRADES)) {
      ClosePosBySelect();
    }
  }
}
 

DistMarketAndPos() 함수.

잘! 더 재미있는 기능을 얻으십시오! 예를 들어, 시장과 가장 가까운 위치 사이의 거리를 포인트 단위로 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. "" 또는 NULL은 현재 기기를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY, OP_SELL 또는 -1. 기본값 -1은 임의의 위치를 의미합니다.
  • mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double d, p;
   int i, k= OrdersTotal (), r= 1000000 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
  p=MarketInfo(sy, MODE_POINT);
   if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy) && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if (OrderType()==OP_BUY) {
            d= MathAbs (MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
           if (OrderType()==OP_SELL) {
            d= MathAbs (OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
        }
      }
    }
  }
   return (r);
}
 

ExistOPNearMarket() 함수.

이 함수는 시장 근처(시장에서 포인트 단위로 지정된 거리)에 주문 또는 위치의 존재에 대한 플래그를 반환합니다. 확인된 주문 또는 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기에 대해서만 주문 또는 위치를 확인합니다. "" 또는 NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업 , 주문 유형 또는 위치. 유효한 값은 OP_BUY , OP_SELL , OP_BUYLIMIT , OP_SELLLIMIT , OP_BUYSTOP , OP_SELLSTOP 또는 -1 입니다. 기본값 -1 은 모든 거래 작업을 의미합니다.
  • mn - 주문 또는 위치 ID(MagicNumber). 기본값 -1 - 모든 식별자.
  • ds - 시장과의 거리(포인트). 기본값은 1000000 입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг существования позиции или ордера около рынка   |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от рынка   (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearMarket( string sy= "" , int op=- 1 , int mn=- 1 , int ds= 1000000 ) {
   int i, k= OrdersTotal (), ot;

   if (sy== "" || sy== "0" ) sy= Symbol ();
   double p=MarketInfo(sy, MODE_POINT);
   if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if ((OrderSymbol()==sy) && (op< 0 || ot==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if (ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) {
             if ( MathAbs (MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return (True);
          }
           if (ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
             if ( MathAbs (OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return (True);
          }
        }
      }
    }
  }
   return (False);
}
 

ExistPosByPrice() 함수.

이 함수는 지정된 시가에서 포지션 존재 플래그를 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. 기본값 "" 은 모든 시장 상품을 의미합니다. NULL은 현재 기기를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
  • pp - 포지션 개시 가격. 기본값 0 은 모든 가격을 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг существования позиций по цене открытия         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    pp - цена                       ( 0   - любая цена)                     |
//+----------------------------------------------------------------------------+
bool ExistPosByPrice( string sy= "" , int op=- 1 , int mn=- 1 , double pp= 0 ) {
   double px, py;
   int     d, i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
            d=MarketInfo(OrderSymbol(), MODE_DIGITS);
            px= NormalizeDouble (pp, d);
            py= NormalizeDouble (OrderOpenPrice(), d);
             if (pp<= 0 || px==py) return (True);
          }
        }
      }
    }
  }
   return (False);
}
 

GetAmountLotFromOpenPos() 함수.

이 함수는 많은 열린 위치의 합계를 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업 , 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает сумму лотов открытых позиций                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetAmountLotFromOpenPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double l= 0 ;
   int     i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
              l+=OrderLots();
            }
          }
        }
      }
    }
  }
   return (l);
}