Die Funktion ExistPositions().
Dient der Prüfung auf offene Käufe oder Verkäufe. Ähnlich wie bei der Funktion ExistOrders. Standardmäßig werden alle Positionen geprüft: aktuelle und andere Instrumente. Sie können die Auswahl mit einer Kombination von Filtern - Funktionsparametern - verfeinern:
- sy - Schränkt den Namen des Instruments ein. Der Standardparameter ist "" - keine Einschränkung, d. h. ein beliebiges Instrument. Wenn Sie NULL übergeben, wird die Positionsauswahl auf das aktuelle Instrument beschränkt.
- op - schränkt die Positionsart ein (Kauf/Verkauf). Standardmäßig gibt es keine Einschränkung, d. h. jede Positionsart wird geprüft. Gültige Werte für diesen Parameter sind -1, OP_BUY und OP_SELL.
- mn - Wendet eine Beschränkung auf die Identifikationsnummer ("magische" Nummer) der Position an. Standardmäßig gibt es keine Einschränkung, d.h. die Position mit einer beliebigen magischen Zahl wird geprüft.
- ot - Wendet eine Beschränkung der Öffnungszeit der Position an. Es wird geprüft, ob die Position später als der Wert dieses Parameters geöffnet wird. Standardmäßig gibt es keine Einschränkung, d.h. Positionen mit beliebiger offener Zeit werden geprüft.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion für das Prüfgerät.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion für online.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion.
Die Funktion ModifyOrder dient dazu, ein oder mehrere Preisniveaus einer vorausgewählten Bestellung zu ändern. Unter einem schwebenden Auftrag versteht man hier einen Limit- oder Stop-Auftrag sowie einen Markt-Kauf- oder -Verkaufsauftrag, d.h. eine Position. Mit der Funktion ModifyOrder können Sie die beiden Preisniveaus StopLoss und TakeProfit für die Position ändern, während für die Pending Order auch der OpenPrice-Einstellpreis geändert werden kann. Die geänderten Preisstufen werden als Parameter an die Funktion ModifyOrder übergeben. Wenn einer der Parameter negativ ist, wird das entsprechende Preisniveau nicht verändert.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion. Tester-Version.
Die Funktion DeleteOrders() dient zum Löschen der schwebenden Aufträge BuyLimit, BuyStop, SellLimit und SellStop. Die Funktion DeleteOrders() ist universell, d.h. sie kann verwendet werden, um alle vorhandenen schwebenden Aufträge zu löschen, sowie bestimmte Aufträge, die die durch die Funktionsparameter festgelegten Auswahlbedingungen erfüllen:
sy - Name des Instruments. Da im Strategietester nur das aktuelle Symbol gehandelt werden kann, ist dieser Parameter für die Version des Strategietesters nicht relevant und wird nur für die Kompatibilität mit der Online-Version dieser Funktion benötigt. Es ist besser, im Prüfgerät die Werte "" oder NULL zu verwenden. Der Standardwert "" bedeutet ein beliebiges Symbol.
op - Art des Geschäftsvorgangs, Art des schwebenden Auftrags. Einer von fünf Werten ist möglich: -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT oder OP_SELLSTOP. Der Standardwert von -1 bedeutet eine beliebige Reihenfolge.
mn - MagicNumber, Identifikationsnummer eines schwebenden Auftrags. Der Standardwert -1 bedeutet eine beliebige MagicNumber.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion. Online-Version.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); }
Funktion ExistOrdersByLot().
Gibt ein Kennzeichen für das Vorhandensein eines Auftrags mit der angegebenen Losgröße zurück. True - Auftrag existiert (gesetzt), False - Auftrag existiert nicht (nicht gesetzt). Sie können die Liste der zu prüfenden Aufträge mit Hilfe der Funktionsparameter einschränken:
- sy - Name des Instruments. Wenn Sie diesen Parameter setzen, prüft die Funktion nur die Aufträge des angegebenen Instruments. NULL bedeutet aktuelles Instrument, und "" (standardmäßig) bedeutet ein beliebiges Instrument.
- op - Vorgang, Art des schwebenden Auftrags. Gültige Werte: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP oder -1. Der Standardwert -1 steht für einen beliebigen Auftragstyp.
- mn - Kennung der Bestellung (MagicNumber). Der Standardwert von -1 bedeutet eine beliebige MagicNumber.
- lo - Größe einer Partie mit einer Genauigkeit von zwei Dezimalstellen. Der Standardwert ist 0 - eine beliebige Losgröße.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion.
Gibt die Losgröße des zuletzt erteilten Auftrags oder -1 zurück. Sie können die Liste der zu prüfenden Aufträge mit Hilfe der Funktionsparameter einschränken:
- sy - Name des Instruments. Wenn dieser Parameter angegeben wird, prüft die Funktion nur die Aufträge des angegebenen Instruments. NULL bedeutet das aktuelle Instrument, und "" (standardmäßig) bedeutet ein beliebiges Instrument.
- op - Vorgang, Art des schwebenden Auftrags. Gültige Werte: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP oder -1. Der Standardwert von -1 bedeutet eine beliebige Reihenfolge.
- mn - Kennung der Bestellung (MagicNumber). Der Standardwert -1 bedeutet eine beliebige MagicNumber.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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() Funktion.
Gibt den Einstellpreis der zuletzt geöffneten Order oder 0 zurück. Sie können die Liste der zu prüfenden Orders mit Funktionsparametern einschränken:
- sy - Name des Instruments. Wenn dieser Parameter angegeben wird, prüft die Funktion nur die Aufträge des angegebenen Instruments. NULL bedeutet aktuelles Instrument, und "" (standardmäßig) bedeutet ein beliebiges Instrument.
- op - Vorgang, Art des schwebenden Auftrags. Gültige Werte: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP oder -1. Der Standardwert von -1 bedeutet eine beliebige Reihenfolge.
- mn - Kennung der Bestellung (MagicNumber). Der Standardwert -1 bedeutet eine beliebige MagicNumber.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); }
Die Funktion IndexByTicket().
Gibt den Index (Ordnungszahl in der allgemeinen Liste der eingestellten Aufträge oder offenen Positionen) des Auftrags oder der Position auf dem Ticket zurück. Wenn IndexByTicket() keinen Auftrag oder keine Position mit dem gewünschten Ticket findet, wird -1 zurückgegeben. Mit Hilfe der Funktionsparameter kann die Liste der zu prüfenden Aufträge oder Positionen eingeschränkt werden:
- sy - Name des Instruments. Wenn Sie diesen Parameter angeben, prüft die Funktion nur Aufträge und Positionen für das angegebene Instrument. NULL bedeutet das aktuelle Instrument, und "" (standardmäßig) bedeutet ein beliebiges Instrument.
- op - Geschäftsvorgang, Art des schwebenden Auftrags oder der Position. Gültige Werte: OP_BUY, OP_BUYLIMIT, OP_BUYSTOP, OP_SELL, OP_SELLLIMIT, OP_SELLSTOP oder -1. Der Standardwert -1 steht für eine beliebige Reihenfolge oder Position.
- mn - Kennung eines Auftrags oder einer Position (MagicNumber). Der Standardwert -1 bedeutet eine beliebige MagicNumber.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); }
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Alle Funktionen stammen aus diesem Thread - http://forum.mql4.com/ru/11287 , der Thread enthält eine detaillierte Beschreibung jeder Funktion und Beispiele für ihre Verwendung
Seite 2Inhalt
NumberOfOrders - Gibt die Anzahl der Bestellungen zurück.
ClosePosBySelect - Schließt eine vorausgewählte Position.
ClosePosBySizeProfitInCurrency - Schließen Sie die Positionen, die einen Gewinn in der Einzahlungswährung mit einem bestimmten Wert haben
ClosePosBySizeLossInCurrency - Schließung der Positionen, deren Verlust in der Depotwährung einen bestimmten Wert überschritten hat
ClosePositions - Schließen Sie Positionen zum Marktpreis
ClosePosFirstProfit - Schließen von Positionen zum ersten profitablen Marktpreis
ClosePosWithMaxProfitInCurrency – Schließen Sie eine Position mit dem maximalen positiven Gewinn in der Einzahlungswährung
DistMarketAndPos- Gibt den Abstand in Punkten zwischen dem Markt und der nächsten Position zurück
ExistOPNearMarket - Gibt das Flag für das Vorhandensein einer Position oder Order in der Nähe des Marktes zurück
ExistPosByPrice - Gibt das Flag für die Existenz von Positionen zum Eröffnungspreis zurück
GetAmountLotFromOpenPos – Gibt die Menge der offenen Positionen zurück
Seite 3
GetIndexByTicket – Gibt den Index der Bestellung oder Position nach Ticket zurück.
Korrelation - Gibt die Korrelation zweier Reihen zurück.
GetIndexLastPos – Gibt den Index der letzten offenen Position oder -1 zurück
GetLotLastPos - Gibt die Losgröße der letzten offenen Position oder -1 zurück
GetMaxLotFromOpenPos - Gibt die maximale Losgröße aus offenen Positionen zurück
GetMinLotFromOpenPos - Gibt die Mindestlosgröße aus offenen Positionen zurück
NumberOfPositions - Gibt die Anzahl der Positionen zurück.
GetProfitFromDateInCurrency – Gibt den Gesamtgewinn in der Einzahlungswährung von Positionen zurück, die seit einem bestimmten Datum geschlossen wurden
GetProfitOpenPosInCurrency – Gibt den Gesamtgewinn der offenen Positionen in der Einzahlungswährung zurück
GetProfitOpenPosInPoint - Gibt den Gesamtgewinn der offenen Positionen in Punkten zurück
GetTicketLastPos – Gibt das Ticket der letzten offenen Position oder -1 zurück
Seite 4
GetTypeLastClosePos – Gibt den Typ der letzten geschlossenen Position oder -1 zurück
GetTypeLastOpenPos – Gibt den Typ der letzten offenen Position oder -1 zurück
isCloseLastPosByStop - Gibt das Flag zum Schließen der letzten Position durch Stop zurück
isCloseLastPosByTake – Gibt das Flag zum Schließen der letzten Position durch Take zurück.
isLossLastPos – Gibt das Verlust-Flag der letzten Position zurück.
isTradeToDay - Gibt die Handelsflagge für heute zurück
NumberOfBarCloseLastPos - Gibt die Nummer des schließenden Balkens der letzten Position oder -1 zurück.
NumberOfBarOpenLastPos - Gibt die Nummer des Balkens mit der letzten offenen Position oder -1 zurück.
NumberOfLossPosToday - Gibt die Anzahl der heute geschlossenen Verlustpositionen zurück.
PriceCloseLastPos - Gibt den Schlusskurs der letzten geschlossenen Position zurück.
Seite #5
PriceOpenLastPos - Gibt den Eröffnungspreis der letzten offenen Position zurück.
PriceOpenLastClosePos - Gibt den Eröffnungspreis der letzten geschlossenen Position zurück.
PriceOpenNearPos - Gibt den Eröffnungspreis der nächsten Position zurück.
TicketNearPos - Gibt das Ticket der nächstgelegenen Position zum Markt zum Eröffnungspreis zurück.
TypeNearPos - Gibt den Positionstyp zurück, der dem Markt am nächsten ist, oder -1.
TimeOpenLastPos - Gibt die Öffnungszeit der letzten offenen Position zurück.
BubbleSort - Führt eine Blasensortierung für die Elemente eines Arrays durch.
BarsBetweenLastFractals – Gibt die Anzahl der Balken zwischen den letzten beiden Fraktalen zurück.
SecondsAfterCloseLastPos – Gibt die Anzahl der Sekunden zurück, nachdem die letzte Position geschlossen wurde.
SecondsAfterOpenLastPos – Gibt die Anzahl der Sekunden zurück, nachdem die letzte Position geöffnet wurde.
DeleteOppositeOrders - Löschen Sie die Position der entgegengesetzten Bestellung
ArraySearchDouble – Sucht nach einem Element in einem Array nach Wert und gibt den Index des gefundenen Elements oder -1 zurück
ArraySearchInt – Sucht nach einem Element in einem Array nach Wert und gibt den Index des gefundenen Elements oder -1 zurück.
ArraySearchString – Sucht nach einem Array-Element nach Wert und gibt den Index des gefundenen Elements oder -1 zurück
GetLotLastClosePos - Gibt die Losgröße der letzten geschlossenen Position oder -1 zurück
ArrayMax - Gibt den Wert des größten Elements in einem Array zurück.
Seite #6
ArrayMin - Gibt den Wert des kleinsten Elements in einem Array zurück
GetExtremumZZBar - Gibt die ZigZag-Extremum-Balkennummer nach ihrer Nummer zurück.
ArrayAvg – Gibt das arithmetische Mittel der Array-Elemente zurück.
ArrayAvGeom – Gibt das geometrische Mittel der Array-Elemente zurück.
SetHLine – Setzt das Objekt OBJ_HLINE auf eine horizontale Linie
SetVLine – Setzt das Objekt OBJ_VLINE auf eine vertikale Linie
SetTLine – Setzt das Objekt OBJ_TREND auf die Trendlinie
SetTLineByAngle – Setzt das Objekt OBJ_TRENDBYANGLE der Trendlinie nach Winkel
SetArrow - Setzen des Symbols auf dem Diagramm, des OBJ_ARROW-Objekts.
SetLabel – Setzt eine Textbezeichnung, ein OBJ_LABEL-Objekt.
CrossPointOfLines - Berechnet die Koordinaten des Schnittpunkts zweier Linien. Jede Linie ist durch ein Koordinatenpaar ihrer Punkte gegeben.
SetRegression – Legt das OBJ_REGRESSION-Objekt auf den linearen Regressionskanal fest.
EquationDirect - Gleichung einer geraden Linie. Berechnet den Y-Wert für X am Schnittpunkt mit der Linie.
GetArrowInterval – Gibt das Intervall zum Setzen von Signalzeigern zurück
GetArrowInterval – Gibt das Intervall zum Setzen von Signalzeigern zurück
FindNearFractal - Findet das nächste Fraktal. Gibt das Preisniveau zurück.
GetExtremumZZBar - Gibt die ZigZag-Extremum-Balkennummer nach ihrer Nummer zurück.
GetExtremumZZPrice – Gibt das ZigZag-Extremum anhand seiner Zahl zurück.
GetFractalBar - Gibt die Fraktalbalkennummer nach ihrer Nummer zurück.
GetNearestDownFractal – Gibt das Preisniveau des nächsten Down-Fraktals zurück
GetNearestUpFractal – Gibt das nächsthöhere Fraktal zurück
Seite Nr. 7
CorrectTF - Korrigiert den Zeitrahmen auf den nächsten unterstützten MT4.
DateBeginQuarter – Gibt das Startdatum des Quartals zurück
DateOfMonday – Gibt das Datum des Montags nach Wochennummer zurück
Fibonacci - Gibt das Element der Fibonacci-Reihe nach seiner Ordnungszahl zurück.
GetNameMA – Gibt den Namen der MA-Methode zurück.
GetPriceDiffInPoint - Gibt die Preisdifferenz in Punkten zwischen zwei Balken zurück.
GetTypePrice – Gibt den Namen des Preistyps zurück.
ArrayLR – Erzeugt ein Array linearer Regressionswerte.
ArrayMo – Gibt den Modus zurück – das Maximum der Verteilungsdichtekurve.
ExistOrdersByPrice - Gibt das Flag für die Existenz von Orders zum eingestellten Preis zurück
ClosePosBySelect - Schließt eine vorausgewählte Position
CountOrders – Berechnet die Anzahl der Bestellungen nach Typ.
ModifyOrder - Auftragsänderung. Funktionsversion für Backtests.
IIFc - Gibt je nach Bedingung einen von zwei Werten zurück.
IIFd - Gibt je nach Bedingung einen von zwei Werten zurück.
IIFi - Gibt je nach Bedingung einen von zwei Werten zurück.
IIFs - Gibt je nach Bedingung einen von zwei Werten zurück.
ExistInHistoryCloseBetween – Gibt das Flag der Existenz in der Historie einer Position oder Order zurück, die zwischen Datumsangaben geschlossen (gelöscht) wurde.
ExistInHistoryOpenBetween – Gibt das Flag der Existenz in der Historie einer Position oder Order zurück, die zwischen Datumsangaben geöffnet (gesetzt) wurde.
ExistInHistoryToDay – Gibt das Flag des Vorhandenseins eines Auftrags oder einer Position in der Historie für heute zurück
TakeProfitLastPos - Gibt den TakeProfit-Preis der letzten offenen Position oder -1 zurück.
Seite #8
TakeProfitLastClosePos - Gibt den TakeProfit-Preis der letzten geschlossenen Position oder -1 zurück.
MovingInWL - Verschieben des Stop-Levels auf Breakeven
SimpleTrailing - Verfolgen von Positionen mit einem einfachen Schleppnetz
ArrayZ - Gibt den Z-Score einer Zahlenreihe zurück.
ArrayDeleteInt – Löscht das Array-Element am angegebenen Index. Gibt die Größe des neuen Arrays zurück oder -1, wenn nichts entfernt werden konnte.
ArrayDeleteDouble – Löscht das Array-Element am angegebenen Index. Gibt die Größe des neuen Arrays zurück oder -1, wenn nichts entfernt werden konnte.
ArrayDeleteString – Löscht das Array-Element am angegebenen Index. Gibt die Größe des neuen Arrays zurück, oder -1, wenn nichts entfernt werden könnte.
ArrayInsertDouble – Fügt ein Array-Element am angegebenen Index ein. Gibt die Größe des neuen Arrays zurück.
BubbleSort2 - Führt eine Blasensortierung an den Elementen eines zweidimensionalen Arrays durch.
GetTypeLastDeleted – Gibt den Typ der zuletzt gelöschten Bestellung oder -1 zurück
iBarLargest - Gibt den Index des größten Balkens oder -1 zurück.
iBarOfDayCalc - Gibt die berechnete Balkenzahl vom Beginn des Tages zurück. Taktnummerierung beginnt bei 1 (eins)
iBarOfDayReal - Gibt die reelle Zahl des Balkens seit Beginn des Tages zurück.
NameDayOfWeek – Gibt den Namen des Wochentags zurück
NormalizeLot – Gibt den normalisierten Wert des gehandelten Lots zurück.
NormalizePrice – Gibt den auf die Tickgröße normalisierten Preiswert zurück.
WeekOfMonth – Gibt die Wochennummer des Monats zurück, wenn das Datum angegeben ist
ClosePosBySortLots - Schließt Positionen in Sortierreihenfolge nach Losgröße.
AddLeadingZero – Fügt der Zeichenfolge S genügend führende Nullen „0“ hinzu, um die Zeichenfolge S gleich der Länge K zu machen.
toTime - Konvertiert zwei/drei Ganzzahlen in eine Zeichenfolge im Zeitformat
Seite #9
StringLower – Gibt eine Zeichenfolge in Kleinbuchstaben zurück
StringUpper - Gibt eine Zeichenfolge in GROSSBUCHSTABEN zurück
StringToArrayDouble - Überträgt reelle Zahlen von String zu Array
StringToArrayInt - Ganzzahlige Werte von String zu Array übertragen
StrSplit - Aufteilen einer Zeichenfolge in ein Array von Elementen
StrTran - Substring-Ersetzung
MovingInWL - Verschieben des Stop-Levels auf Breakeven
isTradeTimeString – Gibt das Time-Trading-Enable-Flag zurück.
isTradeTimeInt – Gibt das Zeithandelserlaubnis-Flag zurück.
Zusätzlich:
Alle Funktionen in einem Archiv.
Alle Funktionen liegen in Form von verlinkten Bibliotheken vor.
ExistOrders()-Funktion.
Gibt das Order-Existenz-Flag zurück. Es wird die Frage beantworten, ob die Reihenfolge festgelegt ist oder nicht. Mit dieser Funktion können Sie jede Bestellung anfordern, aber auch eine spezifischere. Der Anforderungsfilter wird über Funktionsparameter konfiguriert: