Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 22
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
О ! Merci. (gloussements) Je ne l'ai pas réalisé moi-même le matin... Il faut quand même faire une vérification pour le remplissage des tableaux. Dans Quatermass n'a pas rencontré, et dans Five assez souvent pas rempli les données la première fois en raison du manque de données historiques.
ZS. Vous devriez dormir davantage - vos pensées iront dans ce sens.
Eh bien, vous pouvez le mettre dans une boucle
ou même
pour copier exactement le montant demandé.
ps ; Pendant que j'allais verser le thé, j'ai eu une autre idée, pour utiliser CopyRates() et les structures de tableau MqlRates rates[] mais je suis trop paresseux pour réécrire quelque chose.
Eh bien, vous pourriez aussi le mettre dans une boucle
ou même
pour copier exactement le nombre de copies demandées.
ps ; Pendant que je buvais du thé, j'ai eu une autre idée - utiliser CopyRates() et un tableau de structures MqlRates rates[], mais je suis trop paresseux pour le réécrire.
Aidez-moi à vérifier les autres conditions de vente.
{
//+--------------------------------------------------------------------+
//| -= stop loss в без убыток =- |
//+--------------------------------------------------------------------+
bool result;
double stop;
int cmd,error;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderProfit()>pOPCS)
{
cmd=OrderType();
double blevel=OrderStopLoss()<Bid-Point*TS;
double slevel=OrderStopLoss()>Ask+Point*TS;
//---
if(cmd==OP_BUY || cmd==OP_SELL)
{
while(true)
{
if(cmd==OP_BUY && blevel) stop=Bid-Point*TS;
else stop=Ask+Point*TS;
result=OrderModify(OrderTicket(),OrderOpenPrice(),stop,0,0,Orange);
if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
else error=0;
if(error==135) RefreshRates();
else break;
}
}
}
}
C'est d'une logique étrange. Mais même si vous ne regardez pas l'étrange logique, alors :
Ici, vous avez deux conditions pour acheter, et tout le reste pour vendre.
else stop=Ask+Point*TS;
Votre logique est étrange. Mais même si vous ne regardez pas l'étrange logique, alors :
Ici, vous avez deux conditions vérifiées pour l'achat, et tout le reste pour la vente.
else stop=Ask+Point*TS;
J'ai essayé d'attacherslevel=OrderStopLoss()>Ask+Point*TS pour vendre;
Mais comme je ne connais rien à la programmation, rien d'utile n'en est sorti. J'ai fouillé les forums pendant une semaine.
Pourquoi cette logique bizarre ?) Le code n'est pas entièrement de moi.
J'ai essayé d'ajouterslevel=OrderStopLoss()>Ask+Point*TS;
J'ai fait le tour des forums pendant une semaine. Toutes mes tentatives se sont soldées par un déplacement du Sell Stop en même temps que le prix.
Pourquoi cette logique bizarre ?) Le code n'est pas entièrement de moi. Je l'ai retravaillé du mieux que j'ai pu.
Pourquoi n'écrivez-vous pas d'abord les conditions dans lesquelles les stops de vente et d'achat doivent être déplacés ?
Puis, après y avoir réfléchi, écrivez dans votre code ce qui est écrit sur le bordereau.
Et tout d'abord, écrivez sur une feuille de papier avec un crayon les conditions dans lesquelles vous devez déplacer le stop Buy et le stop Sell.
Puis, après y avoir réfléchi, écrivez dans le code ce qui est écrit sur la feuille de papier.
slevel=OrderStopLoss()>Ask+Point*TS; bien, il semble que ce soit le bon. Ou est-ce faux ? Je suis nouveau dans ce domaine.
Comprenez-vous seulement ce qui est écrit dans cette condition ? Il s'agit d'une affectation de zéro ou un à une variable de type double.
Que voulez-vous obtenir ?
Comprenez-vous seulement ce qui est écrit dans cette condition ? C'est une affectation de zéro ou un à une variable de type double.
Que voulez-vous atteindre ?
voilà ce que je relis.
Vérifier la condition - ne pas déplacer le SL d'avant en arrière, mais seulement dans une direction.
Par exemple, pour un ordre d'ACHETER, votre formule
OrderStopLoss()<bid-point*TrailingStop
En utilisant cet exemple, je l'ai fait pour Sel.
Voici ce que j'ai lu.
la condition de contrôle - ne pas déplacer SL d'avant en arrière, mais seulement dans une direction
Par exemple, pour un ordre d'ACHETER, votre formule
OrderStopLoss()<bid-point*TrailingStop
En utilisant cet exemple, je l'ai collé pour une position de vente.
Donc tu en as besoin comme ça :
en russe... si l'ordre stop est inférieur au cours acheteur moins la distance du stop suiveur, alors ... votre action
Et vous affectez à la variable le résultat de cette expression logique - c'est-à-dire soit zéro, soit un.
Donc tu as besoin de ça :
en russe... si l'ordre stop est inférieur au cours acheteur moins la distance du stop suiveur, alors ... vos actions
Et vous affectez à la variable le résultat de cette expression booléenne - c'est-à-dire soit zéro, soit un.
Je suis complètement perdue.
double blevel=OrderStopLoss()<Bid-Point*TS; fonctionne pour moi. SL ne s'attaque au prix que pour faire du profit.
double slevel=OrderStopLoss()>Ask+Point*TS; Je ne sais pas comment ajouter celui-ci à else
ils ne sont pas un bool.