Discussão do artigo "Como colocar um produto no mercado" - página 46

 
Evgenii Sidorov:

#property indicator_separate_window

#property indicator_chart_window

e como especificar duas exibições diferentes para buffers diferentes?

Não é possível. O ObjectCreate pode ajudar. Desenhe com objetos.

 
Artyom Trishkin:

Você não verifica o FreezeLevel - se o preço estiver muito próximo, por exemplo, do nível StopLoss, o StopLoss não poderá ser modificado. A distância de congelamento é determinada apenas pelo nível FreezeLevel

Não é o stop que é modificado aqui, é o negócio que é fechado, ou estou errado?

 
Vladimir Khlystov:

Não é a parada que é alterada, mas a transação é fechada, ou estou errado?

Se as operações estiverem congeladas, você não poderá fechá-las.
 

Olá, pessoal!

Espero que tudo esteja bem.

Acabei de criar um EA, qual é a melhor maneira de licenciá-lo para o mercado de mql? Quero enviar esse EA para venda no mercado, mas não quero adicionar o tipo errado de licença se não for necessário. O que vocês recomendam?

 
MOTIONCAPITAL:

Olá, pessoal!

Espero que tudo esteja bem.

Acabei de criar um EA, qual é a melhor maneira de licenciá-lo para o mercado de mql? Quero enviar esse EA para venda no mercado, mas não quero adicionar o tipo errado de licença se não for necessário. O que vocês recomendam?

Há apenas uma maneira de oferecer/licenciar no Mercado MQL5, leia as regras:

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

 
Aleksei Andarzhanov:
Escrevi um Expert Advisor em MQL4. Quero colocá-lo no mercado. O Expert Advisor requer dois indicadores personalizados, que não estão disponíveis no terminal. Não sei como anexá-los ao Expert Advisor antes de enviá-lo para teste. E outra coisa. As regras dizem que o Expert Advisor deve ser ex5. Se ele foi escrito em MQL4, como fazê-lo em ex5?

É muito cedo para você ir ao mercado, se fizer essas perguntas.

 
Evgeniy Zhdan:

Você é muito jovem para estar no mercado se estiver fazendo perguntas como essa.

Eu resolvi o problema. Indicadores anexados ao Expert Advisor via #resource. Uma coisa. Antes disso, o Expert Advisor era rápido, voava rapidamente no Tester, mas agora a velocidade diminuiu dez vezes. Fiz tudo de acordo com as regras, como está escrito no Guia, inseri uma função para encontrar o caminho para o indicador GetRelativeProgramPath() - mas a velocidade é de tartaruga, um dia testa 5 minutos....

 
Aleksei Andarzhanov:

Consegui. Indicadores anexados ao Expert Advisor via #resource. Mas há uma coisa... Antes disso, o Expert Advisor era rápido, voava rapidamente no Tester, mas agora a velocidade diminuiu dez vezes. Fiz tudo de acordo com as regras, como está escrito no Guia, inseri uma função para encontrar o caminho para o indicador GetRelativeProgramPath() - mas a velocidade é de tartaruga, um dia testa 5 minutos....

Os dados do indicador são pesquisados a cada tick?

 
Denis Nikolaev:

Os dados do indicador são pesquisados a cada tique?

Sim. Tudo permanece como antes no código. Somente a localização do indicador mudou. Anteriormente, ele era solicitado no terminal a partir de \\Indicators e, agora, é solicitado no próprio programa ex4.

#resource "\\Indicators\\\\##Contrast.ex4"

///////////

string path=GetRelativeProgramPath();

path=path+"::Indicators\\##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;

//--- obter o caminho absoluto para o programa

string path=MQLInfoString(MQL_PROGRAM_PATH);

//--- encontre a posição da substring "\MQL4\"

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

//--- a substring não foi encontrada - erro

se(pos<0)

return(NULL);

//--- pule o catálogo "\\MQL4

pos+=5;

//--- pule o '\' desnecessário

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

pos++;

//--- se for um recurso, retorne o caminho relativo ao catálogo MQL4

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

return(StringSubstr(path,pos));

//--- encontre um delimitador para o primeiro subdiretório em MQL4 (por exemplo, MQL4\Indicators)

//--- se ele estiver ausente, retorne o caminho relativo ao catálogo MQL4

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

return(StringSubstr(path,pos));

//--- retorna o caminho relativo ao subdiretório (por exemplo, MQL4\Indicators)

return(StringSubstr(path,pos2+1))

}

 
Aleksei Andarzhanov:

Sim. Tudo está igual ao que era antes no código. Apenas o local do indicador foi alterado. Antes, ele era solicitado no terminal de \\\Indicators e, agora, no próprio programa ex4.

#resource "\\Indicators\\\\##Contrast.ex4"

///////////

string path=GetRelativeProgramPath();

path=path+"::Indicators\\\##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;

//--- obter o caminho absoluto para o programa

string path=MQLInfoString(MQL_PROGRAM_PATH);

//--- encontrar a posição da substring "\MQL4\"

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

//--- substring não encontrada - erro

if(pos<0)

return(NULL);

//--- pule o catálogo "\MQL4

pos+=5;

//--- pule o "\" desnecessário

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

pos++;

//--- se for um recurso, retorne o caminho relativo ao catálogo MQL4

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

return(StringSubstr(path,pos));

//--- encontrar o separador para o primeiro subdiretório em MQL4 (por exemplo, MQL4\Indicators)

//--- se não houver tal delimitador, retorne o caminho relativo ao catálogo MQL4

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

retorna(StringSubstr(path,pos));

//--- retorna o caminho relativo ao subdiretório (por exemplo, MQL4/Indicators)

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

}

Que bagunça...
Em iCustom(), você deve substituir esse caminho:
"::Indicators\\\\##Contrast.ex4".