Qu'est-ce qui est le mieux à faire dans l'indicateur, démarrer une minuterie de 1s ou dans OnCalculate pour comparer le temps (secondes) ?
il n'est pas important de savoir où le faire, la seule chose que OnCalculate est liée aux ticks - il n'y aura pas de tick et donc il n'y aura pas d'appel OnCalculate
une seconde suffit pour moi et moins souvent jusqu'à ce que le tic-tac arrive
pour moi, afficher les transactions sur le graphique + le résultat de la transaction sur les barres, et quelques informations semi-statiques comme la tendance globale.
peut regarder le prix du changement de
intOnCalculate (constint rates_total, // размер массива price[] constint prev_calculated, // обработано баров на предыдущем вызове constint begin, // откуда начинаются значимые данные constdouble& price[] // массив для расчета
);
Comment puis-je comparer le symbole graphique actuel avec celui dont j'ai besoin ?
case1 : // кейс для открытия Buy по AUD/USDif(Symbol() == (как обозначить нужный символ для сравнения?)) // если символ текущего графика AUD/USD открываем сделку
{
RefreshRates();
Open_Order = OrderSend("AUDUSD",OP_BUY,Lot(),Ask,0,0,0); // Открытие ордера//----------------------------------------------------------------------------------------------------
В тоже время советник запущен на другом графике и пытается произвести открытие ордера, цены не совпадают и соответственно вылетает ошибка - неверные цены
case2 : // кейс для открытия Bay по GBP/USD if(Symbol() == (как обозначить нужный символ для сравнения?))
// если символ текущего графика не AUDUSD то выходим
{
RefreshRates();
Open_Order = OrderSend("GBPUSD",OP_SELL,Lot(),Bid,0,0,0); // Открытие ордера
Т.е. надо ему дать понять, что тот или иной кейс принадлежит тому или другому графику, но чтот я пока не придумал как
J'ai besoin que le programme ouvre un ordre sur AUD/USD, il ouvre donc l'ordre (il fonctionne correctement). Cependant, le programme essaie d'ouvrir l'ordre sur d'autres graphiques ouverts(le robot fonctionne sur plusieurs paires de devises) et il renvoie une erreur de prix pour les autres paires de devises où le conseiller expert fonctionne. Je dois faire une comparaison et si Symbol() == est égal au symbole sur lequel l'ordre doit être ouvert, alors nous l'ouvrons et si non, nous sortons. Je n'ai trouvé nulle part comment définir le nom du symbole à partir du terminal et effectuer la comparaison.
Comment puis-je comparer le symbole graphique actuel avec celui dont j'ai besoin ?
J'ai besoin que le programme ouvre un ordre sur AUD/USD, il ouvre donc l'ordre (il fonctionne correctement). Cependant, le programme essaie d'ouvrir l'ordre sur d'autres graphiques ouverts(le robot fonctionne sur plusieurs paires de devises) et il renvoie une erreur de prix pour les autres paires de devises où le conseiller expert fonctionne. Je dois faire une comparaison et si Symbol() == est égal au symbole sur lequel l'ordre doit être ouvert, alors nous l'ouvrons et si non, nous sortons. Je n'ai trouvé nulle part comment définir le nom du symbole à partir du terminal et faire une comparaison.
Il y a un exemple d'obtention des bons prix à la fin.
2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
Merci, mais je n'ai pas besoin des bons prix. Les prix sont corrects. J'ai besoin que l'EA n'ouvre pas un ordre si la paire de devises sur laquelle l'ordre est ouvert n'est pas la même que le graphique ouvert actuel auquel le robot est attaché. Nous pourrions peut-être mettre en œuvre cette solution en ouvrant un nouveau graphique avec un horizon temporel, en y ouvrant un ordre souhaité, puis en fermant le graphique.
Mon programme accède au graphique actuel, lui attribue le nom de l'instrument actuel et le scelle dans une variable, puis compare la valeur de cette variable au symbole actuel sur le graphique. Il la compare en fait à elle-même)))) Je dois d'une manière ou d'une autre convertir Sympol() en une valeur à laquelle toute autre variable peut être comparée. Par exemple :
Mon programme accède au graphique actuel, lui attribue le nom de l'instrument actuel et le scelle dans une variable, puis compare la valeur de cette variable au symbole actuel sur le graphique. Il la compare en fait à elle-même)))) Je dois d'une manière ou d'une autre convertir Sympol() en une valeur à laquelle toute autre variable peut être comparée. Par exemple :
AUDUSD ;
(Symbol() == AUDUSD)
J'y suis parvenu tant bien que mal, jusqu'à ce que je sois satisfait et que je modifie tout correctement - rien ne fonctionne ;))
Mon programme accède au graphique actuel, lui attribue le nom de l'instrument actuel et le scelle dans une variable, puis compare la valeur de cette variable au symbole actuel sur le graphique. Il la compare en fait à elle-même)))) Je dois d'une manière ou d'une autre convertir Sympol() en une valeur à laquelle toute autre variable peut être comparée. Par exemple :
AUDUSD ;
(Symbol() == AUDUSD)
Je l'ai fait d'une manière ou d'une autre, et pendant que je me réjouissais et que je changeais tout, rien ne fonctionnait plus ;))
Le conseiller expert, le script, l'indicateur ne s'appliquent pas, mais fonctionnent dans la fenêtre actuelle. Et les variables globales de différentes fenêtres / graphiques ne se chevauchent pas. Par conséquent, cela devrait fonctionner)
string AUDUSD ; // Il s'agit d'une variable texte, qui est initialement vide, c'est-à-dire égale à "".
(Symbol() == AUDUSD) // cette chaîne n'a rien à voir avec la variable AUDUSD.
Symbol
Возвращает имя символа текущего графика.
stringSymbol();
Возвращаемое значение
Значение системной переменной _Symbol, в которой хранится имя символа текущего графика.
Mais les critères d'ouverture des ordres ne doivent pas être les mêmes pour différents instruments/fenêtres. S'ils sont identiques, ils s'ouvriront effectivement dans toutes les fenêtres.
Je n'ai pas la moindre envie de chercher sur Google ou de lire, alors j'ai ouvert le fichier D:\1.txt.
Quelle est la meilleure façon de le faire dans l'indicateur, pour démarrer la minuterie 1s ou dans OnCalculate pour comparer le temps (secondes).
<1sec, sortie
ou il existe d'autres options de travail ?
nécessité de mettre à jour HistorySelect pour le mois + travailler avec des objets
ou dans le temps de comparaison OnCalculate (secondes)
<1sec, sortie
La seconde n'est pas suffisante. Le problème vient de la date : elle ne peut pas être inférieure à une seconde.
comparer au moins des millisecondes
Qu'est-ce qui est le mieux à faire dans l'indicateur, démarrer une minuterie de 1s ou dans OnCalculate pour comparer le temps (secondes) ?
il n'est pas important de savoir où le faire, la seule chose que OnCalculate est liée aux ticks - il n'y aura pas de tick et donc il n'y aura pas d'appel OnCalculate
vous devez mettre à jour HistorySelect depuis un mois + travailler avec des objets
HistorySelect est rapide, mais lorsque vous allez déplacer ou créer des objets, il peut y avoir des décalages, si les objets sont supérieurs à 1000 +.
et vous allez modifier ces objets toutes les secondes.
(entrez votre code et les pièges s'afficheront )))).
une seconde suffit pour moi et moins souvent jusqu'à ce que le tic-tac arrive
pour moi, afficher les transactions sur le graphique + le résultat de la transaction sur les barres, et quelques informations semi-statiques comme la tendance globale.
peut regarder le prix du changement de
ou le temps de la deuxième option
S'il te plaît, dis-moi !
Comment puis-je comparer le symbole graphique actuel avec celui dont j'ai besoin ?
J'ai besoin que le programme ouvre un ordre sur AUD/USD, il ouvre donc l'ordre (il fonctionne correctement). Cependant, le programme essaie d'ouvrir l'ordre sur d'autres graphiques ouverts(le robot fonctionne sur plusieurs paires de devises) et il renvoie une erreur de prix pour les autres paires de devises où le conseiller expert fonctionne. Je dois faire une comparaison et si Symbol() == est égal au symbole sur lequel l'ordre doit être ouvert, alors nous l'ouvrons et si non, nous sortons. Je n'ai trouvé nulle part comment définir le nom du symbole à partir du terminal et effectuer la comparaison.
S'il te plaît, dis-moi !
Comment puis-je comparer le symbole graphique actuel avec celui dont j'ai besoin ?
J'ai besoin que le programme ouvre un ordre sur AUD/USD, il ouvre donc l'ordre (il fonctionne correctement). Cependant, le programme essaie d'ouvrir l'ordre sur d'autres graphiques ouverts(le robot fonctionne sur plusieurs paires de devises) et il renvoie une erreur de prix pour les autres paires de devises où le conseiller expert fonctionne. Je dois faire une comparaison et si Symbol() == est égal au symbole sur lequel l'ordre doit être ouvert, alors nous l'ouvrons et si non, nous sortons. Je n'ai trouvé nulle part comment définir le nom du symbole à partir du terminal et faire une comparaison.
Il y a un exemple d'obtention des bons prix à la fin.
Merci, mais je n'ai pas besoin des bons prix. Les prix sont corrects. J'ai besoin que l'EA n'ouvre pas un ordre si la paire de devises sur laquelle l'ordre est ouvert n'est pas la même que le graphique ouvert actuel auquel le robot est attaché. Nous pourrions peut-être mettre en œuvre cette solution en ouvrant un nouveau graphique avec un horizon temporel, en y ouvrant un ordre souhaité, puis en fermant le graphique.
Non, ça ne marche pas comme ça.
Mon programme accède au graphique actuel, lui attribue le nom de l'instrument actuel et le scelle dans une variable, puis compare la valeur de cette variable au symbole actuel sur le graphique. Il la compare en fait à elle-même)))) Je dois d'une manière ou d'une autre convertir Sympol() en une valeur à laquelle toute autre variable peut être comparée. Par exemple :
AUDUSD ;
(Symbol() == AUDUSD)
J'ai réussi à le faire - pendant que je me réjouissais et que je changeais tout correctement - rien ne fonctionne plus ;))
Non, ça ne marche pas comme ça.
Mon programme accède au graphique actuel, lui attribue le nom de l'instrument actuel et le scelle dans une variable, puis compare la valeur de cette variable au symbole actuel sur le graphique. Il la compare en fait à elle-même)))) Je dois d'une manière ou d'une autre convertir Sympol() en une valeur à laquelle toute autre variable peut être comparée. Par exemple :
AUDUSD ;
(Symbol() == AUDUSD)
J'y suis parvenu tant bien que mal, jusqu'à ce que je sois satisfait et que je modifie tout correctement - rien ne fonctionne ;))
string AUDUSD = "AUDUSD" ;
Au moins comme ça.
Non, ça ne marche pas comme ça.
Mon programme accède au graphique actuel, lui attribue le nom de l'instrument actuel et le scelle dans une variable, puis compare la valeur de cette variable au symbole actuel sur le graphique. Il la compare en fait à elle-même)))) Je dois d'une manière ou d'une autre convertir Sympol() en une valeur à laquelle toute autre variable peut être comparée. Par exemple :
AUDUSD ;
(Symbol() == AUDUSD)
Je l'ai fait d'une manière ou d'une autre, et pendant que je me réjouissais et que je changeais tout, rien ne fonctionnait plus ;))
Le conseiller expert, le script, l'indicateur ne s'appliquent pas, mais fonctionnent dans la fenêtre actuelle. Et les variables globales de différentes fenêtres / graphiques ne se chevauchent pas. Par conséquent, cela devrait fonctionner)
string AUDUSD ; // Il s'agit d'une variable texte, qui est initialement vide, c'est-à-dire égale à "".
(Symbol() == AUDUSD) // cette chaîne n'a rien à voir avec la variable AUDUSD.
Mais les critères d'ouverture des ordres ne doivent pas être les mêmes pour différents instruments/fenêtres. S'ils sont identiques, ils s'ouvriront effectivement dans toutes les fenêtres.