[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 - 2. - page 288
Bonjour qui peut aider à résoudre un problème, peut-être que je fais quelque chose de mal,
J'ai un bloc Klima qui renvoie le drapeau de clôture de la dernière position au niveau du take profit et de même pour le stop,
//+----------------------------------------------------------------------------+//| Версия : 19.05.2008 |//| Описание : Возвращает флаг закрытия последней позиции по тейку. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
otp=NormalizeDouble(OrderTakeProfit(), dg);
if (ocp==otp) return(True);
}
return(False);
}
La première vérification (total==1) a lieu lorsque l'ordre est encore 1. À l'intérieur du bloc, vous trouvez la dernière vente fermée -> ouverte, le dernier achat fermé -> ouvert à nouveau. Cela fait 3 commandes.
La première vérification (total==1) a lieu lorsque l'ordre est encore 1. À l'intérieur du bloc, vous trouvez la dernière vente fermée -> ouverte, le dernier achat fermé -> ouvert à nouveau. Cela donne déjà lieu à 3 commandes.
Oui, mais comment faire pour qu'il n'y ait que 2 commandes, afin de ne pas ouvrir une commande sous le numéro 6,
Le moyen le plus simple est de vérifier la présence d'un ordre ouvert de type Achat ou Vente. Prenez ceci (les variables BuyOrders, SellOrders, TotalOrders sont des variables globales du programme ; elles doivent être déclarées dans la fonction start() comme int BuyOrders, SellOrders, TotalOrders ;) :
void OrdersRecount()
{
BuyOrders=0; SellOrders=0; TotalOrders=0;
if (OrdersTotal()>0)
{
for (int j = 0; j < OrdersTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagBuy)
{
if (OrderType() == OP_BUY) BuyOrders++;
if (OrderType() == OP_SELL) SellOrders++;
TotalOrders++;
}
}
}
}
}
Je vais vous aider, mais je ne comprends pas encore la logique de votre code :
Êtes-vous sûr que dans trois cas vous ouvrez une position de vente et dans un cas une position d'achat ? Ce n'est pas symétrique...
Je veux qu'il s'ouvre lorsqu'il n'y a pas de position sur le marché et que si l'une des valeurs est correcte, il ouvre un ordre et attende la fermeture de la position. J'ai essayé de le faire de cette façon mais rien ne fonctionne.
Je veux qu'il s'ouvre uniquement lorsqu'il n'y a pas de position sur le marché et que si l'une des valeurs choisies est correcte, il ouvre un ordre et attende la fermeture de la position.
Il s'avère donc que vous pouvez avoir 2 ordres d'achat et pas de vente ?
Т.е. получается что возможна ситуация когда у вас будет 2 ордера на покупку и не одного на продаж
Non au contraire, il ne devrait y avoir que 2 positions, y compris la vente sans arrêt et le suivi, l'énoncé montre comment cela se passe. tout est correct, mais une position supplémentaire sous le numéro 6 ouvre
FoxUA: Non vice versa, les positions devraient être juste 2 y compris la vente sans stops et keepers, la déclaration montre comment cela fonctionne. d'accord, mais une position supplémentaire s'ouvre sous le numéro 6
Décrivez en mots comment l'algorithme doit fonctionner et j'essaierai de vous aider pendant que j'y suis).
- 2 positions sont possibles en même temps ;
- Ouvrez d'abord 2 positions : acheter et vendre ;
- si la position longue est fermée par un stop loss -> ouvrir une position courte avec un SL et un TP triplés, on obtient deux positions de vente, une avec un SL et un TP réguliers, et une avec un TP triplé ;
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Bonjour qui peut aider à résoudre un problème, peut-être que je fais quelque chose de mal,
J'ai un bloc Klima qui renvoie le drapeau de clôture de la dernière position au niveau du take profit et de même pour le stop,
mais voici comment je l'utilise.
et au début tout se passe comme prévu et au lot 4 ouvre celui dont j'ai besoin et celui-ci
Je n'arrive pas à savoir à quoi ça sert.
pour plus de clarté
Je n'arrive pas à savoir à quoi ça sert.
C'est vrai,
La première vérification (total==1) a lieu lorsque l'ordre est encore 1. À l'intérieur du bloc, vous trouvez la dernière vente fermée -> ouverte, le dernier achat fermé -> ouvert à nouveau. Cela fait 3 commandes.
Oui, c'est ça,
La première vérification (total==1) a lieu lorsque l'ordre est encore 1. À l'intérieur du bloc, vous trouvez la dernière vente fermée -> ouverte, le dernier achat fermé -> ouvert à nouveau. Cela donne déjà lieu à 3 commandes.
Oui, mais comment faire pour qu'il n'y ait que 2 commandes, afin de ne pas ouvrir une commande sous le numéro 6,
Le moyen le plus simple est de vérifier la présence d'un ordre ouvert de type Achat ou Vente. Prenez ceci (les variables BuyOrders, SellOrders, TotalOrders sont des variables globales du programme ; elles doivent être déclarées dans la fonction start() comme int BuyOrders, SellOrders, TotalOrders ;) :
Il existe de nombreuses possibilités, la plus simple étant de vérifier si un ordre d'achat ou de vente est ouvert. Prends celui-là :
Je ne comprends pas comment l'utiliser, aidez-moi s'il vous plaît.
Je ne comprends pas comment l'utiliser, alors aidez-moi si vous le pouvez.
Êtes-vous sûr qu'il ouvre l'achat dans trois caisses et la vente dans une seule ? Ce n'est pas symétrique...Je le ferai, mais je ne comprends toujours pas la logique de votre code :
Êtes-vous sûr que dans trois cas vous ouvrez une position de vente et dans un cas une position d'achat ? Ce n'est pas symétrique...Je vais vous aider, mais je ne comprends pas encore la logique de votre code :
Je veux qu'il s'ouvre lorsqu'il n'y a pas de position sur le marché et que si l'une des valeurs est correcte, il ouvre un ordre et attende la fermeture de la position. J'ai essayé de le faire de cette façon mais rien ne fonctionne.
Je veux qu'il s'ouvre uniquement lorsqu'il n'y a pas de position sur le marché et que si l'une des valeurs choisies est correcte, il ouvre un ordre et attende la fermeture de la position.
Il s'avère donc que vous pouvez avoir 2 ordres d'achat et pas de vente ?
Figar0:
Т.е. получается что возможна ситуация когда у вас будет 2 ордера на покупку и не одного на продаж
Non vice versa, les positions devraient être juste 2 y compris la vente sans stops et keepers, la déclaration montre comment cela fonctionne. d'accord, mais une position supplémentaire s'ouvre sous le numéro 6
Décrivez en mots comment l'algorithme doit fonctionner et j'essaierai de vous aider pendant que j'y suis).
- 2 positions sont possibles en même temps ;
- Ouvrez d'abord 2 positions : acheter et vendre ;
- si la position longue est fermée par un stop loss -> ouvrir une position courte avec un SL et un TP triplés, on obtient deux positions de vente, une avec un SL et un TP réguliers, et une avec un TP triplé ;
Suivant ?