J'ai du mal avec une question, dites-moi comment la résoudre.
L'idée est la suivante : je trace une ligne au niveau du maximum précédent de la bougie. Je veux que la ligne soit décalée en fonction du maximum précédent.
Qui m'empêche de modifier le prix de la ligne sur les ticks lorsque j'en ai besoin ?
Pouvez-vous m'expliquer comment MT5 peut connaître à partir de l'historique le prix et l'heure de la première transaction lors de l'ouverture d'une position et le prix et l'heure de la première transaction lors de la fermeture de cette position ? L'objectif est d'obtenir un tableau de points d'entrée à partir de l'historique, car il m'arrive d'utiliser l'équité lorsque je trade manuellement, et je veux donc comprendre si cela est efficace ou non. Je ne connais rien aux opérations de trading, j'utilise une classe, où ces fonctions n'ont pas été implémentées :(
void OnTick()
{
//---
double o1 = iOpen(Symbol(),Period(),1);
double h1 = iHigh(Symbol(),Period(),1);
double l1 = iLow(Symbol(),Period(),1);
double c1 = iClose(Symbol(),Period(),1);
double c0 = iClose(Symbol(),Period(),0);
double rt = 0;
double rs1 = 0;
double rs2 = 0;
rt=MathAbs(c1-o1)/_Point; //размер тела свечи
rs1=MathAbs(h1-c1)/_Point;// размер верхней тени свечи
rs2=MathAbs(l1-c1)/_Point; // размер нижней тени свечи
ObjectDelete(0,"HL");
if ((rs1>=rt)&&(c1>o1)) //[для ростовых свечей] условие для построения уровней (если верхняя тень предыдущей свечи, больше, или равна телу этой же свечи, то...
{
double PRH=iHigh(Symbol(),_Period,1); // то это будет максимум
ObjectCreate(0,"HL",OBJ_HLINE,0,_Period,PRH); // и строим по этому максимуму, горизонтальную линию
}
ObjectDelete(0,"lL");
if ((rs2>=rt)&&(c1<o1)) // [для падающих свечей]условие для построения уровней (если нижняя тень предыдущей свечи, больше, или равна телу этой же свечи, то...
{
double PRL=iLow(Symbol(),_Period,1); // то это будет минимум
ObjectCreate(0,"lL",OBJ_HLINE,0,_Period,PRL); // и строим по этому минимум, горизонтальную линию
}
}
J'ai envisagé l'option 1, quelque chose de proche. Mais ce qui n'est pas correct se produit d'une manière ou d'une autre. Au début, les étapes se déroulent comme prévu, puis c'est la débandade.
Eh bien, en quelque sorte, oui. Si vous ajoutez des conditions juste un peu, il y a un problème. Il dessine une ligne. Ce qu'il lui faut, c'est : s'il n'y a pas de nouveau haut/bas, il est sauvegardé.
Eh bien, en quelque sorte, oui. Si vous ajoutez des conditions juste un peu, il y a un problème. Il dessine une ligne. Ce qu'il lui faut, c'est : s'il n'y a pas de nouveau haut/bas, il est sauvegardé.
Je ne sais pas, qui t'empêche d'ajouter une autre ligne pour Low... ?
Aleksey Vyazmikin: Veuillez m'indiquer comment obtenir le prix et l'heure de la première transaction lors de l'ouverture d'une position et le prix et l'heure de la première transaction pour fermer cette position à partir de l'historique. Mon objectif est d'obtenir un tableau de points d'entrée à partir de l'historique, car il m'arrive d'utiliser l'équité lorsque je trade manuellement, et je veux donc savoir si cela est efficace ou non. Je ne connais rien aux opérations de trading, j'utilise une classe, où ces fonctions n'ont pas été implémentées :(
Prenez des transactions, vérifiez la propriétéDEAL_ENTRY_IN ou DEAL_ENTRY_OUT pour entrer ou sortir du marché et prenez le prix et l'heure de cette transaction.
Prenez les commandes. Avec l'indice 0, il s'agit d'une entrée sur le marché, respectivement OrdersTotal()-1 d'une sortie du marché.
Le mieux est de prendre les deux. Le fait est que si la position est ouverte avec un slippage, le prix de la transaction ≠ le prix de l'ordre. En conséquence, prenez ce dont vous avez besoin.
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
Oui ! Il fonctionne comme il se doit ! Merci Mihail !
Et si la ligne de fond est poinçonnée et que vous devez la supprimer quand elle est poinçonnée, comme :
N'est-ce pas ?
Le programme n'utilise que deux lignes pour mettre en évidence les niveaux. Pourquoi le supprimer et le recréer si vous pouvez simplement le mettre à 0... ?
lLine.Price(0, 0.0);
La ligne ne sera pas visible sur le graphique... Et ensuite vous pouvez le montrer à nouveau :
Le programme n'utilise que deux lignes pour mettre en évidence les niveaux. Pourquoi supprimer et recréer alors que vous pouvez simplement le mettre à 0... ?
La ligne ne sera pas visible sur le graphique... Et ensuite vous pouvez le montrer à nouveau :
Comme ça ? Ou est-il nécessaire de déclarer quelque chose d'autre dans OnInit ?
Bonjour !
J'ai du mal avec une question, dites-moi comment la résoudre.
L'idée est la suivante : je trace une ligne au niveau du maximum précédent de la bougie. Je veux que la ligne soit décalée en fonction du maximum précédent.
Qui m'empêche de modifier le prix de la ligne sur les ticks lorsque j'en ai besoin ?
Il existe 2 options
Salut homonyme !)
void OnTick() { //--- double o1 = iOpen(Symbol(),Period(),1); double h1 = iHigh(Symbol(),Period(),1); double l1 = iLow(Symbol(),Period(),1); double c1 = iClose(Symbol(),Period(),1); double c0 = iClose(Symbol(),Period(),0); double rt = 0; double rs1 = 0; double rs2 = 0; rt=MathAbs(c1-o1)/_Point; //размер тела свечи rs1=MathAbs(h1-c1)/_Point;// размер верхней тени свечи rs2=MathAbs(l1-c1)/_Point; // размер нижней тени свечи ObjectDelete(0,"HL"); if ((rs1>=rt)&&(c1>o1)) //[для ростовых свечей] условие для построения уровней (если верхняя тень предыдущей свечи, больше, или равна телу этой же свечи, то... { double PRH=iHigh(Symbol(),_Period,1); // то это будет максимум ObjectCreate(0,"HL",OBJ_HLINE,0,_Period,PRH); // и строим по этому максимуму, горизонтальную линию } ObjectDelete(0,"lL"); if ((rs2>=rt)&&(c1<o1)) // [для падающих свечей]условие для построения уровней (если нижняя тень предыдущей свечи, больше, или равна телу этой же свечи, то... { double PRL=iLow(Symbol(),_Period,1); // то это будет минимум ObjectCreate(0,"lL",OBJ_HLINE,0,_Period,PRL); // и строим по этому минимум, горизонтальную линию } }J'ai envisagé l'option 1, quelque chose de proche. Mais ce qui n'est pas correct se produit d'une manière ou d'une autre. Au début, les étapes se déroulent comme prévu, puis c'est la débandade.
Et qui vous empêche de modifier simplement le prix de la ligne sur les ticks lorsque vous en avez besoin ?
Eh bien, en quelque sorte, oui. Si vous ajoutez des conditions juste un peu, il y a un problème. Il dessine une ligne. Ce qu'il lui faut, c'est : s'il n'y a pas de nouveau haut/bas, il est sauvegardé.
Eh bien, en quelque sorte, oui. Si vous ajoutez des conditions juste un peu, il y a un problème. Il dessine une ligne. Ce qu'il lui faut, c'est : s'il n'y a pas de nouveau haut/bas, il est sauvegardé.
Je ne sais pas, qui t'empêche d'ajouter une autre ligne pour Low... ?
Vous pouvez ajouter toute une série de lignes ou d'autres objets et marquer chaque bas et haut avec. Quel est le problème... ?
Veuillez m'indiquer comment obtenir le prix et l'heure de la première transaction lors de l'ouverture d'une position et le prix et l'heure de la première transaction pour fermer cette position à partir de l'historique. Mon objectif est d'obtenir un tableau de points d'entrée à partir de l'historique, car il m'arrive d'utiliser l'équité lorsque je trade manuellement, et je veux donc savoir si cela est efficace ou non. Je ne connais rien aux opérations de trading, j'utilise une classe, où ces fonctions n'ont pas été implémentées :(
HistorySelectByPosition vous aidera à
Il existe alors plusieurs options :
Je ne sais pas, qui t'empêche d'ajouter une autre ligne pour Low... ?
Vous pouvez ajouter toute une série de lignes ou d'autres objets et marquer chaque bas et haut avec eux. Quel est le problème... ?
Oui ! Il fonctionne correctement ! Merci Mihail !
Et si vous avez percé la ligne de fond et que vous devez la supprimer après le perçage, comme :
N'est-ce pas ?
Oui ! Il fonctionne comme il se doit ! Merci Mihail !
Et si la ligne de fond est poinçonnée et que vous devez la supprimer quand elle est poinçonnée, comme :
N'est-ce pas ?
Le programme n'utilise que deux lignes pour mettre en évidence les niveaux. Pourquoi le supprimer et le recréer si vous pouvez simplement le mettre à 0... ?
La ligne ne sera pas visible sur le graphique... Et ensuite vous pouvez le montrer à nouveau :
lLine.Price(0, PRL);Le programme n'utilise que deux lignes pour mettre en évidence les niveaux. Pourquoi supprimer et recréer alors que vous pouvez simplement le mettre à 0... ?
La ligne ne sera pas visible sur le graphique... Et ensuite vous pouvez le montrer à nouveau :
Comme ça ? Ou est-il nécessaire de déclarer quelque chose d'autre dans OnInit ?