[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 !
 

Je suis endormi maintenant. Bonne nuit.

Que dit-on en Catalogne ?

 
Buenas noches ! Pero ahora ya es madrugada ! Mais il est tard dans la nuit !
 
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.
 
rigonich:

Montrer SetVLine() ;
 
Bonjour, j'ai essayé de comprendre comment insérer des indicateurs personnalisés dans EA. Compilé bien, mais écrit absolument

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 ?
 
gyfto:

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.


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).

 
palomnik:

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.

 
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.
Dossiers :