Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1154

 
KhuKhu:

Bonjour les amis.

Comment faire pour que les valeurs de stop loss, tekprofit et trailing soient affichées en pourcentage au lieu de pips.

Cette formule est trop encombrée et ne fonctionne pas du tout.

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits) ;

Je voudrais avoir la forme la plus simple de pourcentage.

Double Stoploss = 0.05 ;

--------

Profit=Enchère-Perte en pourcentages(c'est un exemple désordonné, mais juste pour la clarté).

Merci.

Un exemple bâclé conduit à une réponse bâclée. Pour le comprendre, il faut savoir à partir de quoi le pourcentage est mesuré.

 
Андрей Касторский:
.. Celui qui a besoin aide à la rédaction d'une EE, vous pouvez m'envoyer un courriel. Je vais aider

aider à prendre le prix de la barre de zéro, voici la discussion

https://www.mql5.com/ru/forum/160683/page237#comment_5350688

 
Alexey Viktorov:

Un exemple peu convaincant donne lieu à une réponse peu convaincante. Pour comprendre, il faut comprendre par rapport à quoi les pourcentages sont mesurés.

Je l'ai.

Je vais essayer d'être plus clair.

Mon code est initialement écrit de la manière suivante :

extern double StopLoss =0 ;

extern double TakeProfit =0 ;

extern double SL_PERCENT = 0.02 ;

extern double TP_PERCENT = 0.03 ;

extern double TRALL_PERCENT = 0.01 ;

extern double Lots =0.5 ;


Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,NormalizeDouble(OrderOpenPrice+(OrderOpenPrice + StopLoss)/100*SL_PERCENT,Digits),NormalizeDouble(OrderOpenPrice-(OrderOpenPrice - TakeProfit)/100*TP_PERCENT,Digits),",Magic,0,Red) ;

Le StopLoss est déclenché mais pas de 0,02% mais de 0,43%, ce qui est incorrect. Je ne sais pas ce qu'il en est de TakeProfit, car je ne l'ai jamais essayé auparavant, mais il semble qu'il soit également incorrect.

J'ai quelques suggestions que le code n'est pas correct.

Encore une chose, peut-être que c'est important. Mes commandes sont ouvertes pour tous mes dépo pour 3-4 paires. Parfois par cinq.


Je souhaite également modifier des paramètres tels que StopLoss, Takeprofit, TrailingStop en pourcentage et non en points.

Par exemple,

1) Takeprofit=OrderOnProfit+%TP_PERCENT

2) Stoploss=OrderOnPrice-%SL_PERCENT

I.e.

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,%,%,",Magic,0,clrGreen);


Je ne sais pas comment le modifier davantage à des fins de suivi.

J'ai pris un échantillon du tutoriel, mais je fais manifestement quelque chose de mal.

3.) TrailingStop=Bid-%TRALL_PERCENT

cas 0 : // Ordre d'achat

si (NormalizeDouble(OrderOpenPrice-SL*Point,Digits)*SL_PERCENT/100<=(OrderOpenPrice-Ask) // Si en dessous de

NormalizeDouble(Bid-(Bid-TS)/100*TRAL_PERCENT,Digits)

|| NormalizeDouble(SL,Digits)==0)

{

SL=Bid-TS*Point ; //puis le modifier

string Text="Buy " ; // Texte pour Buy

Modify=true ; // assigné à modifier.

}


J'espère vraiment que j'ai pu vous expliquer.

Merci.

 

Comment implémenter correctement l'ouverture d'une transaction (OrderSend) strictement au début de la bougie - OnTimer et/ou OnTick,

Afin de ne pas surcharger le terminal (20-30 graphiques ouverts et suivis simultanément) ?

découvert que le retard dans l'apparition d'un nouveau tick au début d'un chandelier peut aller jusqu'à 5-10 secondes ; l'écart avec le tick précédent est significatif (négatif pour les conditions de transaction)

p.s. en même temps dans le Conseiller Expert il est supposé notifier une possible transaction 1-2 minutes avant l'ouverture de la transaction, c'est à dire avant le début de l'ouverture d'une bougie.

 
maxsoft:

Comment implémenter correctement l'ouverture d'une transaction (OrderSend) strictement au début de la bougie - OnTimer et/ou OnTick,

afin de ne pas surcharger le terminal (20-30 graphiques ouverts et suivis simultanément) ?

