[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 - 5. - page 297
![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
Je mesure mon temps selon le temps moyen de Greenwich.
Je suis endormi maintenant. Bonne nuit.
Que dit-on en Catalogne ?
Pas du tout
Oui, c'est le rapport de deux logarithmes naturels. Regardez maintenant la formule de "Substitution de la base du logarithme". Donc le résultat est que cette expression
est équivalent au logarithme décimal pour bd_LOTSTEP. Dans MQL il n'y a pas de fonction séparée pour le logarithme décimal, donc cette conversion est utilisée.
C'est ce que je disais. Le code de ma langue... Je pense que soit le programmeur n'a pas peur des mathématiques, soit c'est une sorte de protection contre la lecture du code (je plaisante). Je ne sais pas, mon opinion personnelle est que les mathématiques simplifient l'algorithme tout comme switch...case au lieu de if.
Montrer SetVLine() ;
données erronées, s'il vous plaît indiquer où l'erreur est.
J'insère tout le code, sauf le "copyright"
extern int PeriodP=12 ;
extern int TimeFrame=0 ;
double P_up0,P_up1,FrApPrise ;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0) ;
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() xml-ph-0016@deepl.in
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
P_up0=iCustom(Symbol(),Period(), "Price channel",PeriodP,0,0)
P_up1=iCustom(Symbol(),Period(), "rezerv-xrust",FrApPrise,0,0) ;
{Comment("show price channel=",P_up0,"\n", "show xrust=",P_up1);}
//----
return(0) ;
}
utilise deux indicateurs
1)https ://www.mql5.com/fr/code/8908
Price channel.mq4
2)https://www.mql5.com/ru/code/8318
Fractal_Level_Xrust_V2.mq4
s'il vous plaît aider, pourquoi 1 montre et l'autre ne veut pas ?
C'est ce que je disais. Conditionnel ma langue... Je pense que soit le programmeur n'a pas peur des mathématiques, soit c'est une sorte de protection contre la lecture du code (je plaisante). Je ne sais pas, mon opinion personnelle est que les mathématiques simplifient l'algorithme tout comme switch...case au lieu de if.
Il y a une faille dans ce code. Ici, sorti de son contexte:
Le fait est que l'expression
La valeur du lot est donc arrondie à une décimale.
Mais lisez la suite, ça vous aidera peut-être.
Un petit complément à la description de ma question. J'ai refait l'indicateur de crunch, dont voici le code.
#property copyright "#Copyright © 2008, XrustSolution.#"
#property link "#xrust.ucoz.net#"
#property indicator_chart_window
extern int TimeFrame=0;//Si=0, alors l'actuelle.
extern string FrApNam="Ap";//nom de la ligne correspondant à la fractale ascendante.
extern string FrDnNam="Dn";//nom de la ligne correspondant à la Fractale vers le bas
//-----------------------------------------------------------------------------+
double FrPrise ;
double FrApPrise=0,FrDnPrise=0 ;
//+----------------------------------------------------------------------------+
void init(){
if(TimeFrame==0){TimeFrame=Period();}
IndicatorShortName("Factal_Level_Xrust "+TimeFrame) ;
FrApNam=StringConcatenate(FrApNam,TimeFrame) ;
FrDnNam=StringConcatenate(FrDnNam,TimeFrame) ;
retour;}
void deinit(){
ObjectDelete(FrDnNam) ;
ObjectDelete(FrApNam) ;
Commentaire (" ") ;
retour;}
//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted() ;
int limite ;
double tmp ;
int i, j, k ;
si(counted_bars<0) return(-1) ;
si(counted_bars>0) counted_bars-- ;
limit=Bars-counted_bars ;
//-----------------------------------------------------------------------------+
LineAp() ;
LineDn() ;
string FAP=DoubleToStr((FrApPrise),Digits) ;
string FDP=DoubleToStr((FrDnPrise),Digits) ;
int diap=MathRound((FrApPrise-FrDnPrise)/Point) ;
{Comment("TimeFrame="+TimeFrame+
"\nApPrise111 = "+FAP+
"\nDnPrise ="+FDP+
"\nCanal fractal ="
+diap+"Point");}
retour(0) ;
}
//-----------------------------------------------------------------------------+
// recherche une ligne horizontale par nom ; redessine si le prix a changé |
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise=NormaliserDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS)) ;
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS)) ;
//Commentaire(FrPrise) ;
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise ;
ObjectDelete(FrDnNam) ;
WindowRedraw() ;
retour;}
//-----------------------------------------------------------------------------+
// recherche une ligne horizontale par nom, redessine si le prix a changé |
//-----------------------------------------------------------------------------+
void LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS)) ;
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS)) ;
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise ;
ObjectDelete(FrApNam) ;
WindowRedraw() ;
retour;}
//-----------------------------------------------------------------------------+
//Kim Respect et respect ! !! |
//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 07.10.2006 |
//| Description : Recherche de la fractale la plus proche. Renvoie le niveau des prix. |
//+----------------------------------------------------------------------------+
//| Paramètres : |
//| sy - nom de l'instrument ("" ou NULL - symbole courant) |
//| tf - timeframe ( 0 - TF actuel) |
//| mode - type de fractale (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
si (sy=="" || sy=="0") sy=Symbole() ;
double f=0 ;
int d=MarketInfo(sy, MODE_DIGITS), s ;
if (d==0) if (StringFind(sy, "JPY"<0) d=4 ; else d=2 ;
for (s=2 ; s<100 ; s++) {
f=iFractals(sy, tf, mode, s) ;
si (f!=0) return(NormalizeDouble(f, d))
}
Print("FindNearFractal() : Fractal non trouvé") ;
retour(0) ;
}
Je n'ai pas besoin de lignes sur le graphique, j'ai juste besoin de deux chiffres (un pour chacun de ces indicateurs spirituels).
Un petit complément à la description de ma question. J'ai retravaillé l'indicateur crunch. Voici le code.
Si vous voulez obtenir une réponse, respectez les personnes qui lisent vos gribouillages.
Le code doit être inséré à l'aide du bouton SRC - il se trouve au-dessus du champ d'édition de votre message, parmi d'autres outils de mise en forme.