Tout ce que j'ai obtenu, ce sont ces fonctions, et j'ai décidé de comprendre la logique du programmeur. C'est pourquoi je pose des questions. C'est à ça que sert ce forum.
C'est parti ! Voici des fonctions plus intéressantes ! Par exemple, il renvoie la distance en pips entre le marché et la position la plus proche. La sélection plus précise des positions à contrôler est définie par des paramètres externes :
sy - Nom de l'instrument. Si ce paramètre est défini, la fonction vérifiera uniquement les positions de l'instrument spécifié. Le "" ou NULL signifie le symbole actuel.
op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
mn - Identifiant de la position (MagicNumber). La valeur par défaut de -1 signifie n'importe quel MagicNumber.
satop:
La fonction DistMarketAndPos().
C'est parti ! Passons à des fonctions plus intéressantes ! Par exemple, il renvoie la distance, en points, entre le marché et la position la plus proche. La sélection plus précise des positions à contrôler est définie par des paramètres externes :
sy - Nom de l'instrument. Si ce paramètre est défini, la fonction vérifiera uniquement les positions de l'instrument spécifié. Le "" ou NULL signifie le symbole actuel.
op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
mn - Identifiant de la position (MagicNumber). La valeur par défaut -1 signifie n'importe quel MagicNumber.
J'essaie de le faire fonctionner dans les deux sens et d'ouvrir des ordres dans les deux sens. J'ai une erreur, aidez-moi à la corriger.
J'essaie de le faire fonctionner dans les deux sens et d'ouvrir des commandes dans les deux sens avec lui. J'ai un bug dont je n'arrive pas à me débarrasser, aidez-moi à le corriger.
externint TakeProfit = 150;
externdouble Lot = 0.01;
externint MAGIC=1234;
//=====================================================================int start()
{
if (DistMarketAndPos(NULL,OP_BUY)>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point);
}
if (DistMarketAndPos(NULL,OP_SELL)>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);
}
return(0);
}
//======================================================================== //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает расстояние в пунктах между рынком и ближайшей |//| позицей |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
double d, p;
int i, k=OrdersTotal(), r=1000000;
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL) {
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r);
}
Quelqu'un peut-il expliquer pourquoi il faut poster des fonctions qui ne fonctionnent pas ?
'LevelWLoss' - identificateur non déclaré 'LevelProfit' - identificateur non déclaré 'ModifyOrder' - fonction non définie 'LevelWLoss' - identificateur non déclaré 'LevelProfit' - identificateur non déclaré 'ModifyOrder' - fonction non définie 6 erreur(s), 0 avertissement(s)
Quelqu'un peut-il expliquer pourquoi il faut poster des fonctions qui ne fonctionnent pas ?
'LevelWLoss' - identificateur non déclaré 'LevelProfit' - identificateur non déclaré 'ModifyOrder' - fonction non définie 'LevelWLoss' - identificateur non déclaré 'LevelProfit' - identificateur non déclaré 'ModifyOrder' - fonction non définie 6 erreur(s), 0 avertissement(s)
et ceci est à l'intérieur de la fonction elle-même
La fonction fonctionne, mais elle appelle la fonction ModifyOrder, qui doit être ajoutée au code de l'EA et ajoute également à l'EA les variables LevelWLoss et LevelProfit, comme ceci
Merci beaucoup pour ce fil de discussion. Un grand merci à lurii Tokman pour les fonctionnalités. Personnellement, je suis presque prêt à l'assimiler à Stroustrup. Merci !
Cette fonction renvoie la somme des lots des positions ouvertes. Une sélection plus précise des positions à prendre en compte est spécifiée par des paramètres externes :
sy - Nom de l'instrument de marché. Si ce paramètre est défini, la fonction ne prendra en compte que les positions du symbole spécifié. La valeur par défaut "" signifie tout instrument de marché. NULL signifie l'instrument actuel.
op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
mn - Identificateur de position, MagicNumber. La valeur par défaut -1 signifie n'importe quel identifiant.
Ne revient pas ! !!
quelle que soit la façon dont je le fais, soit des zéros, soit " fonction de traitement des événements non trouvée" 4.mq4 1 1 "
Merci beaucoup pour ce fil de discussion. Un grand merci à lurii Tokman pour les fonctionnalités. Personnellement, je suis presque prêt à l'assimiler à Stroustrup. Merci !
N'oubliez pas de remercier également l'auteur des articles.
Fonction DistMarketAndPos().
C'est parti ! Voici des fonctions plus intéressantes ! Par exemple, il renvoie la distance en pips entre le marché et la position la plus proche. La sélection plus précise des positions à contrôler est définie par des paramètres externes :
La fonction DistMarketAndPos().
C'est parti ! Passons à des fonctions plus intéressantes ! Par exemple, il renvoie la distance, en points, entre le marché et la position la plus proche. La sélection plus précise des positions à contrôler est définie par des paramètres externes :
J'essaie de le faire fonctionner dans les deux sens et d'ouvrir des ordres dans les deux sens. J'ai une erreur, aidez-moi à la corriger.
extern int TakeProfit = 150 ;
extern double Lot = 0.01 ;
extern inttern MAGIC = 1234 ;
int start()
{
si (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point)
}
retour(0) ;
}
int DistMarketAndPos(string sy="", int op=OP_BUY, int mn=-1)
{
double d, p ;
int i, k=OrdersTotal(), r=1000000 ;
si (sy=="" || sy=="0") sy=Symbole() ;
p=MarketInfo(sy, MODE_POINT) ;
si (p==0) si (StringFind(sy, "")<0) p=0.00001 ; sinon p=0.01 ;
pour (i=0 ; i<k ; i++)
{
si(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
si ((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
si (mn<0 || OrderMagicNumber()==mn)
{
si (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p ;
si (r>d) r=NormalizeDouble(d, 0) ;
}
si (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p ;
si (r>d) r=NormalizeDouble(d, 0) ;
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------
si (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point) ;
}
retour(0) ;
{
int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //cette ligne donne 1 erreur,
//si cette ligne est supprimée,
//il compile, mais ensuite
//Je ne mets pas op=OP_SELL,
//et sans elle, le conseiller expert pensera,
//que l'ordre à partir duquel vous voulez calculer
//distance est OP_BUY
si (sy=="" || sy=="0") sy=Symbole() ;
p=MarketInfo(sy, MODE_POINT) ;
si (p==0) si (StringFind(sy, "")<0) p=0.00001 ; sinon p=0.01 ;
pour (i=0 ; i<k ; i++)
{
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
si ((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
si (mn<0 || OrderMagicNumber()==mn)
{
si (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p ;
si (r>d) r=NormalizeDouble(d, 0) ;
}
si (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p ;
si (r>d) r=NormalizeDouble(d, 0) ;
}
}
}
}
}
retour(r) ;
retour(r) ;
}
}
//-------------------------------------------------------------------------------------------
MERCI
J'essaie de le faire fonctionner dans les deux sens et d'ouvrir des commandes dans les deux sens avec lui. J'ai un bug dont je n'arrive pas à me débarrasser, aidez-moi à le corriger.
MERCI
Vous devriez essayer :
Et avec des questions ici...
Fonction MovingInWL().
Quelqu'un peut-il expliquer pourquoi il faut poster des fonctions qui ne fonctionnent pas ?
'LevelWLoss' - identificateur non déclaré
'LevelProfit' - identificateur non déclaré
'ModifyOrder' - fonction non définie
'LevelWLoss' - identificateur non déclaré
'LevelProfit' - identificateur non déclaré
'ModifyOrder' - fonction non définie
6 erreur(s), 0 avertissement(s)
et ceci dans la fonction elle-même
Quelqu'un peut-il expliquer pourquoi il faut poster des fonctions qui ne fonctionnent pas ?
'LevelWLoss' - identificateur non déclaré
'LevelProfit' - identificateur non déclaré
'ModifyOrder' - fonction non définie
'LevelWLoss' - identificateur non déclaré
'LevelProfit' - identificateur non déclaré
'ModifyOrder' - fonction non définie
6 erreur(s), 0 avertissement(s)
et ceci est à l'intérieur de la fonction elle-même
La fonction fonctionne, mais elle appelle la fonction ModifyOrder, qui doit être ajoutée au code de l'EA et ajoute également à l'EA les variables LevelWLoss et LevelProfit, comme ceci
extern int LevelProfit = 1000 ;
extern int LevelWLoss = 50 ;
Merci beaucoup pour ce fil de discussion. Un grand merci à lurii Tokman pour les fonctionnalités. Personnellement, je suis presque prêt à l'assimiler à Stroustrup.
Merci !
La fonction GetAmountLotFromOpenPos().
Cette fonction renvoie la somme des lots des positions ouvertes. Une sélection plus précise des positions à prendre en compte est spécifiée par des paramètres externes :
Ne revient pas ! !!
quelle que soit la façon dont je le fais, soit des zéros, soit " fonction de traitement des événements non trouvée" 4.mq4 1 1
"
Merci beaucoup pour ce fil de discussion. Un grand merci à lurii Tokman pour les fonctionnalités. Personnellement, je suis presque prêt à l'assimiler à Stroustrup.
Merci !