이 함수는 주문 수를 반환하고 기능적으로 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);
}
이 기능은 예금 통화의 이익이 특정 지정된 값을 초과한 포지션만 청산합니다. 함수 매개변수를 사용하여 청산할 위치를 지정할 수 있습니다.
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();
}
}
}
}
}
이 기능은 예금 통화에서 최대 양수 이익으로 한 포지션을 마감합니다. 즉, 각각의 이익이 현재 -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();
}
}
}
이 함수는 시장 근처(시장에서 포인트 단위로 지정된 거리)에 주문 또는 위치의 존재에 대한 플래그를 반환합니다. 확인된 주문 또는 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
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);
}
NumberOfOrders() 함수.
이 함수는 주문 수를 반환하고 기능적으로 ExistOrders() 를 완전히 재정의합니다. ExistOrders() 함수를 NumberOfOrders () 함수로 바꾸려면 반환 값이 0보다 큰지 확인하는 것이 필요하고 충분합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.
ClosePosBySelect() 함수.
하나의 미리 선택된 위치 를 닫습니다. 이 함수는 일부 조건에 따라 닫기 위치를 선택하는 데 도움이 되는 여러 다른 함수에서 호출되기 때문에 다소 보조적입니다.
ClosePosBySizeProfitInCurrency() 함수.
이 기능은 예금 통화의 이익이 특정 지정된 값을 초과한 포지션만 청산합니다. 함수 매개변수를 사용하여 청산할 위치를 지정할 수 있습니다.
ClosePositions() 함수.
이 함수는 매개변수가 지정된 값을 충족하는 위치를 닫습니다.
ClosePosFirstProfit() 함수.
이 기능은 특정 순서, 즉 먼저 수익성이 있고 나머지는 모두 포지션을 마감합니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
함수 ClosePosWithMaxProfitInCurrency().
이 기능은 예금 통화에서 최대 양수 이익으로 한 포지션을 마감합니다. 즉, 각각의 이익이 현재 -34, 15, 73, -90, 41인 5개 포지션 중 예금 통화로 73단위 이익이 있는 포지션이 청산됩니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
DistMarketAndPos() 함수.
잘! 더 재미있는 기능을 얻으십시오! 예를 들어, 시장과 가장 가까운 위치 사이의 거리를 포인트 단위로 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
ExistOPNearMarket() 함수.
이 함수는 시장 근처(시장에서 포인트 단위로 지정된 거리)에 주문 또는 위치의 존재에 대한 플래그를 반환합니다. 확인된 주문 또는 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
ExistPosByPrice() 함수.
이 함수는 지정된 시가에서 포지션 존재 플래그를 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
GetAmountLotFromOpenPos() 함수.
이 함수는 많은 열린 위치의 합계를 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.