[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 223
Je dois initialiser un tableau unidimensionnel de type double avec 3000 valeurs de prix d'offre, toutes les valeurs sont différentes et ne sont pas dans l'ordre.
Je dois saisir manuellement chaque valeur séparée par une virgule - ce qui n'est pas réaliste.
J'ai essayé avec excel, mais si je mets un point au lieu d'un point flottant, excel ne lit pas les chiffres pour mettre une virgule entre eux.
J'ai écrit un simple Expert Advisor qui retourne 3 variables et les passe à start().
Ensuite, à chaque tick, ces données (type d'objet, prix1 et prix2) doivent être renvoyées.
//+-------------------------------------------------------------------------------------+//| TradingByLine.mq4 |//| hoz |//| |//+-------------------------------------------------------------------------------------+#property copyright "hoz"#property link ""string objName;
int isObj,
objType;
double price1,
price2;
//+-------------------------------------------------------------------------------------+//| Функция иницилизации |//+-------------------------------------------------------------------------------------+int init()
{
return(0);
}
//+-------------------------------------------------------------------------------------+//| Функция деиницилизации |//+-------------------------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+-------------------------------------------------------------------------------------+//| Блок поиска своих объектов |//+-------------------------------------------------------------------------------------+bool IsObjectFound(double& price1, double& price2, int& objType)
{
for (int obj=0; obj<=ObjectsTotal()-1; obj++)
{
objName = ObjectName(obj);
isObj = ObjectFind(objName);
price1 = ObjectGet("objName", OBJPROP_PRICE1);
price2 = ObjectGet("objName", OBJPROP_PRICE2);
objType = ObjectType("objName");
if (isObj != -1)
return(true);
}
return(false);
}
//+-------------------------------------------------------------------------------------+//| Функция start |//+-------------------------------------------------------------------------------------+int start()
{
if (!IsObjectFound(price1, price2, objType))
return(0);
Print("objType = ", objType);
Print("price1 = ", price1, ", price2 = ", price2);
return(0);
}
Ensuite, je lance ce conseiller expert en mode visualisation dans le testeur et je trace une ligne dans le graphique à la main. Les prix du dessin et le type d'objet que j'ai obtenu dans la fonctionIsObjectFound() ne renvoient pas des résultats corrects. Voici la sortie du journal :
Je dois initialiser un tableau unidimensionnel de type double pour 3000 valeurs de prix d'offre, toutes les valeurs sont différentes et ne sont pas dans l'ordre.
Il n'est pas réaliste d'entrer manuellement chaque valeur séparée par une virgule.
J'ai essayé avec Excel mais si je mets un point au lieu d'un point flottant, Excel ne lit pas les chiffres pour mettre une virgule entre eux.
Veuillez suggérer la meilleure option.
Excel peut lire, montrez-moi plus de détails sur la façon dont vous avez procédé.
J'ai écrit un simple Expert Advisor qui retourne 3 variables et les passe à start().
Ensuite, à chaque tick, ces données (type d'objet, prix1 et prix2) doivent être renvoyées.
Ensuite, je lance ce conseiller expert en mode visualisation dans le testeur et je trace une ligne dans le graphique à la main. Les prix du dessin et le type d'objet que j'ai obtenu dans la fonctionIsObjectFound() ne renvoient pas des résultats corrects. Voici la sortie du journal :
La ligne est dessinée à la main, ce qui signifie qu'elle a un type et d'autres paramètres :
Pourquoi les paramètres requis ne sont-ils pas renvoyés ?
objName sans guillemets. Il s'agit du nom de la variable (identifiant dans le texte du programme) qui contient le nom de l'objet (chaîne de caractères).
objName sans guillemets. Il s'agit du nom de la variable (identifiant dans le texte du programme) qui contient le nom de l'objet (chaîne de caractères).
D'ailleurs, la documentation pense le contraire. C'est là que j'ai été pris dans la confusion.
J'ai spécifiquement choisi une période du graphique en 2000 (quand le cinquième signe était 0 partout) dans laquelle il y a une bougie ouverte à un prix qui se trouve parmi les valeurs du tableau.
Selon mon idée - à leur ouverture devrait déclencher un ordre - mais cela ne se produit pas ......P O M U ? ???
int start()
{
double Price=iOpen (Symbol (),0,0);
double SL=NormalizeDouble (Price-3000*Point, Digits);
double TP=NormalizeDouble (Price+100*Point, Digits);
double massiv [4]={0.85370,0.85690, 0.85970 ,0.86170};//объявление и инициализация массиваdouble value = Bid ;// параметру value функции ArrayBsearch присваивается значение текущей ценыint S = ArrayBsearch( massiv[4], value, WHOLE_ARRAY, 0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значениеif (Bid == massiv[S])//если текущая цена равна значению возвращенному функцией .if (Bid==Price )// и данная цена есть цена открытия нового бараOrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер
}
Il manque probablement des parenthèses à un endroit.
La variable int Ticket est locale et sera réinitialisée au prochain tick.
J'ai rencontré ce problème.
Je dois initialiser un tableau unidimensionnel de type double avec 3000 valeurs de prix d'offre, toutes les valeurs sont différentes et ne sont pas dans l'ordre.
Je dois saisir manuellement chaque valeur séparée par une virgule - ce qui n'est pas réaliste.
J'ai essayé avec excel, mais si je mets un point au lieu d'un point flottant, excel ne lit pas les chiffres pour mettre une virgule entre eux.
Veuillez suggérer la meilleure option.
J'ai écrit un simple Expert Advisor qui retourne 3 variables et les passe à start().
Ensuite, à chaque tick, ces données (type d'objet, prix1 et prix2) doivent être renvoyées.
Ensuite, je lance ce conseiller expert en mode visualisation dans le testeur et je trace une ligne dans le graphique à la main. Les prix du dessin et le type d'objet que j'ai obtenu dans la fonctionIsObjectFound() ne renvoient pas des résultats corrects. Voici la sortie du journal :
La ligne est dessinée à la main, ce qui signifie qu'elle a un type et d'autres paramètres :
Pourquoi les paramètres requis ne sont pas renvoyés ?
J'ai rencontré ce problème.
Je dois initialiser un tableau unidimensionnel de type double pour 3000 valeurs de prix d'offre, toutes les valeurs sont différentes et ne sont pas dans l'ordre.
Il n'est pas réaliste d'entrer manuellement chaque valeur séparée par une virgule.
J'ai essayé avec Excel mais si je mets un point au lieu d'un point flottant, Excel ne lit pas les chiffres pour mettre une virgule entre eux.
Veuillez suggérer la meilleure option.
Excel peut lire, montrez-moi plus de détails sur la façon dont vous avez procédé.
J'ai écrit un simple Expert Advisor qui retourne 3 variables et les passe à start().
Ensuite, à chaque tick, ces données (type d'objet, prix1 et prix2) doivent être renvoyées.
Ensuite, je lance ce conseiller expert en mode visualisation dans le testeur et je trace une ligne dans le graphique à la main. Les prix du dessin et le type d'objet que j'ai obtenu dans la fonctionIsObjectFound() ne renvoient pas des résultats corrects. Voici la sortie du journal :
La ligne est dessinée à la main, ce qui signifie qu'elle a un type et d'autres paramètres :
Pourquoi les paramètres requis ne sont-ils pas renvoyés ?
Nous devons
objName sans guillemets. Il s'agit du nom de la variable (identifiant dans le texte du programme) qui contient le nom de l'objet (chaîne de caractères).
Il devrait être
objName sans guillemets. Il s'agit du nom de la variable (identifiant dans le texte du programme) qui contient le nom de l'objet (chaîne de caractères).
D'ailleurs, la documentation pense le contraire. C'est là que j'ai été pris dans la confusion.
Excel peut le lire, montrez-moi plus de détails sur la façon de le faire.
Dans la ligne des 100 valeurs avec une virgule après le premier signe (ex : prix)
Mise en évidence d'une ligne
Accueil - trouver et remplacer
Changer toutes les virgules en points - réussi.
Maintenant nous devons mettre des virgules entre les valeurs
Je sélectionne le format des cellules
Tous les formats
Dans le champ actif qui affiche le format numérique de ma chaîne - je mets une virgule à la fin
Exel dit qu'il est incapable de traiter le format que j'ai entré.
D'ailleurs, la documentation pense le contraire. J'ai donc été induit en erreur.
Pourquoi les commandes ne s'ouvrent-elles pas ?
Dites-moi pourquoi ce code ne fonctionne pas.
J'ai spécifiquement choisi une période du graphique en 2000 (quand le cinquième signe était 0 partout) dans laquelle il y a une bougie ouverte à un prix qui se trouve parmi les valeurs du tableau.
Selon mon idée - à leur ouverture devrait déclencher un ordre - mais cela ne se produit pas ......P O M U ? ???