Discussion de l'article "Comment publier un produit sur le Marché" - page 46

 
Evgenii Sidorov:

#propriété indicator_separate_window

#propriété indicator_chart_window

et comment spécifier 2 affichages différents pour des tampons différents ?

ObjectCreate peut vous aider. Dessiner avec des objets.

 
Artyom Trishkin:

Vous ne vérifiez pas le FreezeLevel - si le prix est trop proche, par exemple, du niveau StopLoss, le StopLoss ne peut pas être modifié. La distance de gel est simplement déterminée par le niveau FreezeLevel.

Ce n'est pas le stop qui est modifié ici, c'est l'opération qui est clôturée, ou est-ce que je me trompe ?

 
Vladimir Khlystov:

Ce n'est pas l'arrêt qui est modifié, mais l'opération qui est clôturée, ou est-ce que je me trompe ?

Si les opérations sont gelées, vous ne pouvez pas les clôturer.
 

Hé, les gars !

J'espère que tout va bien.

Je viens de créer un EA, quelle est la meilleure façon de le licencier pour le marché mql ? Je veux soumettre cet EA pour le vendre sur le marché mais je ne veux pas ajouter le mauvais type de licence si ce n'est pas nécessaire. Qu'est-ce que vous recommandez ?

 
MOTIONCAPITAL:

Bonjour à tous !

J'espère que tout va bien.

Je viens de créer un EA, quelle est la meilleure façon de le licencier pour le marché mql ? Je veux soumettre cet EA pour le vendre sur le marché mais je ne veux pas ajouter le mauvais type de licence si ce n'est pas nécessaire. Qu'est-ce que vous recommandez ?

Il n'y a qu'une seule façon de proposer/licencier sur le marché MQL5, lisez les règles :

https://www.mql5.com/fr/market/rules

 
Aleksei Andarzhanov:
J'ai écrit un Expert Advisor dans MQL4. Je souhaite le mettre sur le marché. Le conseiller expert nécessite deux indicateurs personnalisés, qui ne sont pas disponibles dans le terminal. Je ne comprends pas comment les attacher au conseiller expert avant de l'envoyer pour le tester. Autre chose. Les règles stipulent que le conseiller expert doit être ex5. S'il est écrit en MQL4, comment le rendre ex5?

Il est trop tôt pour aller sur le marché si vous posez de telles questions.

 
Evgeniy Zhdan:

Vous êtes trop jeune pour être sur le marché si vous posez de telles questions.

J'ai trouvé la solution. J'ai attaché des indicateurs à l'Expert Advisor via #resource. Une chose. Avant cela, l'Expert Advisor était rapide, il volait rapidement dans le Tester, mais maintenant la vitesse a diminué de dix fois. J'ai tout fait selon les règles, comme il est écrit dans le Guide, j'ai inséré une fonction pour trouver le chemin de l'indicateur GetRelativeProgramPath() - mais la vitesse est une tortue, un jour teste 5 minutes....

 
Aleksei Andarzhanov:

J'ai compris. J'ai attaché des indicateurs à l'Expert Advisor via #resource . Mais il y a une chose... Avant cela, l'Expert Advisor était rapide, il volait rapidement dans le Tester, mais maintenant la vitesse a diminué de dix fois. J'ai tout fait selon les règles, comme il est écrit dans le Guide, j'ai inséré une fonction pour trouver le chemin de l'indicateur GetRelativeProgramPath() - mais la vitesse est tortue, un jour teste 5 minutes....

Les données de l'indicateur sont-elles interrogées à chaque tic-tac ?

 
Denis Nikolaev:

Les données de l'indicateur sont-elles interrogées à chaque tic-tac ?

Oui, tout reste comme avant dans le code. Seul l'emplacement de l'indicateur a changé. Auparavant, il était demandé au terminal à partir de \NIndicators, et maintenant il est demandé à partir du programme ex4 lui-même.

#resource "\NIndicateurs\\\\##Contraste.ex4"

///////////

string path=GetRelativeProgramPath() ;

path=path+"::Indicateurs##Contrast.ex4" ;

ContrastMain_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,0,0),Digits) ;

ContrastSignal_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,1,0),Digits) ;

//////////

string GetRelativeProgramPath()

{

int pos2 ;

//--- obtient le chemin absolu vers le programme

string path=MQLInfoString(MQL_PROGRAM_PATH) ;

//--- trouver la position de la sous-chaîne "\MQL4\"

int pos =StringFind(path,"\MQL4\\\\") ;

//--- la sous-chaîne n'a pas été trouvée - erreur

if(pos<0)

return(NULL) ;

//--- Sauter le catalogue "\MQL4".

pos+=5 ;

//--- sauter les "\" inutiles

while(StringGetCharacter(path,pos+1)=='\\\N-')

pos++ ;

//--- s'il s'agit d'une ressource, retourner le chemin relatif au catalogue MQL4

if(StringFind(path,":: :",pos)>=0)

return(StringSubstr(path,pos)) ;

//--- recherche d'un délimiteur pour le premier sous-répertoire en MQL4 (par exemple, MQL4\Indicateurs)

//--- s'il est absent, retourner le chemin relatif au catalogue MQL4

if((pos2=StringFind(path,"\\N",pos+1))<0)

return(StringSubstr(path,pos)) ;

//--- renvoie le chemin relatif au sous-répertoire (par exemple, MQL4\Indicateurs)

return(StringSubstr(path,pos2+1))

}

 
Aleksei Andarzhanov:

Oui, tout est identique dans le code. Seul l'emplacement de l'indicateur a changé. Auparavant, il était demandé à partir du terminal de \\NIndicateurs, et maintenant à partir du programme ex4 lui-même.

#resource "\\NIndicateurs\\\\##Contraste.ex4"

///////////

string path=GetRelativeProgramPath() ;

path=path+"::Indicators\N##Contrast.ex4" ;

ContrastMain_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,0,0),Digits) ;

ContrastSignal_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,1,0),Digits) ;

//////////

string GetRelativeProgramPath()

{

int pos2 ;

//--- obtenir le chemin absolu vers le programme

string path=MQLInfoString(MQL_PROGRAM_PATH) ;

//--- trouver la position de la sous-chaîne "\MQL4\"

int pos =StringFind(path,"\MQL4\\N") ;

//--- la sous-chaîne n'a pas été trouvée - erreur

if(pos<0)

return(NULL) ;

//--- Sauter le catalogue "\MQL4".

pos+=5 ;

//--- sauter les "\" inutiles

while(StringGetCharacter(path,pos+1)=='\\\N-')

pos++ ;

//--- s'il s'agit d'une ressource, renvoie le chemin relatif au catalogue MQL4

if(StringFind(path,":: :",pos)>=0)

return(StringSubstr(path,pos)) ;

//--- trouver le séparateur du premier sous-répertoire en MQL4 (par exemple, MQL4\Indicateurs)

//--- s'il n'y a pas de séparateur, retourner le chemin relatif au catalogue MQL4

if((pos2=StringFind(path,"\\N",pos+1))<0)

return(StringSubstr(path,pos)) ;

//--- renvoie le chemin relatif au sous-répertoire (par exemple, MQL4/Indicateurs)

return(StringSubstr(path,pos2+1)) ;

}

Quel désordre...
Dans iCustom(), vous devez substituer un tel chemin :
"::Indicators\\\\##Contrast.ex4".