ExistPositions() işlevi.
Açık alımları veya satımları kontrol etmek için tasarlanmıştır. ExistOrders işlevine benzer. Varsayılan olarak, tüm pozisyonları inceler: mevcut ve diğer enstrümanlar. Seçimi, bir filtre kombinasyonu ile belirtebilirsiniz - fonksiyon parametreleri:
- sy - Aracın adına bir kısıtlama getirir. Varsayılan olarak, parametre "" - kısıtlama yok, yani herhangi bir araç. NULL'u geçerseniz, konum seçimi mevcut enstrümanla sınırlı olacaktır.
- op - Pozisyon türünü kısıtlar (Al/Sat). Varsayılan olarak, herhangi bir kısıtlama yoktur, yani herhangi bir türden bir pozisyonun varlığı kontrol edilir. Geçerli parametre değerleri -1, OP_BUY ve OP_SELL'dir.
- mn - Konumun tanımlama ("sihir") numarasına bir sınır getirir. Varsayılan olarak herhangi bir kısıtlama yoktur, yani herhangi bir sihirli sayıya sahip bir pozisyonun varlığı kontrol edilir.
- ot - Bir pozisyonun açılış süresine bir sınır getirir . Bu parametrenin değerinden sonra pozisyonun açıldığı kontrol edilir. Varsayılan olarak bir limit yoktur, yani herhangi bir açılış süresi olan bir pozisyonun varlığı kontrol edilir.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); }
Test cihazı için OpenPosition() işlevi.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); } }
Çevrimiçi için OpenPosition() işlevi.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi.
ModifyOrder işlevi, önceden seçilmiş bir siparişin bir veya daha fazla fiyat seviyesini değiştirmek için tasarlanmıştır. Burada bir emir, hem bekleyen bir Limit veya Stop emri hem de bir Al veya Sat piyasa emri, yani bir pozisyon anlamına gelir. Bir pozisyon için ModifyOrder fonksiyonunu kullanarak StopLoss ve TakeProfit olmak üzere iki fiyat seviyesini değiştirebilir, bekleyen bir emir için bunlara ek olarak OpenPrice ayar fiyatını da değiştirebilirsiniz. Değiştirilen fiyat seviyeleri, ModifyOrder işlevine parametre olarak aktarılır. Herhangi bir parametre negatifse, karşılık gelen fiyat seviyesi değişmeyecektir.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi. Test sürümü.
DeleteOrders() işlevi BuyLimit, BuyStop, SellLimit ve SellStop bekleyen siparişleri silmek için tasarlanmıştır. DeleteOrders() işlevi evrenseldir, yani hem mevcut tüm bekleyen siparişleri hem de işlev parametreleri tarafından belirtilen seçim koşullarını karşılayan belirli siparişleri silmek için kullanılabilir:
sy - Araç adı. Test cihazında alım satım işlemi yalnızca mevcut enstrüman üzerinde gerçekleştirilebildiğinden, bu parametre test cihazı versiyonuyla ilgili değildir ve sadece bu fonksiyonun çevrimiçi versiyonuyla uyumluluk için gereklidir. Test cihazında "" veya NULL değerlerini kullanmak en iyisidir. Varsayılan değer "" - herhangi bir karakter anlamına gelir.
op - İşlem tipi, bekleyen emir tipi. Beş değerden biri mümkündür: -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT veya OP_SELLSTOP. Varsayılan değer -1, herhangi bir sipariş anlamına gelir.
mn - MagicNumber, bekleyen siparişin kimlik numarası. Varsayılan değer -1, herhangi bir sihir anlamına gelir.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi. Çevrimiçi sürüm.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi.
Belirli bir parti büyüklüğüne sahip bir siparişin varlığının bayrağını döndürür. Doğru - sipariş var (ayarlandı), Yanlış - sipariş yok (ayarlanmadı). Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
- sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın siparişlerini kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
- op - İşlem, bekleyen emir türü. Geçerli değerler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1 şeklindedir. Varsayılan değer -1 , herhangi bir sipariş türü anlamına gelir.
- mn - Sipariş Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
- lo - İki ondalık basamak doğruluğu ile parti boyutu. Varsayılan değer 0 - herhangi bir parti büyüklüğü.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi.
Son verilen siparişin parti boyutunu veya -1 döndürür. Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
- sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın siparişlerini kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
- op - İşlem, bekleyen emir türü. Geçerli değerler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1 şeklindedir. Varsayılan değer -1 , herhangi bir sipariş anlamına gelir.
- mn - Sipariş Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi.
Son verilen siparişin fiyatını veya 0'ı döndürür. Kontrol edilen siparişlerin listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
- sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın siparişlerini kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
- op - İşlem, bekleyen emir türü. Geçerli değerler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1 şeklindedir. Varsayılan değer -1 , herhangi bir sipariş anlamına gelir.
- mn - Sipariş Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() işlevi.
Bilete göre emrin veya pozisyonun indeksini (verilen emirlerin veya açık pozisyonların genel listesindeki seri numarası) verir. IndexByTicket() işlevi gerekli biletle bir emir veya pozisyon bulamazsa, -1 değerini döndürür. Kontrol edilen emirlerin veya pozisyonların listesini fonksiyon parametreleriyle sınırlayabilirsiniz:
- sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrüman için siparişleri ve pozisyonları kontrol edecektir. NULL , geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
- op - Ticaret işlemi , bekleyen emir veya pozisyon türü. Geçerli değerler OP_BUY, OP_BUYLIMIT, OP_BUYSTOP, OP_SELL, OP_SELLLIMIT, OP_SELLSTOP veya -1'dir . Varsayılan değer -1 , herhangi bir sipariş veya pozisyon anlamına gelir.
- mn - Sipariş veya konum kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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 ); }
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Tüm işlevler bu konudan alınmıştır - h ttp://forum.mql4.com/ru/11287 , dizi her işlevin ayrıntılı bir açıklamasını ve kullanım örneklerini içerir
Sayfa 2İçerik
NumberOfOrders - Siparişlerin sayısını döndürür.
ClosePosBySelect - Önceden seçilmiş bir pozisyonu kapatır.
ClosePosBySizeProfitInCurrency - Mevduat para biriminde belirli bir değerde kârı olan pozisyonları kapatın
ClosePosBySizeLossInCurrency - Mevduat para birimindeki kaybı belirli bir değeri aşan pozisyonları kapatmak
ClosePositions - Pozisyonları piyasa fiyatından kapatın
ClosePosFirstProfit - İlk kârlı piyasa fiyatından pozisyonları kapatmak
ClosePosWithMaxProfitInCurrency - Mevduat para biriminde maksimum pozitif kârla bir pozisyonu kapatın
DistMarketAndPos- Pazar ve en yakın konum arasındaki nokta cinsinden mesafeyi verir
ExistOPNearMarket - Piyasaya yakın bir pozisyonun veya siparişin varlığının bayrağını döndürür
ExistPosByPrice - Açık fiyattaki pozisyonların varlığının bayrağını döndürür
GetAmountLotFromOpenPos - Çok sayıda açık pozisyonun miktarını döndürür
Sayfa #3
GetIndexByTicket - Bilete göre siparişin veya pozisyonun indeksini döndürür.
Korelasyon - İki serinin korelasyonunu verir.
GetIndexLastPos - Son açık pozisyonun dizinini döndürür veya -1
GetLotLastPos - Son açık pozisyonun parti boyutunu veya -1'i döndürür
GetMaxLotFromOpenPos - Açık pozisyonlardan maksimum lot boyutunu döndürür
GetMinLotFromOpenPos - Açık pozisyonlardan minimum lot boyutunu döndürür
NumberOfPositions - Konum sayısını döndürür.
GetProfitFromDateInCurrency - Belirli bir tarihten sonra kapatılan pozisyonların mevduat para birimi cinsinden toplam kârını döndürür
GetProfitOpenPosInCurrency - Mevduat para biriminde açık pozisyonların toplam kârını döndürür
GetProfitOpenPosInPoint - Açık pozisyonların toplam kârını puan olarak döndürür
GetTicketLastPos - Son açık pozisyonun biletini döndürür veya -1
Sayfa#4
GetTypeLastClosePos - Son kapatılan pozisyonun türünü döndürür veya -1
GetTypeLastOpenPos - Son açık pozisyonun türünü döndürür veya -1
isCloseLastPosByStop - Durdurarak son pozisyonu kapatmak için bayrağı döndürür
isCloseLastPosByTake - Al ile son pozisyonu kapatmak için bayrağı döndürür.
isLossLastPos - Son pozisyonun kayıp bayrağını döndürür.
isTradeToDay - Bugünün ticaret bayrağını döndürür
NumberOfBarCloseLastPos - Son konumun veya -1'in kapanış çubuğunun numarasını döndürür.
NumberOfBarOpenLastPos - Son pozisyon açık çubuğunun veya -1'in numarasını döndürür.
NumberOfLossPosToday - Bugün kapatılan kaybeden pozisyonların sayısını verir.
PriceCloseLastPos - Son kapatılan pozisyonun kapanış fiyatını verir.
Sayfa #5
PriceOpenLastPos - Son açık pozisyonun açılış fiyatını döndürür.
PriceOpenLastClosePos - Son kapatılan pozisyonun açık fiyatını döndürür.
PriceOpenNearPos - En yakın pozisyonun açık fiyatını döndürür.
TicketNearPos - Piyasaya en yakın pozisyonun biletini açılış fiyatından döndürür.
TypeNearPos - Piyasaya en yakın pozisyon türünü veya -1'i döndürür.
TimeOpenLastPos - Son açık pozisyonun açılış saatini döndürür.
BubbleSort - Bir dizinin öğeleri üzerinde bir baloncuk sıralaması gerçekleştirir.
BarsBetweenLastFractals - Son iki fraktal arasındaki çubuk sayısını döndürür.
SecondsAfterCloseLastPos - Son konum kapatıldıktan sonraki saniye sayısını döndürür.
SecondsAfterOpenLastPos - Son pozisyon açıldıktan sonraki saniye sayısını döndürür.
DeleteOppositeOrders - Ters sıra pozisyonunu sil
ArraySearchDouble - Değere göre dizideki bir öğeyi arar ve bulunan öğenin dizinini döndürür veya -1
ArraySearchInt - Değere göre dizideki bir öğeyi arar ve bulunan öğenin dizinini veya -1'i döndürür.
ArraySearchString - Bir dizi öğesini değere göre arar ve bulunan öğenin dizinini döndürür veya -1
GetLotLastClosePos - Son kapatılan pozisyonun parti boyutunu veya -1'i döndürür
ArrayMax - Bir dizideki maksimum öğenin değerini döndürür.
Sayfa #6
ArrayMin - Bir dizideki minimum öğenin değerini döndürür
GetExtremumZZBar - ZigZag ekstremum çubuğu numarasını kendi numarasına göre döndürür.
ArrayAvg - Dizi öğelerinin aritmetik ortalamasını döndürür.
ArrayAvGeom - Dizi öğelerinin geometrik ortalamasını döndürür.
SetHLine - OBJ_HLINE nesnesini yatay bir çizgiye ayarla
SetVLine - OBJ_VLINE nesnesini dikey bir çizgiye ayarla
SetTLine - OBJ_TREND nesnesini trend çizgisine ayarla
SetTLineByAngle - Eğilim çizgisinin OBJ_TRENDBYANGLE nesnesini açıya göre ayarla
SetArrow - OBJ_ARROW nesnesi olan grafikteki simgeyi ayarlama.
SetLabel - Bir metin etiketi, bir OBJ_LABEL nesnesi ayarlayın.
CrossPointOfLines - İki çizginin kesişme noktasının koordinatlarını hesaplar.Her çizgi, noktalarının bir çift koordinatıyla verilir.
SetRegression - OBJ_REGRESSION nesnesini doğrusal regresyon kanalına ayarlar.
EquationDirect - Düz bir çizginin denklemi. Çizgiyle kesişme noktasında X için Y değerini hesaplar.
GetArrowInterval - Sinyal işaretçilerini ayarlama aralığını döndürür
GetArrowInterval - Sinyal işaretçilerini ayarlama aralığını döndürür
FindNearFractal - En yakın fraktal bulma. Fiyat düzeyini döndürür.
GetExtremumZZBar - ZigZag ekstremum çubuğu numarasını kendi numarasına göre döndürür.
GetExtremumZZPrice - ZigZag ekstremumunu numarasına göre döndürür.
GetFractalBar - Fraktal çubuk numarasını kendi numarasına göre döndürür.
GetNearestDownFractal - En yakın aşağı fraktalın fiyat düzeyini döndürür
GetNearestUpFractal - En yakın yukarı fraktalı döndürür
Sayfa #7
CorrectTF - Zaman çerçevesini desteklenen en yakın MT4'e göre düzeltir.
DateBeginQuarter - Çeyreğin başlangıç tarihini döndürür
DateOfMonday - Pazartesi tarihini hafta numarasına göre döndürür
Fibonacci - Fibonacci serisinin elemanını sıra numarasına göre döndürür.
GetNameMA - MA yönteminin adını döndürür.
GetPriceDiffInPoint - İki çubuk arasındaki puan cinsinden fiyat farkını döndürür.
GetTypePrice - Fiyat türü adını döndürür.
ArrayLR - Bir dizi doğrusal regresyon değeri oluşturur.
ArrayMo - Modu döndürür - dağıtım yoğunluğu eğrisinin maksimumu.
ExistOrdersByPrice - Belirlenen fiyatta siparişlerin varlığının işaretini döndürür
ClosePosBySelect - Önceden seçilmiş bir pozisyonu kapat
CountOrders - Türe göre sipariş sayısını hesaplar.
ModifyOrder - Sipariş değişikliği. Geri testler için işlev sürümü.
IIFc - Koşullara bağlı olarak iki değerden birini döndürür.
IIFd - Koşullara bağlı olarak iki değerden birini döndürür.
IIFi - Koşullara bağlı olarak iki değerden birini döndürür.
IIFs - Koşullara bağlı olarak iki değerden birini döndürür.
ExistInHistoryCloseBetween - Tarihler arasında kapatılan (silinen) bir pozisyon veya siparişin geçmişindeki varlık bayrağını döndürür.
ExistInHistoryOpenBetween - Tarihler arasında açılan (ayarlanan) bir pozisyonun veya emrin geçmişindeki varlığın bayrağını döndürür.
ExistInHistoryToDay - Tarihte bugün için bir emir veya pozisyonun varlığının bayrağını döndürür
TakeProfitLastPos - Son açık pozisyonun TakeProfit fiyatını veya -1'i döndürür.
Sayfa #8
TakeProfitLastClosePos - Son kapatılan pozisyonun TakeProfit fiyatını veya -1'i döndürür.
MovingInWL - Durdurma seviyesini başa baş seviyesine taşıma
SimpleTrailing - Basit bir trol ile pozisyonları takip edin
ArrayZ - Bir sayı serisinin Z puanını döndürür.
ArrayDeleteInt - Verilen dizindeki dizi öğesini siler. Yeni dizinin boyutunu veya hiçbir şey kaldırılamıyorsa -1'i döndürür.
ArrayDeleteDouble - Verilen dizindeki dizi öğesini siler. Yeni dizinin boyutunu veya hiçbir şey kaldırılamıyorsa -1'i döndürür.
ArrayDeleteString - Verilen dizindeki dizi öğesini siler. Yeni dizinin boyutunu veya -1'i döndürür, eğer hiçbir şey kaldırılamazsa.
ArrayInsertDouble - Verilen dizine bir dizi öğesi ekler. Yeni dizinin boyutunu döndürür.
BubbleSort2 - İki boyutlu bir dizinin öğeleri üzerinde bir baloncuk sıralaması gerçekleştirir.
GetTypeLastDeleted - Son silinen siparişin türünü döndürür veya -1
iBarLargest - En büyük çubuğun dizinini döndürür veya -1.
iBarOfDayCalc - Günün başlangıcından itibaren hesaplanan çubuk sayısını döndürür. Çubuk numaralandırma 1'den başlar (bir)
iBarOfDayReal - Günün başlangıcından itibaren çubuğun gerçek sayısını döndürür.
NameDayOfWeek - Haftanın gününün adını döndürür
NormalizeLot - İşlem gören lotun normalleştirilmiş değerini döndürür.
NormalizePrice - Onay boyutuna normalleştirilmiş fiyat değerini döndürür.
WeekOfMonth - Tarihte belirtilen ayın hafta numarasını döndürür
ClosePosBySortLots - Lot büyüklüğüne göre sıralama düzeninde pozisyonları kapatın.
AddLeadingZero - S dizesini K uzunluğuna eşit kılmak için S dizesine yeterli sayıda baştaki sıfır "0" ekler.
toTime - İki/üç tamsayıyı zaman biçiminde bir dizeye dönüştürür
Sayfa #9
StringLower - Küçük harfli bir dize döndürür
StringUpper - BÜYÜK harfle bir dize döndürür
StringToArrayDouble - Gerçek sayıları dizeden diziye aktar
StringToArrayInt - Tamsayı değerlerini dizeden diziye aktar
StrSplit - Bir dizeyi bir dizi öğeye bölme
StrTran - Alt Dizi Değiştirme
MovingInWL - Durdurma seviyesini başa baş seviyesine taşıma
isTradeTimeString - Zaman ticareti etkinleştirme bayrağını döndürür.
isTradeTimeInt - Zaman ticaret izni bayrağını döndürür.
Bunlara ek olarak:
Tüm fonksiyonlar tek bir arşivde.
Tüm işlevler bağlantılı kitaplıklar biçimindedir.
ExistOrders() işlevi.
Sipariş varlığı bayrağını döndürür. Sıralamanın yapılıp yapılmadığı sorusuna cevap verecektir. Bu işlevi kullanarak, herhangi bir siparişin yanı sıra daha spesifik bir sipariş talep edebilirsiniz. İstek filtresi, işlev parametreleri kullanılarak yapılandırılır: