[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
tara: Je mesure mon temps selon le temps moyen de Greenwich.
Mon heure est une heure de moins que celle du serveur et je vis toujours en Europe centrale. Et vous devriez avoir trois heures de plus si le serveur est GMT. Je vais me coucher. Passez une bonne nuit sans explosions !
GaryKa: 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.
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
MathCeil(MathAbs(MathLog(0.25)/MathLog(10))) = 1
La valeur du lot est donc arrondie à une décimale.
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
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).
L'archive contient deux indicateurs et le conseiller expert sur lequel je travaille (test-cifr), les indicateurs fonctionnent par eux-mêmes, mais je ne peux pas les coller dans le conseiller expert (le seul but du conseiller expert est de sortir des valeurs), s'il vous plaît aidez-moi à comprendre pourquoi ils ne sont pas et comment les coller.
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.