[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 291

 
alsu >> :

Você está confundindo a noção de "biblioteca" (da qual são extraídas funções usando #importar) e "incluir arquivo de cabeçalho" (#incluir).


As bibliotecas estão na pasta bibliotecas, suas fontes têm a extensão *.mq4, como indicadores e Expert Advisors. Elas são compiladas no arquivo *.ex4 (do qual as funções prontas são então importadas para outros programas, como este

A fim de compilar a biblioteca corretamente, como regra, você deve primeiro escrever a diretiva #propriedade da biblioteca.

Incluir arquivos de cabeçalho são usados para incluir partes de código prontas em vários programas. Eles são armazenados na pasta includes, têm a extensão *.mqh e são incluídos no texto (isto é, no texto) do programa usando a diretiva #include <...>; eles não precisam ser compilados separadamente, porque são compilados junto com o programa principal.

A propósito, antes a biblioteca era gerada por um modelo com # biblioteca de propriedade, e agora não é. Alguém sabe porque mudou o modelo ou simplesmente esqueceu de incluir?

PS Se não fosse pela alsu, eu não teria entendido o que o questionador queria saber, estou ficando velho.

 
Urain >> :

A propósito, antes a biblioteca era gerada usando um modelo com # biblioteca de propriedade, mas agora não é, quem sabe por que eles mudaram o modelo ou simplesmente esqueceram de incluir?

PS se eu não tivesse alsu eu não entenderia o que ele quer saber.

você pode ajustar manualmente o modelo:)

 
alsu >> :

você pode ajustar manualmente o modelo:)

Sim, sim, eu sei, mas no meu tempo eu matei 2 dias para encontrar o erro, e é um grande negócio na nova construção de um modelo diferente.

 
Urain >> :

>> ...se não fosse pela alsu, eu não saberia o que o questionador queria saber, estou ficando velho.

Velhos veteranos experientes, olhem para o código da biblioteca "asker's" e me expliquem o que o autor quis dizer quando o escreveu?

 

Desculpe.

Muito já foi escrito, mas ainda não entendi a resposta à minha pergunta. Vou tentar mais uma vez explicar o que não posso fazer.

Suponha que eu tenha feito uma EA na qual eu tenha inserido a diretiva #include<...> e depois feito um arquivo de cabeçalho de inclusão com um pedaço de código.

Eu compilei o Expert Advisor e o incluí em uma profissão. Tudo funciona. Com base na citação de Sergei Kovalev:

"...Outra coisa que você pode acrescentar é que o arquivo ex4 é auto-suficiente - para que funcione,
não precisa incluir os códigos fonte das funções do usuário.
Você pode copiar o arquivo do ex4, passá-lo a outros comerciantes e usá-lo lá.

"Ela é completa, independentemente de sua tecnologia.

Peguei minha EA e a copiei e a transferi para outro computador, para outro comerciante. Depois disso, o Consultor Especialista não quer trabalhar e escreve que não há nenhuma função à qual me refiro #include<...>, ou seja, ele não vê o arquivo de cabeçalho include e não pode compilar.

Aqui está um exemplo do Expert Advisor e inclui o arquivo de cabeçalho. Veja qual é exatamente o erro sobre a questão.

//+------------------------------------------------------------------+
//| Kibliot.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#direitos autorais "Copyright © 2009, MetaQuotes Software Corp."
#link da propriedade "http://www.metaquotes.net"

#Incluir <PointZigZag.mqh>

//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{PointZigZag();
Comentário("Prod.-y21 = ",y21," ", "Pok.-x21 = ",x21);
retorno(0);
}

//+------------------------------------------------------------------+

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

//+------------------------------------------------------------------+
//| PointZigZag.mqh |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#direitos autorais "Copyright © 2009, MetaQuotes Software Corp.
#link da propriedade "http://www.metaquotes.net"

intDepth externo = 12; //------- variáveis ZigZag
ExtDeviação externa interna = 5; //------- variáveis ZigZag.
intBackstep externo = 3; //------- variáveis ZigZag
ShiftBars externo interno = 2; //------- variáveis ZigZag
//------- variáveis ZigZag ------------------------------------------
duplo y3, y2, y1, zz;//
int x3, x2, x1, sh;//
duplo x31, x21, x11; // ponto de inflexão ZigZag
duplo y31, y21, y11; // ponto de inflexão ZigZag
duplo TimeZZ, TimeOOO;
//------------------------------------------------------------------------------

duplo PointZigZag()
{y3=0;y2=0;y1=0;
sh=ShiftBars;
enquanto (y3==0)
{zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
se (zz!=0 && zz!=EMPTY_VALUE)
{ se (y1==0) { x1=sh; y1=zz; }
senão se (y2==0) { x2=sh; y2=zz; }
senão se (y3==0) { x3=sh; y3=zz; }}}sh+++;
}
se (Alto[x1]>Alto[x2])
{x11=Alto[x1]; x21=Baixo[x2]; x31=Alto[x3];
y11=0;y21=0;y31=0;TimeZZ=Time[x2];
}else
{y11=Baixo[x1]; y21=Alto[x2]; y31=Baixo[x3];
x11=0;x21=0;x31=0;TimeZZ=Time[x2];}

}

//+------------------------------------------------------------------+
 
por favor, conserte a linha de erro que o compilador fornece de forma inalterada
 
gvi2504 >> :

Desculpe.

Muito já foi escrito, mas ainda não entendi a resposta à minha pergunta. Vou tentar mais uma vez explicar o que não posso fazer.

Suponha que eu tenha feito uma EA na qual eu tenha inserido a diretiva #include<...> e depois feito um arquivo de cabeçalho de inclusão com um pedaço de código.

Eu compilei o Expert Advisor e o incluí em uma profissão. Tudo funciona. Com base na citação de Sergei Kovalev:

"...Também posso acrescentar que o arquivo ex4 é auto-suficiente - para que funcione,
não requer incluir códigos fonte de funções do usuário.
O arquivo do ex4 pode ser copiado, compartilhado com outros comerciantes e utilizado lá.

"Ela é completa, independentemente de sua tecnologia.

Peguei minha EA e a copiei e a transferi para outro computador, para outro comerciante. Depois disso, o consultor especializado não quer trabalhar e escreve que não há nenhuma função mencionada por mim #include<...>, ou seja, ele não vê o arquivo de cabeçalho do include e não pode compilar.

Aqui está um exemplo do Expert Advisor e inclui o arquivo de cabeçalho. Veja qual é exatamente o erro na pergunta.


A diretriz exige que o arquivo a ser incluído também esteja localizado em outro computador do diretório inclua, e em geral, não se preocupe, escreva tudo na mesma folha, atribua um pedaço de código como função, coloque-o no final da folha para que não fique pendurado e sem ligar e desligar, por que complicar sua vida. As diretrizes #incluir e #importar são necessárias (imho) para escrever um complexo de programas com mais de 1000 linhas e consistindo de várias dúzias de programas separados, caso contrário eles são mais confusos do que úteis.

 
alsu >> :
Por favor, corrija a linha de erro que o compilador gera

O compilador escreve a seguinte linha

PointZigZag.mqh' - não pode abrir o arquivo do programa D:\Program Files\MetaTrader2\experts\Kibliot.mq4 (10, 1)

 
gvi2504 >> :

O compilador escreve a seguinte linha

PointZigZag.mqh' - não pode abrir o arquivo do programa D:\Program Files\MetaTrader2\experts\Kibliot.mq4 (10, 1)

ver resposta acima - coloque o arquivo include PointZigZag.mqh na pasta include

 
alsu >> :

ver resposta acima - coloque o arquivo include PointZigZag.mqh na pasta include

Em todos os computadores onde o arquivo Kibliot.mq4 é suposto ser compilado.

Razão: