[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 38

 
ikatsko >> :

Ne laissez (pour simplifier) que ce qui constitue le problème dans le code. Mettez l'indicateur et voyez le problème, pour ainsi dire.




Si je ne me trompe pas, la fonction init n'est appelée qu'une seule fois lorsque vous raccrochez sur un graphique. Il serait logique de forcer la réinitialisation lorsque tf change - pour éviter des "choses étranges" avec le travail du gestionnaire de mémoire.

if( CurrentPeriod!=Period())
{
    ReInitParam();
    CurrentPeriod=Period();
}

>> Bonne chance.

 
ikatsko писал(а) >>

Ne laissez (pour simplifier) que ce qui constitue le problème dans le code. Nous mettons l'indicateur et voyons le problème, pour ainsi dire.



//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
//...........................................................
Set_SL[Histoire*Profondeur]=1.0*Niveau*Point ;
Alert("Init :"," Set_SL[",History*Depth,"]=",Set_SL[History*Depth]);//suspendu pour voir : il affiche (disons) 0,0001
//--------------------------------------------------------------------//----
retour(0) ;
}

Vous ne devez pas faire référence aux tableaux à partir de init(). Le plus probable est que les tableaux n'ont pas encore été initialisés. Il est logique de déplacer la partie problématique vers start().

 
Vinin >> :

Il suffit de vérifier la dernière transaction clôturée. Mais vous devez prévoir le cas où il n'y a pas encore d'histoire.

Quelle fonction pouvez-vous utiliser pour ce faire ?

 
xruss писал(а) >>

Quelle fonction peut être utilisée pour ce faire ?

Vous devez écrire une fonction ou en chercher une toute prête.

 
VladislavVG >> :

Si je ne me trompe pas, la fonction init n'est appelée qu'une seule fois, lorsque vous raccrochez sur un graphique. Il serait logique de forcer la réinitialisation lorsque vous changez le t\f - pour éviter des "choses étranges" avec le fonctionnement du gestionnaire de mémoire.


Bonne chance.

Du tutoriel :

Fonction spéciale init().
Dans les indicateurs personnalisés, la fonction spéciale init() est appelée (et exécutée) immédiatement après le démarrage du terminal client, après le changement d'un symbole et/ou d'une période graphique, après la recompilation du programme dans MetaEditor et après le changement des paramètres d'entrée de la fenêtre de réglage de l'indicateur personnalisé.

 
ikatsko >> :

Du manuel :

Fonction spéciale init().
Dans les indicateurs personnalisés, la fonction spéciale init() est appelée (et exécutée) immédiatement après le démarrage du terminal client, après le changement de symbole et/ou de période du graphique, après la recompilation du programme dans MetaEditor et après le changement des paramètres d'entrée de la fenêtre de configuration de l'indicateur personnalisé.

Cela prend cinq minutes tout au plus - déclarer une fonction et la transférer là depuis l'affectation init et l'appeler comme je vous l'ai écrit.

Bonne chance.

SZ la valeur int maximale que votre fonction vous donne est très probablement EMPTY_VALUE.

Oui, encore une chose : la variable CurrentPeriod doit être déclarée comme une variable statique ou globale pour le fichier. J'attribue généralement une valeur de -1 à ces variables.

 
Comment puis-je me référer à la barre précédente (déjà formée) ?
 
RocketTrend >> :
Comment se référer à la barre précédente (déjà formée) ?

Close[1]/Open[1]/High[1]/Low[1]/.... En fonction de la valeur nécessaire.

 
VladislavVG >> :

Close[1]/Open[1]/High[1]/Low[1]/.... En fonction de la valeur requise.

Merci.

 
VladislavVG >> :

Close[1]/Open[1]/High[1]/Low[1]/.... En fonction de la valeur requise.

Merci.