Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
La condition est ignorée pour une raison quelconque. Même si j'ai défini une ouverture de poste.
La variable PRL ne peut pas être arrachée et placée dans une condition.
PRL, vous avez Low à l'offset 1
PRL = iLow(NULL, PERIOD_CURRENT, 1);
PRH, c'est un High à l'offset 1
PRH = iHigh(NULL, PERIOD_CURRENT, 1);
Nous obtenons l'image suivante :
voidOnTick() {
double o1 = iOpen(NULL, PERIOD_CURRENT, 1);
double h1 = iHigh(NULL, PERIOD_CURRENT, 1);
double l1 = iLow(NULL, PERIOD_CURRENT, 1);double c1 = iClose(NULL, PERIOD_CURRENT, 1);
double c0 = iClose(NULL, PERIOD_CURRENT, 0);
double rt = 0;
double rs1 = 0;
double rs2 = 0;
double PRH;
double PRL;
rt=MathAbs(c1 - o1) / Point(); //размер тела свечи
rs1=MathAbs(h1 - c1) / Point();// размер верхней тени свечи
rs2=MathAbs(l1 - c1) / Point();// размер нижней тени свечиif ((rs1 >= rt) && (c1 > o1)) //условия для растущих свечей
{
PRH = iHigh(NULL, PERIOD_CURRENT, 1);// то это будет максимум
hLine.Price(0, PRH);
}
if ((rs2 >= rt) && (c1 < o1)) //условия для падающих свечей
{
PRL = iLow(NULL, PERIOD_CURRENT, 1);
lLine.Price(0, PRL);
}
}
Par conséquent, au lieu dePRL, vous pouvez prendre iLow(NULL, PERIOD_CURRENT, 1) ou l1.
J'ai l'impression que l'écriture de code ne vous intéresse pas et que vous ne comprenez pas ce que vous faites. Un peu de patience et vous pourrez facilement comprendre tout cela. Nettoyez votre code et de nombreuses questions disparaîtront d'elles-mêmes. Si vous ne parvenez pas à comprendre ce qui n'a pas fonctionné, il y a aussi le débogage, qui est un outil très puissant pour un programmeur. Allez jusqu'au bout de ce que vous faites et posez ensuite des questions.
Comment, dans le testeur, un 4108 (ticket invalide) peut-il se produire lors d'une modification ? MQL4
il est fort probable que vous essayez de clôturer un ordre qui figure déjà dans l'historique, c'est-à-dire un ordre déjà clôturé.
consultez le fichier d'aide SELECT_BY_TICKET, il effectue cette opération indépendamment du fait que l'ordre soit déjà ouvert ou dans l'historique des ordres.
SZZY : faire une vérification pour OrderCloseTime()
vous essayez très probablement de clôturer un ordre qui figure déjà dans l'historique, c'est-à-dire un ordre déjà clôturé.
Consultez le fichier d'aide SELECT_BY_TICKET. Il effectue cette opération indépendamment du fait que l'ordre soit déjà ouvert ou dans l'historique des ordres.
To find out from what list the order has been selected, its close time must be analyzed. If the order close time equals to 0, the order is open or pending and taken from the terminal open orders list. One can distinguish an opened order from a pending order by the order type. If the order close time does not equal to 0, the order is a closed...
Je ne pensais pas avoir à vous citer pour la documentation...
Note
Le paramètre pool est ignoré si la commande est sélectionnée à l'aide du numéro de ticket. Le numéro de billet est l'identifiant unique de la commande.
Pour déterminer dans quelle liste un ordre est sélectionné, nous devons analyser son heure de clôture. Si l'heure de clôture de l'ordre est 0, alors l'ordre est ouvert ou en attente et est pris dans la liste des ordres ouverts du terminal.
Par ici ? Ou dois-je déclarer quelque chose d'autre dans OnInit ?
Non,toutes les lignes de OnInitsont cachées par défaut:
Non,toutes les lignes sont cachées par défaut dansOnInit:
La condition est ignorée pour une raison quelconque. Même si j'ai défini une ouverture de poste.
La variable PRL ne peut pas être retirée et placée dans une condition.
J'essaie de l'extraire d'une manière ou d'une autre avec GlobalVariableGet . Mais d'une manière ou d'une autre, c'est douteux...
Même quand je le mets à l'intérieur de la condition. Le prix minimum est déjà fixé. Mais il refuse toujours obstinément d'ouvrir la position.
La condition est ignorée pour une raison quelconque. Même si j'ai défini une ouverture de poste.
La variable PRL ne peut pas être arrachée et placée dans une condition.
Nous obtenons l'image suivante :
Par conséquent, au lieu dePRL, vous pouvez prendre iLow(NULL, PERIOD_CURRENT, 1) ou l1.
J'ai l'impression que l'écriture de code ne vous intéresse pas et que vous ne comprenez pas ce que vous faites. Un peu de patience et vous pourrez facilement comprendre tout cela. Nettoyez votre code et de nombreuses questions disparaîtront d'elles-mêmes. Si vous ne parvenez pas à comprendre ce qui n'a pas fonctionné, il y a aussi le débogage, qui est un outil très puissant pour un programmeur. Allez jusqu'au bout de ce que vous faites et posez ensuite des questions.
La condition est ignorée pour une raison quelconque. Même si j'ai défini une ouverture de poste.
La PRL variable ne peut pas être arrachée et mise dans une condition.
J'essaie de l'extraire d'une manière ou d'une autre avec GlobalVariableGet . Mais d'une manière ou d'une autre, c'est douteux...
Même quand je le mets à l'intérieur de la condition. Le prix minimum est déjà fixé. Je ne veux toujours pas ouvrir une position.
Alors, pourquoi dois-je d'abord écrire un message et ensuite le modifier ?
La condition est ignorée pour une raison quelconque. Même si j'ai défini une ouverture de poste.
La PRL variable ne peut pas être arrachée et placée dans une condition.
J'essaie de l'extraire d'une manière ou d'une autre avec GlobalVariableGet . Mais d'une manière ou d'une autre, c'est douteux...
Même quand je le mets à l'intérieur de la condition. Le prix minimum est déjà fixé. Je ne veux toujours pas ouvrir une position.
L'algorithme de votre code était initialement faux, ainsi que l'algorithme d'entrée sur le marché. Je l'ai corrigé.
Mais ce code aura besoin de beaucoup de révisions pour pouvoir l'utiliser dans le trading réel...
Dans votre code, l'algorithme lui-même était initialement faux, ainsi que l'algorithme d'entrée sur le marché. Corrigé.
Mais pour utiliser ce code dans le trading réel, vous aurez besoin de beaucoup de révisions...
Comment, dans le testeur, un 4108 (ticket invalide) peut-il se produire lors d'une modification ? MQL4
Comment, dans le testeur, un 4108 (ticket invalide) peut-il se produire lors d'une modification ? MQL4
il est fort probable que vous essayez de clôturer un ordre qui figure déjà dans l'historique, c'est-à-dire un ordre déjà clôturé.
consultez le fichier d'aide SELECT_BY_TICKET, il effectue cette opération indépendamment du fait que l'ordre soit déjà ouvert ou dans l'historique des ordres.
SZZY : faire une vérification pour OrderCloseTime()
vous essayez très probablement de clôturer un ordre qui figure déjà dans l'historique, c'est-à-dire un ordre déjà clôturé.
Consultez le fichier d'aide SELECT_BY_TICKET. Il effectue cette opération indépendamment du fait que l'ordre soit déjà ouvert ou dans l'historique des ordres.
SZY : vérifier OrderCloseTime()
Je pense qu'il est dit que sélectionner dans le marché
Je pense que ça dit de choisir celui qui est sur le marché.
Je ne pensais pas avoir à vous citer pour la documentation...
Note
Le paramètre pool est ignoré si la commande est sélectionnée à l'aide du numéro de ticket. Le numéro de billet est l'identifiant unique de la commande.
Pour déterminer dans quelle liste un ordre est sélectionné, nous devons analyser son heure de clôture. Si l'heure de clôture de l'ordre est 0, alors l'ordre est ouvert ou en attente et est pris dans la liste des ordres ouverts du terminal.