[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 385

 
Las-tochka:

Basta transferi-los para um gráfico, definir parâmetros e usar


Embora não seja melhor assim))))

Tipos de arquivo


Na MQL4 há 3 tipos de arquivos com código de programa: mq4, ex4 e mqh.

Os arquivos do tipo mq4 são o código fonte de um programa. Os arquivos deste tipo contêm códigos fonte de todos os tipos de programas (Expert Advisors, scripts e indicadores). Para a criação dos códigos dos programas é utilizado o MetaEditor. Depois que um código de programa é completado total ou parcialmente, ele pode ser salvo e mais tarde reaberto neste editor para modificações adicionais. Os arquivos do tipo mq4 não podem ser usados para execução no terminal do cliente. Para iniciar um programa de execução, ele deve ser compilado com antecedência. Após a compilação do código fonte do programa, um arquivo com o mesmo nome e com a extensão ex4 é criado.

Um arquivo ex4 é um programa compilado que está pronto para uso prático no terminal do cliente. Para arquivos deste tipo, a possibilidade de edição não é fornecida. Se for necessário fazer mudanças em um programa, deve-se endereçar a seu código fonte (arquivo mq4), editá-lo e depois compilá-lo novamente. O nome de um arquivo ex4 não permite determinar o tipo de programa a que se refere - se é um script, um Expert Advisor ou um indicador. Os arquivos do ex4 podem ser usados como arquivos de biblioteca.

Os arquivos do tipo mqh incluem arquivos. Este é o código fonte dos blocos de programas de usuário freqüentemente utilizados. Tais arquivos podem ser incluídos nas fontes de Expert Advisors, scripts e indicadores personalizados na fase de compilação. Normalmente os arquivos incluídos contêm descrições de funções a serem importadas (veja por exemplo os arquivos stdlib.mqh ou WinUser32.mqh) ou descrições de constantes e variáveis comuns (stderror.mqh e WinUser32.mqh). Como regra, os arquivos mqh são armazenados no diretório Directory_terminal\experts

Os arquivos de inclusão são assim chamados porque normalmente são "incluídos" na fase de compilação do arquivo fonte principal usando a diretiva #include. Apesar dos arquivos mqh poderem conter o código fonte de um programa e o MetaEditor os compila, eles não são independentes e auto-suficientes, ou seja, não requerem compilação para produzir arquivos executáveis do tipo ex4. .mq4 também podem ser usados como arquivos de inclusão, que também devem ser armazenados no terminal_diretório de especialistas.

No navegador do terminal do cliente nas seções "Expert Advisors", "Custom Indicators" e "Scripts" somente são exibidos os nomes dos arquivos que têm a extensão ex4 e estão localizados no diretório correspondente. Os arquivos compilados em uma versão mais antiga do MetaEditor não são iniciados e estão acinzentados.

Há também outros tipos de arquivos que não formam um programa completo, mas são utilizados na criação de programas de aplicação. Por exemplo, um programa pode ser compilado a partir de vários arquivos separados ou uma biblioteca previamente criada pode ser usada para este fim. Bibliotecas de funções do usuário podem ser criadas pelo usuário para armazenar blocos de programas de usuário freqüentemente utilizados. É recomendável armazenar as bibliotecas em bibliotecas de especialistas em terminal_directório. Os arquivos mq4 e ex4 podem ser usados como bibliotecas. As bibliotecas não podem ser lançadas por elas mesmas. O uso de arquivos de inclusão é preferível ao uso de bibliotecas, devido ao consumo adicional de recursos computacionais ao chamar funções de biblioteca.

Na primeira parte do tutorial "Introdução à Programação MQL4", estaremos interessados em arquivos de código fonte de programas mq4 e arquivos compilados de programas ex4.

 
Onde devo colocá-lo no gráfico?
 
Las-tochka:


Encontrei outra coisa engraçada, um robô, quando testado com diferentes corretores em seus terminais mt4, dá resultados de teste diferentes por causa da ausência de citações, tanto uma como a outra! Mas com tudo isso não há nenhum erro de desalinhamento???? Estou chocado!?!??

O efeito borboleta está em seu rosto))))

O que você acha?

Acho que o testador não precisa mostrar os lucros/perdas potenciais de forma confiável, é apenas para ver se a lógica EA está funcionando corretamente e se todos os erros matemáticos e lógicos no código estão ok.
 

BeerGod:
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

Existe alguma informação sobre os méritos da pergunta?

A questão não é o lucro. E o que o testador é, em minha opinião, é uma ferramenta, e como utilizá-la depende de cada um de nós.


 
Myth63:
Onde devo colocá-lo para que possa usá-lo no gráfico?


Se você quiser executar um especialista ou um indicador ou um script em uma carta, simplesmente clique com o botão esquerdo do mouse no programa correspondente na barra de ferramentas do navegador e arraste-o para a carta.

Mas é melhor baixar o tutorial de https://book.mql4.com/ru/ no canto inferior esquerdo da página) Boa sorte!

 

Bom dia!

Eu utilizo um indicador que mostra os AMs de outros períodos.

Coloquei alguns deles na janela e o terminal começa a desacelerar terrivelmente!

Especialistas, qual é o problema com a lentidão do indicador, ele tem apenas 15 linhas?

Consertar quem entende.

Sou grato a vocês.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63:
onde devo colocá-lo para aplicá-lo no gráfico?
Os especialistas para os especialistas em pastas, e todos os outros tipos são semelhantes pelo nome. Após reiniciar o terminal, eles estarão disponíveis no navegador, mas ficarão cinzas, ao contrário dos que têm o código fonte.
 

Olá, por favor, avise: Meu problema é o seguinte: no Conselheiro Especialista, deve haver apenas um sinal para negociar (quando todos os três indicadores tiverem cruzado suas respectivas zonas)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Aqui está a questão. Como escrever esta linha corretamente, para que haja apenas UM sinal. (Caso contrário, o Expert Advisor faz negócios de acordo com o seguinte algoritmo: RSI cruza a linha 35 - negócio; STOCH cruza a linha 20 - negócio; CCI cruza a linha -100 - negócio; ele faz três negócios)

Há apenas UM sinal comercial quando todos os três indicadores atravessaram suas zonas

 
artemka_1981:

Olá, por favor, avise: Meu problema é o seguinte: no Conselheiro Especialista, deve haver apenas um sinal para negociar (quando todos os três indicadores tiverem cruzado suas respectivas zonas)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Aqui está a questão. Como escrever esta linha corretamente, para que haja apenas UM sinal. (Caso contrário, o Expert Advisor faz negócios de acordo com o seguinte algoritmo: RSI cruza a linha 35 - negócio; STOCH cruza a linha 20 - negócio; CCI cruza a linha -100 - negócio; ele faz três negócios)

O sinal para um acordo somente UM quando os três indicadores cruzaram suas zonas

Experimente assim:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.
 
DhP:

Tente desta forma:

Obrigado. Vou tentar.
Razão: