Je suppose qu'Ilnar a eu des difficultés avec les niveaux de prix fractals. C'est pourquoi je suggère d'utiliser ma fonction :
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Поиск ближайшего фрактала. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |//+----------------------------------------------------------------------------+doubleFindNearFractal(stringsy="0", inttf=0, intmode=MODE_LOWER){ if(sy=="" || sy=="0")sy=Symbol();
doublef=0;
intd=MarketInfo(sy, MODE_DIGITS), s;
if(d==0)if(StringFind(sy, "JPY")<0)d=4; elsed=2;
for(s=2; s<100; s++){ f=iFractals(sy, tf, mode, s);
if(f!=0)return(NormalizeDouble(f, d));
} Print("FindNearFractal(): Фрактал не найден");
return(0);
}
La fonction FindNearFractal() recherche la fractale la plus proche d'un type spécifié pour un symbole spécifié à une période donnée et renvoie son niveau de prix. En connaissant le niveau de prix de l'emplacement de la fractale, il est déjà facile de placer un ordre à ce niveau.
Est-il possible que la fonction renvoie deux valeurs, par exemple le numéro de la barre où se trouve la fractale, ou devons-nous en connecter une autre ?
xrust писал (а): Est-il possible que la fonction renvoie deux valeurs, par exemple également le numéro de la barre où se trouve la fractale, ou dois-je en connecter une autre ?
Et pourquoi renvoyer deux valeurs quand une seule - le numéro de la barre - suffit ? À cette fin, dans la déclaration :
return(NormalizeDouble(f, d));
écrire la valeur du compteur de barres au lieu du niveau des prix. Sur la sortie, vous obtiendrez le numéro de barre de la fractale. Et vous obtiendrez le niveau de prix avec l'une des fonctions iHigh () ou iLow() selon le type de fractale.
ah... Eh bien, si en principe, vous pouvez utiliser un tableau passé par référence. Le nombre de paramètres renvoyés serait alors limité par la taille du tableau.
Renvoie un indicateur de l'existence d'un ordre avec la taille de lot spécifiée. Vrai - l'ordre existe (défini), Faux - l'ordre n'existe pas (non défini). Vous pouvez limiter la liste des ordres à vérifier à l'aide des paramètres de la fonction :
sy - Nom de l'instrument. Si vous définissez ce paramètre, la fonction ne vérifiera que les ordres de l'instrument spécifié. NULL signifie l'instrument actuel, et "" (par défaut) signifie n'importe quel instrument.
op - Opération, type d'ordre en attente. Valeurs valides : OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP ou -1. La valeur par défaut de -1 indique tout type de commande.
mn - Identifiant de l'ordre (MagicNumber). La valeur par défaut de -1 signifie n'importe quel MagicNumber.
lo - Taille d'un lot avec une précision de deux décimales. La valeur par défaut est 0 - toute taille de lot.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает флаг существования ордера по размеру лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//| lo - лот ( 0 - любой лот) |//+----------------------------------------------------------------------------+boolExistOrdersByLot(stringsy="", intop=-1, intmn=-1, doublelo=0){inti, 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);
}
Renvoie la taille du lot du dernier ordre passé ou -1. Vous pouvez limiter la liste des ordres à vérifier à l'aide des paramètres de la fonction :
sy - Nom de l'instrument. Si ce paramètre est donné, la fonction ne vérifiera que les ordres de l'instrument spécifié. NULL signifie l'instrument actuel, et "" (par défaut) signifie n'importe quel instrument.
op - Opération, type d'ordre en attente. Valeurs valides : OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP ou -1. La valeur par défaut de -1 signifie un ordre quelconque.
mn - Identifiant de l'ordre (MagicNumber). La valeur par défaut -1 signifie n'importe quel MagicNumber.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает размер лота последнего выставленного ордера или -1 |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doubleGetLotLastOrder(stringsy="", intop=-1, intmn=-1){datetimeo;
doublel=-1;
inti, 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);
}
Renvoie le prix de fixation du dernier ordre ouvert ou 0. Vous pouvez limiter la liste des ordres à vérifier avec les paramètres de la fonction :
sy - Nom de l'instrument. Si ce paramètre est donné, la fonction ne vérifiera que les ordres de l'instrument spécifié. NULL signifie l'instrument actuel, et "" (par défaut) signifie n'importe quel instrument.
op - Opération, type d'ordre en attente. Valeurs valides : OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP ou -1. La valeur par défaut de -1 indique un ordre quelconque.
mn - Identifiant de l'ordre (MagicNumber). La valeur par défaut -1 signifie n'importe quel MagicNumber.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает цену установки последнего ордера или 0. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doubleGetOrderOpenPrice(stringsy="", intop=-1, intmn=-1){datetimet;
doubler=0;
inti, 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);
}
Tout homme a le droit à la gauche... hee... Je vais m'amuser un peu avec ça.
Ilnar, dans le sujet Ordres en attente sur les fractales, a demandé, Comment faire des ordres en attente sur les fractales ?
Je suppose qu'Ilnar a eu des difficultés avec les niveaux de prix fractals. C'est pourquoi je suggère d'utiliser ma fonction :
La fonction FindNearFractal() recherche la fractale la plus proche d'un type spécifié pour un symbole spécifié à une période donnée et renvoie son niveau de prix. En connaissant le niveau de prix de l'emplacement de la fractale, il est déjà facile de placer un ordre à ce niveau.
Est-il possible que la fonction renvoie deux valeurs, par exemple également le numéro de la barre où se trouve la fractale, ou dois-je en connecter une autre ?
Non, c'est clair, je demande simplement.
Fonction ExistOrdersByLot().
Renvoie un indicateur de l'existence d'un ordre avec la taille de lot spécifiée. Vrai - l'ordre existe (défini), Faux - l'ordre n'existe pas (non défini). Vous pouvez limiter la liste des ordres à vérifier à l'aide des paramètres de la fonction :
Exemples d'utilisation de la fonction ExistOrdersByLot().
Vous trouverez ci-joint, comme d'habitude, un script fonctionnel avec les exemples ci-dessus.
Fonction GetLotLastOrder().
Renvoie la taille du lot du dernier ordre passé ou -1. Vous pouvez limiter la liste des ordres à vérifier à l'aide des paramètres de la fonction :
Exemples d'utilisation de GetLotLastOrder().
Vous trouverez ci-joint un script fonctionnant traditionnellement avec les exemples ci-dessus.
Fonction GetOrderOpenPrice().
Renvoie le prix de fixation du dernier ordre ouvert ou 0. Vous pouvez limiter la liste des ordres à vérifier avec les paramètres de la fonction :
Exemples d'utilisation de GetOrderOpenPrice().
Vous trouverez ci-joint un script qui fonctionne parfaitement avec les exemples ci-dessus.