ExistPositions() 함수.
미결 매수 또는 매도를 확인하도록 설계되었습니다. ExistOrders 함수와 유사합니다. 기본적으로 모든 위치(현재 및 기타 상품)를 검사합니다. 필터 - 기능 매개변수 조합으로 선택 항목을 지정할 수 있습니다.
- sy - 도구 이름에 제한을 가합니다. 기본적으로 매개변수는 ""입니다. 제한이 없습니다. 즉, 모든 도구입니다. NULL을 전달하면 위치 선택이 현재 기기로 제한됩니다.
- op - 포지션 유형을 제한합니다(매수/매도). 기본적으로 제한이 없습니다. 즉, 모든 유형의 위치가 있는지 확인합니다. 유효한 매개변수 값은 -1, OP_BUY 및 OP_SELL입니다.
- mn - 위치의 식별("매직") 번호에 제한을 가합니다. 기본적으로 제한이 없습니다. 즉, 임의의 매직 번호가 있는 위치가 있는지 확인합니다.
- ot - 포지션 개시 시간에 제한을 둡니다. 이 매개변수의 값보다 늦게 위치가 열렸는지 확인합니다. 기본적으로 제한이 없습니다. 즉, 개장 시간이 있는 위치가 있는지 확인합니다.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 06.03.2008 | //| Описание : Возвращает флаг существования позиций | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //| ot - время открытия ( 0 - любое время открытия) | //+----------------------------------------------------------------------------+ bool ExistPositions( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 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) { if (ot<=OrderOpenTime()) return (True); } } } } } } return (False); }
테스터용 OpenPosition() 함수.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 13.06.2007 | //| Описание : Открытие позиции. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ void OpenPosition( string sy, int op, double ll, double sl= 0 , double tp= 0 , int mn= 0 ) { color clOpen; double pp; int err, ticket; if (sy== "" ) sy= Symbol (); if (op==OP_BUY) { pp=MarketInfo(sy, MODE_ASK); clOpen=clOpenBuy; } else { pp=MarketInfo(sy, MODE_BID); clOpen=clOpenSell; } ticket= OrderSend (sy, op, ll, pp, Slippage, sl, tp, "" , mn, 0 , clOpen); if (ticket< 0 ) { err= GetLastError (); Print ( "Error(" ,err, ") open " ,GetNameOP(op), ": " ,ErrorDescription(err)); Print ( "Ask=" ,Ask, " Bid=" ,Bid, " sy=" ,sy, " ll=" ,ll, " pp=" ,pp, " sl=" ,sl, " tp=" ,tp, " mn=" ,mn); } }
온라인용 OpenPosition() 함수.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 21.03.2008 | //| Описание : Открывает позицию и возвращает её тикет. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ int OpenPosition( string sy, int op, double ll, double sl= 0 , double tp= 0 , int mn= 0 ) { color clOpen; datetime ot; double pp, pa, pb; int dg, err, it, ticket= 0 ; string lsComm=WindowExpertName()+ " " +GetNameTF( Period ()); if (sy== "" || sy== "0" ) sy= Symbol (); if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; for (it= 1 ; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped ())) { Print ( "OpenPosition(): Остановка работы функции" ); break ; } while (!IsTradeAllowed()) Sleep ( 5000 ); RefreshRates(); dg=MarketInfo(sy, MODE_DIGITS); pa=MarketInfo(sy, MODE_ASK); pb=MarketInfo(sy, MODE_BID); if (op==OP_BUY) pp=pa; else pp=pb; pp= NormalizeDouble (pp, dg); ot= TimeCurrent (); ticket= OrderSend (sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0 , clOpen); if (ticket> 0 ) { if (UseSound) PlaySound (NameFileSound); break ; } else { err= GetLastError (); if (pa== 0 && pb== 0 ) Message( "Проверьте в Обзоре рынка наличие символа " +sy); // Вывод сообщения об ошибке Print ( "Error(" ,err, ") opening position: " ,ErrorDescription(err), ", try " ,it); Print ( "Ask=" ,pa, " Bid=" ,pb, " sy=" ,sy, " ll=" ,ll, " op=" ,GetNameOP(op), " pp=" ,pp, " sl=" ,sl, " tp=" ,tp, " mn=" ,mn); // Блокировка работы советника if (err== 2 || err== 64 || err== 65 || err== 133 ) { gbDisabled=True; break ; } // Длительная пауза if (err== 4 || err== 131 || err== 132 ) { Sleep ( 1000 * 300 ); break ; } if (err== 128 || err== 142 || err== 143 ) { Sleep ( 1000 * 66.666 ); if (ExistPositions(sy, op, mn, ot)) { if (UseSound) PlaySound (NameFileSound); break ; } } if (err== 140 || err== 148 || err== 4110 || err== 4111 ) break ; if (err== 141 ) Sleep ( 1000 * 100 ); if (err== 145 ) Sleep ( 1000 * 17 ); if (err== 146 ) while (IsTradeContextBusy()) Sleep ( 1000 * 11 ); if (err!= 135 ) Sleep ( 1000 * 7.7 ); } } return (ticket); }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Вывод сообщения в коммент и в журнал | //+----------------------------------------------------------------------------+ //| Параметры: | //| m - текст сообщения | //+----------------------------------------------------------------------------+ void Message(string m) { Comment(m); if (StringLen(m)>0) Print(m); }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает наименование таймфрейма | //+----------------------------------------------------------------------------+ //| Параметры: | //| TimeFrame - таймфрейм (количество секунд) (0 - текущий ТФ) | //+----------------------------------------------------------------------------+ string GetNameTF(int TimeFrame=0) { if (TimeFrame==0) TimeFrame=Period(); switch (TimeFrame) { case PERIOD_M1: return("M1"); case PERIOD_M5: return("M5"); case PERIOD_M15: return("M15"); case PERIOD_M30: return("M30"); case PERIOD_H1: return("H1"); case PERIOD_H4: return("H4"); case PERIOD_D1: return("Daily"); case PERIOD_W1: return("Weekly"); case PERIOD_MN1: return("Monthly"); default: return("UnknownPeriod"); } }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает наименование торговой операции | //+----------------------------------------------------------------------------+ //| Параметры: | //| op - идентификатор торговой операции | //+----------------------------------------------------------------------------+ string GetNameOP(int op) { switch (op) { case OP_BUY : return("Buy"); case OP_SELL : return("Sell"); case OP_BUYLIMIT : return("Buy Limit"); case OP_SELLLIMIT: return("Sell Limit"); case OP_BUYSTOP : return("Buy Stop"); case OP_SELLSTOP : return("Sell Stop"); default : return("Unknown Operation"); } }
ModifyOrder() 함수.
ModifyOrder 기능은 미리 선택된 하나의 주문에 대해 하나 이상의 가격 수준을 변경하도록 설계되었습니다. 여기서 주문은 보류 중인 지정가 또는 지정가 주문과 매수 또는 매도 시장 주문, 즉 포지션을 모두 의미합니다. 위치의 경우 ModifyOrder 기능을 사용하여 StopLoss 및 TakeProfit 의 두 가지 가격 수준을 변경할 수 있으며, 보류 중인 주문의 경우 이에 추가하여 OpenPrice 설정 가격도 변경할 수 있습니다. 변경된 가격 수준은 매개변수로 ModifyOrder 함수에 전달됩니다. 매개변수가 음수이면 해당 가격 수준은 변경되지 않습니다.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Модификация одного предварительно выбранного ордера. | //+----------------------------------------------------------------------------+ //| Параметры: | //| pp - цена установки ордера | //| sl - ценовой уровень стопа | //| tp - ценовой уровень тейка | //| cl - цвет значка модификации | //+----------------------------------------------------------------------------+ void ModifyOrder( double pp=- 1 , double sl= 0 , double tp= 0 , color cl= CLR_NONE ) { bool fm; double op, pa, pb, os, ot; int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it; if (pp<= 0 ) pp=OrderOpenPrice(); if (sl< 0 ) sl=OrderStopLoss(); if (tp< 0 ) tp=OrderTakeProfit(); pp= NormalizeDouble (pp, dg); sl= NormalizeDouble (sl, dg); tp= NormalizeDouble (tp, dg); op= NormalizeDouble (OrderOpenPrice() , dg); os= NormalizeDouble (OrderStopLoss() , dg); ot= NormalizeDouble (OrderTakeProfit(), dg); if (pp!=op || sl!=os || tp!=ot) { for (it= 1 ; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped ())) break ; while (!IsTradeAllowed()) Sleep ( 5000 ); RefreshRates(); fm=OrderModify(OrderTicket(), pp, sl, tp, 0 , cl); if (fm) { if (UseSound) PlaySound (NameFileSound); break ; } else { er= GetLastError (); pa=MarketInfo(OrderSymbol(), MODE_ASK); pb=MarketInfo(OrderSymbol(), MODE_BID); Print ( "Error(" ,er, ") modifying order: " ,ErrorDescription(er), ", try " ,it); Print ( "Ask=" ,pa, " Bid=" ,pb, " sy=" ,OrderSymbol(), " op=" +GetNameOP(OrderType()), " pp=" ,pp, " sl=" ,sl, " tp=" ,tp); Sleep ( 1000 * 10 ); } } } }
DeleteOrders() 함수. 테스터 버전.
DeleteOrders() 함수는 BuyLimit, BuyStop, SellLimit 및 SellStop 보류 주문을 삭제 하도록 설계되었습니다. DeleteOrders() 함수는 보편적입니다. 즉, 기존의 모든 보류 주문과 함수 매개변수에 지정된 선택 조건을 충족하는 특정 주문을 모두 삭제하는 데 사용할 수 있습니다.
sy - 도구 이름. 테스터에서의 거래는 현재 상품에서만 수행할 수 있으므로 이 매개변수는 테스터 버전과 관련이 없으며 이 기능의 온라인 버전과의 호환성을 위해서만 필요합니다. 테스터에서는 "" 또는 NULL 값을 사용하는 것이 가장 좋습니다. 기본값은 "" - 모든 문자를 의미합니다.
op - 거래 작업 유형, 보류 중인 주문 유형. -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT 또는 OP_SELLSTOP의 다섯 가지 값 중 하나가 가능합니다. 기본값 -1은 모든 주문을 의미합니다.
mn - MagicNumber, 보류 중인 주문의 식별 번호입니다. 기본값 -1은 모든 마법을 의미합니다.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 13.06.2007 | //| Описание : Удаление ордеров. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| op - операция ( -1 - любой ордер) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) { int i, k= OrdersTotal (), ot; if (sy== "" || sy== "0" ) sy= Symbol (); for (i= 0 ; i<k; i++) { if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) { if (OrderSymbol()==sy && (op< 0 || ot==op)) { if (mn< 0 || OrderMagicNumber()==mn) { OrderDelete(OrderTicket(), clDelete); } } } } } }
DeleteOrders() 함수. 온라인 버전.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Удаление ордеров | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ( "" - любой символ, | //| NULL - текущий символ) | //| op - операция ( -1 - любой ордер) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) { bool fd; int err, i, it, k= OrdersTotal (), ot; if (sy== "0" ) sy= Symbol (); for (i=k- 1 ; i>= 0 ; 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) { for (it= 1 ; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped ())) break ; while (!IsTradeAllowed()) Sleep ( 5000 ); fd=OrderDelete(OrderTicket(), clDelete); if (fd) { if (UseSound) PlaySound (NameFileSound); break ; } else { err= GetLastError (); Print ( "Error(" ,err, ") delete order " ,GetNameOP(ot), ": " ,ErrorDescription(err), ", try " ,it); Sleep ( 1000 * 5 ); } } } } } } } }
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 07.10.2006 | //| Описание : Поиск ближайшего фрактала. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| tf - таймфрейм ( 0 - текущий ТФ) | //| mode - тип фрактала (MODE_LOWER|MODE_UPPER) | //+----------------------------------------------------------------------------+ double FindNearFractal( string sy= "0" , int tf= 0 , int mode=MODE_LOWER) { if (sy== "" || sy== "0" ) sy= Symbol (); double f= 0 ; int d=MarketInfo(sy, MODE_DIGITS), s; if (d== 0 ) if ( StringFind (sy, "JPY" )< 0 ) d= 4 ; else d= 2 ; for (s= 2 ; s< 100 ; s++) { f= iFractals (sy, tf, mode, s); if (f!= 0 ) return ( NormalizeDouble (f, d)); } Print ( "FindNearFractal(): Фрактал не найден" ); return ( 0 ); }
ExistOrdersByLot() 함수.
지정된 로트 크기의 주문이 있음을 나타내는 플래그를 반환합니다. True - 주문이 존재함(설정), False - 주문이 존재하지 않음(설정되지 않음). 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.
- sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 악기의 순서만 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
- op - 작업, 보류 중인 주문 유형. 유효한 값은 OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP 또는 -1 입니다. 기본값 -1 은 모든 주문 유형을 의미합니다.
- mn - 주문 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
- lo - 소수점 이하 두 자리의 정확도를 가진 로트 크기. 기본값 0 - 모든 로트 크기.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает флаг существования ордера по размеру лота. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любой ордер) | //| mn - MagicNumber (-1 - любой магик) | //| lo - лот ( 0 - любой лот) | //+----------------------------------------------------------------------------+ bool ExistOrdersByLot( string sy= "" , int op=- 1 , int mn=- 1 , double lo= 0 ) { int i, k= OrdersTotal (), ot; lo= NormalizeDouble (lo, 2 ); 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) { if (lo<= 0 || NormalizeDouble (OrderLots(), 2 )==lo) return (True); } } } } } return (False); }
GetLotLastOrder() 함수.
마지막 주문의 로트 크기를 반환하거나 -1 을 반환합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.
- 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 | //| Описание : Возвращает размер лота последнего выставленного ордера или -1 | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) { datetime o; double l=- 1 ; 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()> 1 && OrderType()< 6 ) { if (op< 0 || OrderType()==op) { if (mn< 0 || OrderMagicNumber()==mn) { if (o<OrderOpenTime()) { o=OrderOpenTime(); l=OrderLots(); } } } } } } } return (l); }
GetOrderOpenPrice() 함수.
마지막 주문 가격 또는 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 | //| Описание : Возвращает цену установки последнего ордера или 0. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double GetOrderOpenPrice( string sy= "" , int op=- 1 , int mn=- 1 ) { datetime t; double r= 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()> 1 && OrderType()< 6 ) { if (op< 0 || OrderType()==op) { if (mn< 0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderOpenPrice(); } } } } } } } return (r); }
IndexByTicket() 함수.
티켓별 주문 또는 포지션의 인덱스(주문 또는 오픈 포지션의 일반 목록에 있는 일련 번호)를 반환합니다. IndexByTicket() 함수가 필요한 티켓으로 주문이나 위치를 찾을 수 없으면 -1 을 반환합니다. 함수 매개변수로 확인된 주문 또는 위치 목록을 제한할 수 있습니다.
- sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기에 대해서만 주문과 위치를 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
- op - 거래 작업 , 보류 중인 주문 또는 포지션의 유형. 유효한 값은 OP_BUY, OP_BUYLIMIT, OP_BUYSTOP, OP_SELL, OP_SELLLIMIT, OP_SELLSTOP 또는 -1 입니다. 기본값 -1 은 모든 주문 또는 위치를 의미합니다.
- mn - 주문 또는 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 20.04.2007 | //| Описание : Возвращает индекс ордера или позиции по тикету | //+----------------------------------------------------------------------------+ //| Параметры: | //| ti - тикет ордера, позиции | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int IndexByTicket( int ti, string sy= "" , int op=- 1 , int mn=- 1 ) { 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== "" ) && (op< 0 || OrderType()==op)) { if ((mn< 0 || OrderMagicNumber()==mn) && OrderTicket()==ti) return (i); } } } return (- 1 ); }
모든 기능은 이 스레드에서 가져왔습니다. - h ttp://forum.mql4.com/ru/11287 , 스레드에는 각 기능에 대한 자세한 설명과 사용 예가 포함되어 있습니다.
2 쪽콘텐츠
NumberOfOrders - 주문 수를 반환합니다.
ClosePosBySelect - 미리 선택된 위치 하나를 닫습니다.
ClosePosBySizeProfitInCurrency - 특정 가치의 예금 통화로 이익이 있는 포지션을 청산합니다.
ClosePosBySizeLossInCurrency - 예금 통화 손실이 특정 값을 초과한 포지션 청산
ClosePositions - 시장 가격으로 포지션을 마감합니다.
ClosePosFirstProfit - 먼저 수익성 있는 시장 가격으로 포지션을 청산합니다.
ClosePosWithMaxProfitInCurrency - 예금 통화에서 최대 양수 이익으로 한 포지션을 마감합니다.
DistMarketAndPos- 시장과 가장 가까운 위치 사이의 거리를 포인트 단위로 반환합니다.
ExistOPNearMarket - 시장 근처에 위치 또는 주문의 존재에 대한 플래그를 반환합니다.
ExistPosByPrice - 시가에 포지션이 존재한다는 플래그를 반환합니다.
GetAmountLotFromOpenPos - 열린 위치의 랏의 양을 반환합니다.
페이지 #3
GetIndexByTicket - 티켓별 주문 또는 위치의 인덱스를 반환합니다.
상관 관계 - 두 계열의 상관 관계를 반환합니다.
GetIndexLastPos - 마지막 열린 위치의 인덱스를 반환하거나 -1
GetLotLastPos - 마지막 열린 위치의 로트 크기를 반환하거나 -1
GetMaxLotFromOpenPos - 열린 위치에서 최대 로트 크기를 반환합니다.
GetMinLotFromOpenPos - 열린 위치에서 최소 로트 크기를 반환합니다.
NumberOfPositions - 위치 수를 반환합니다.
GetProfitFromDateInCurrency - 특정 날짜 이후 마감된 포지션의 예금 통화로 총 이익을 반환합니다.
GetProfitOpenPosInCurrency - 예치 통화로 열린 포지션의 총 이익을 반환합니다.
GetProfitOpenPosInPoint - 오픈 포지션의 총 이익을 포인트로 반환합니다.
GetTicketLastPos - 마지막 열린 위치의 티켓을 반환하거나 -1
페이지#4
GetTypeLastClosePos - 마지막으로 닫힌 위치의 유형을 반환하거나 -1
GetTypeLastOpenPos - 마지막 열린 위치의 유형을 반환하거나 -1
isCloseLastPosByStop - 스톱으로 마지막 위치를 닫기 위한 플래그를 반환합니다.
isCloseLastPosByTake - 마지막 위치를 테이크에 의해 닫는 플래그를 반환합니다.
isLossLastPos - 마지막 위치의 손실 플래그를 반환합니다.
isTradeToDay - 오늘의 거래 플래그를 반환합니다.
NumberOfBarCloseLastPos - 마지막 위치의 닫는 막대 번호 또는 -1을 반환합니다.
NumberOfBarOpenLastPos - 마지막 위치의 열린 막대 번호 또는 -1을 반환합니다.
NumberOfLossPosToday - 오늘 마감된 손실 위치 수를 반환합니다.
PriceCloseLastPos - 마지막으로 마감된 포지션의 종가를 반환합니다.
페이지 #5
PriceOpenLastPos - 마지막 오픈 포지션의 시가를 반환합니다.
PriceOpenLastClosePos - 마지막으로 마감된 포지션의 시가를 반환합니다.
PriceOpenNearPos - 가장 가까운 위치의 시가를 반환합니다.
TicketNearPos - 시가에서 시장에 가장 가까운 위치의 티켓을 반환합니다.
TypeNearPos - 시장에 가장 가까운 위치 유형을 반환하거나 -1을 반환합니다.
TimeOpenLastPos - 마지막 오픈 포지션의 오픈 시간을 반환합니다.
BubbleSort - 배열 요소에 대해 버블 정렬을 수행합니다.
BarsBetweenLastFractals - 마지막 두 프랙탈 사이의 막대 수를 반환합니다.
SecondsAfterCloseLastPos - 마지막 위치가 닫힌 후의 시간(초)을 반환합니다.
SecondsAfterOpenLastPos - 마지막 위치가 열린 후의 시간(초)을 반환합니다.
DeleteOppositeOrders - 반대 주문 위치 삭제
ArraySearchDouble - 값으로 배열의 요소를 검색하고 발견된 요소의 인덱스 또는 -1을 반환합니다.
ArraySearchInt - 값으로 배열의 요소를 검색하고 찾은 요소의 인덱스 또는 -1을 반환합니다.
ArraySearchString - 값으로 배열 요소를 검색하고 찾은 요소의 인덱스를 반환하거나 -1
GetLotLastClosePos - 마지막 마감 위치의 로트 크기를 반환하거나 -1
ArrayMax - 배열의 최대 요소 값을 반환합니다.
페이지 #6
ArrayMin - 배열의 최소 요소 값을 반환합니다.
GetExtremumZZBar - 지그재그 극한 막대 번호를 숫자로 반환합니다.
ArrayAvg - 배열 요소의 산술 평균을 반환합니다.
ArrayAvGeom - 배열 요소의 기하 평균을 반환합니다.
SetHLine - OBJ_HLINE 개체를 수평선으로 설정합니다.
SetVLine - OBJ_VLINE 개체를 수직선으로 설정합니다.
SetTLine - OBJ_TREND 개체를 추세선으로 설정합니다.
SetTLineByAngle - 추세선의 OBJ_TRENDBYANGLE 개체를 각도로 설정합니다.
SetArrow - 차트의 아이콘인 OBJ_ARROW 개체를 설정합니다.
SetLabel - OBJ_LABEL 개체인 텍스트 레이블을 설정합니다.
CrossPointOfLines - 두 선의 교차점 좌표를 계산합니다.각 선은 점의 좌표 쌍으로 지정됩니다.
SetRegression - OBJ_REGRESSION 개체를 선형 회귀 채널로 설정합니다.
EquationDirect - 직선의 방정식. 선과의 교차점에서 X의 Y 값을 계산합니다.
GetArrowInterval - 신호 포인터를 설정하기 위한 간격을 반환합니다.
GetArrowInterval - 신호 포인터를 설정하기 위한 간격을 반환합니다.
FindNearFractal - 가장 가까운 프랙탈 찾기. 가격 수준을 반환합니다.
GetExtremumZZBar - 지그재그 극한 막대 번호를 숫자로 반환합니다.
GetExtremumZZPrice - 지그재그 극한값을 숫자로 반환합니다.
GetFractalBar - 프랙탈 막대 번호를 숫자로 반환합니다.
GetNearestDownFractal - 가장 가까운 다운 프랙탈의 가격 수준을 반환합니다.
GetNearestUpFractal - 가장 가까운 위쪽 프랙탈을 반환합니다.
페이지 #7
CorrectTF - 지원되는 가장 가까운 MT4로 타임프레임을 수정합니다.
DateBeginQuarter - 분기의 시작 날짜를 반환합니다.
DateOfMonday - 주 번호로 월요일 날짜를 반환합니다.
피보나치 - 피보나치 수열의 요소를 서수로 반환합니다.
GetNameMA - MA 메서드의 이름을 반환합니다.
GetPriceDiffInPoint - 두 막대 간의 가격 차이를 포인트 단위로 반환합니다.
GetTypePrice - 가격 유형 이름을 반환합니다.
ArrayLR - 선형 회귀 값의 배열을 생성합니다.
ArrayMo - 분포 밀도 곡선의 최대값인 모드를 반환합니다.
ExistOrdersByPrice - 설정된 가격에 주문이 존재한다는 플래그를 반환합니다.
ClosePosBySelect - 미리 선택된 하나의 위치 닫기
CountOrders - 유형별로 주문 수를 계산합니다.
ModifyOrder - 주문 수정. 백테스트를 위한 함수 버전입니다.
IIFc - 조건에 따라 두 값 중 하나를 반환합니다.
IIFd - 조건에 따라 두 값 중 하나를 반환합니다.
IIFi - 조건에 따라 두 값 중 하나를 반환합니다.
IIF - 조건에 따라 두 값 중 하나를 반환합니다.
ExistInHistoryCloseBetween - 날짜 사이에 마감(삭제)된 위치 또는 주문 내역의 존재 플래그를 반환합니다.
ExistInHistoryOpenBetween - 날짜 사이에 열린(세트) 위치 또는 주문 내역의 존재 플래그를 반환합니다.
ExistInHistoryToDay - 오늘의 기록에서 주문 또는 위치의 존재 플래그를 반환합니다.
TakeProfitLastPos - 마지막 오픈 포지션의 TakeProfit 가격 또는 -1을 반환합니다.
페이지 #8
TakeProfitLastClosePos - 마지막으로 마감된 포지션의 TakeProfit 가격 또는 -1을 반환합니다.
MovingInWL - 정지 수준을 손익분기점으로 이동
SimpleTrailing - 간단한 트롤로 위치 추적
ArrayZ - 숫자 계열의 Z 점수를 반환합니다.
ArrayDeleteInt - 주어진 인덱스에서 배열 요소를 삭제합니다. 새 배열의 크기를 반환하거나 제거할 수 없는 경우 -1을 반환합니다.
ArrayDeleteDouble - 주어진 인덱스에서 배열 요소를 삭제합니다. 새 배열의 크기를 반환하거나 제거할 수 없는 경우 -1을 반환합니다.
ArrayDeleteString - 주어진 인덱스에서 배열 요소를 삭제합니다. 새 배열의 크기를 반환하거나 -1을 반환합니다. 아무것도 제거할 수 없다면.
ArrayInsertDouble - 주어진 인덱스에 배열 요소를 삽입합니다. 새 배열의 크기를 반환합니다.
BubbleSort2 - 2차원 배열의 요소에 대해 거품 정렬을 수행합니다.
GetTypeLastDeleted - 마지막으로 삭제된 주문의 유형을 반환하거나 -1
iBarLargest - 가장 큰 막대의 인덱스 또는 -1을 반환합니다.
iBarOfDayCalc - 하루 시작부터 계산된 막대 번호를 반환합니다. 막대 번호 매기기는 1부터 시작합니다.
iBarOfDayReal - 하루 시작부터 막대의 실수를 반환합니다.
NameDayOfWeek - 요일의 이름을 반환합니다.
NormalizeLot - 거래된 로트의 정규화된 값을 반환합니다.
NormalizePrice - 틱 크기로 정규화된 가격 값을 반환합니다.
WeekOfMonth - 주어진 날짜의 주 번호를 반환합니다.
ClosePosBySortLots - 로트 크기별로 정렬 순서로 위치를 마감합니다.
AddLeadingZero - 문자열 S를 길이 K와 같게 만들기 위해 문자열 S에 충분한 선행 0 "0"을 추가합니다.
toTime - 2/3 정수를 시간 형식의 문자열로 변환합니다.
페이지 #9
StringLower - 소문자 문자열을 반환합니다.
StringUpper - 대문자로 된 문자열을 반환합니다.
StringToArrayDouble - 문자열에서 배열로 실수 전송
StringToArrayInt - 문자열에서 배열로 정수 값 전송
StrSplit - 문자열을 요소 배열로 분할
StrTran - 부분 문자열 교체
MovingInWL - 정지 수준을 손익분기점으로 이동
isTradeTimeString - 시간 거래 활성화 플래그를 반환합니다.
isTradeTimeInt - 시간 거래 허가 플래그를 반환합니다.
추가로:
하나의 아카이브에 모든 기능이 있습니다.
모든 기능은 연결된 라이브러리 형태입니다.
ExistOrders() 함수.
주문 존재 플래그를 반환합니다. 그것은 순서가 설정되었는지 여부에 대한 질문에 답할 것입니다. 이 기능을 사용하여 더 구체적인 주문뿐만 아니라 모든 주문을 요청할 수 있습니다. 요청 필터는 함수 매개변수를 사용하여 구성됩니다.