Il a été constaté que le retard dans l'apparition d'un nouveau tick au début d'une bougie peut aller jusqu'à 5-10 secondes avec un écart important par rapport au tick précédent (il est négatif pour les conditions de transaction).

p.s. dans ce cas, le Conseiller Expert est supposé informer de manière préliminaire d'une possible transaction 1-2 minutes avant l'ouverture de la transaction, c'est-à-dire avant le début de l'ouverture d'une bougie.

Vous devez afficher tous les graphiques ouverts dans la minuterie pour voir si une nouvelle barre apparaît.

Vous devez créer un tableau de pointeurs vers des instances de classes - une classe pour chaque période de temps de chaque graphique ouvert.

La classe qui surveillera l'ouverture d'un nouveau bar se trouve dans cet article.

Ouvrez le graphique - ajoutez-le au tableau des graphiques ouverts. Fermez le graphique - supprimez-le du tableau.

Dans la boucle de la minuterie, vous passez par un tableau de pointeurs vers des instances de classes et vérifiez le fait de l'ouverture d'une nouvelle barre, que la classe renverra en cas de formation d'une nouvelle barre.

 
Artyom Trishkin:

Vous devez afficher tous les graphiques ouverts dans la minuterie pour voir si une nouvelle barre apparaît.

Vous devez créer un tableau de pointeurs vers des instances de classe ...

Et si vous utilisiez MQL4 ?

Et que faire avec - "...il est censé envoyer une notification préliminaire sur une transaction possible 1 à 2 minutes avant l'ouverture de la transaction, c'est-à-dire avant l'ouverture d'une bougie...", c'est-à-dire à l'intérieur d'une barre.

 

Bienvenue sur le site https://www.mql5.com/ru/forum/208120#comment_5412193

Je ne trouve pas de consensus.

Играем в блиц ЧТО? ГДЕ? КОГДА? 3 вопроса по 20 секунд
Играем в блиц ЧТО? ГДЕ? КОГДА? 3 вопроса по 20 секунд
  • 2017.07.07
  • www.mql5.com
Народ, подскажите пожалуйста, заморочился я тут по поводу AccountBalance() и AccountLeverage(). 1...
 

Avant d'afficher le type de doublon, je le normalise à 2 décimales, mais parfois cela ne fonctionne pas. Pourquoi ? Voici une partie du code.

prof[num]=(string)NormalizeDouble((double)prof[num]+(double)profit2,2);

Le type prof[] est une chaîne de caractères

Et le problème se présente de la manière suivante


 
Vladimir Tkach:

Avant d'afficher le type de doublon, je le normalise à 2 décimales, mais parfois cela ne fonctionne pas. Pourquoi ? Voici une partie du code.

Le type prof[] est une chaîne de caractères

Le problème se présente de la manière suivante


DoubleToString()

DoubleToString

Convertit une valeur numérique en une chaîne de texte.

stringDoubleToString(
valeur double,//nombre
intdigits=8//nombre de décimales
) ;

Paramètres

valeur

[in] La valeur est une valeur à virgule flottante.

chiffres

[in] Le format de la précision. Si la valeur des chiffres est comprise entre 0 et 16, alors la représentation en chaîne du nombre sera obtenue, avec le nombre de décimales spécifié. Si la valeur des chiffres est comprise entre -1 et -16, on obtient une représentation en chaîne du nombre au format scientifique avec le nombre de décimales spécifié. Dans tous les autres cas, la représentation en chaîne du nombre aura 8 décimales.

Valeur retournée

Une chaîne contenant la représentation en caractères du nombre dans le format de précision spécifié.

Exemple :

Print("DoubleToString(120.0+M_PI) : ",DoubleToString(120.0+M_PI);
Print("DoubleToString(120.0+M_PI,16) : ",DoubleToString(120.0+M_PI,16);
Print("DoubleToString(120.0+M_PI,-16) : ",DoubleToString(120.0+M_PI,-16);
Print("DoubleToString(120.0+M_PI,-1) : ",DoubleToString(120.0+M_PI,-1));
Print("DoubleToString(120.0+M_PI,-20) : ",DoubleToString(120.0+M_PI,-20);

 

Un insecte merveilleux ou autre.

Nous ajoutons les entrées :

input datetime test                                =0;

Compilez. Avec la date 1970.01.01 zéro, il n'est pas possible de régler l'heure sur 00, 01 ou 02 dans les réglages.