Levando em conta as dicas dos membros do fórum, que são um grande OBRIGADO, obtivemos esta versão do script:
Saudações, Vladimir.
Esqueci completamente de um ponto muito importante no script. Era necessário normalizar o lote. Aqui está a versão corrigida:
//+------------------------------------------------------------------+//| Lot_Size_Depending_On_Risk_And_SL.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputsinputuint Risk=6; // Размер риска (> 0, но не более 100 %)inputuint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double Lot_Size_Depending_On_Risk_And_SL()
{
//--- блок проверки входных параметров на корректностьif(Risk==0 || Risk>100 || Stop_Loss==0)
{
Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
return(0.0);
}
//--- блок определения размера лотаdouble trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
double lot=NormalizeDouble((AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/
(Stop_Loss*trading_account_currency),2);
//--- блок проверки размера лота на минимум и максимум от возможногоdouble min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
if(lot<min_volume)
lot=min_volume;
if(lot>max_volume)
lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделкиdouble step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(lot/step_volume);
if(MathAbs(ratio*step_volume-lot)>0.0000001)
lot=ratio*step_volume;
return(lot);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
}
//+------------------------------------------------------------------+
Depois de terminar o teste avançado dorobô, encontrei um problema persistente: ao iniciar um único teste com o melhor conjunto de parâmetros, o testador de estratégia começa a executá-lo e parece executá-lo até o fim (a julgar pelo mecanismo do indicador de progresso), mas depois trava. O Metatrader precisa ser reiniciado e os resultados do teste único (e de todo o teste avançado em geral) são perdidos.
Por que o testador trava e como isso pode ser resolvido?
Especialistas, por favor, me digam: como configurar a plataforma para refletir o histórico de negociações não em todos os períodos de tempo, mas apenas em alguns deles? E o que temos agora: clique na caixa de seleção "mostrar histórico de negociações" e todo o histórico (setas para cima e para baixo) no gráfico semanal já é uma cerca sólida. E eu gostaria de uma configuração como outras ferramentas (linhas de tendência, setas, etc.), cuja exibição pode ser definida não em todos os períodos de tempo.
Boa tarde. Você poderia me dizer onde posso ver o exemplo mais simples de um Expert Advisor baseado na interseção de duas MAs (você pode dar uma aula). Eu sei como adicionar um. Não quero fazer um simples copiar-colar e alongar o código, sei que existem outros métodos. Se na MQL4 eu não tinha nenhuma dúvida, na MQL5 não consigo entender direito como fazer.
makssub exemplo mais simples de um Expert Advisor baseado na interseção de duas MAs (você pode dar uma aula). Eu sei como adicionar um. Não quero fazer um simples copiar-colar e alongar o código, sei que existem outros métodos. Se na MQL4 eu não tinha nenhuma dúvida, na MQL5 não consigo entender direito como fazer.
Olá. Abra o MetaEDitor 5. Ele tem um Expert Advisor integrado (padrão) baseado na interseção de duas MAs. Abra o código e estude-o. Ou procure-o no CodeBase. Aqui, por exemplo, está o primeiro EA construído com base na interseção de duas MAs.
Olá, abra o MetaEDitor 5. Ele tem um Expert Advisor integrado (padrão) baseado na interseção de duas MAs. Abra o código e estude-o. Ou pesquise no CodeBase. Aqui, por exemplo, está o primeiro EA construído com base na interseção de duas MAs.
Em OnInit, entendo mais ou menos o que está acontecendo.
Como faço para inserir tudo isso no OnTick?
Estou mostrando apenas uma variante de escrever um Expert Advisor, mas pode haver um grande número dessas variantes. Tudo depende da qualificação do programador. A estrutura de um Expert Advisor pode ser assim:
//+------------------------------------------------------------------+//| 1.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Input variables |//+------------------------------------------------------------------+// здесь размещаем входные параметры советника//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
// здесь инициализируем то, что считаем нужнымreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
// здесь деинициализируем то, что считаем нужным
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//--- абстрактный пример советника
Check_Trading(); // проверим условия разрешающие торговлю
Signal_Up(); // ищем сигнал для открытия длинной позиции
Open_Buy_Position(); // открываем длинную позицию
Close_Buy_Positions(); // закрываем длинную позицию
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Check_Trading()
{
// здесь вставляем условия разрешающие торговлю
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Signal_Up();
{
// здесь вставляем условия, при которых появляется сигнал на покупку
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Open_Buy_Position();
{
// здесь вставляем функцию открытия длинной позиции
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Close_Buy_Positions();
{
// здесь вставляем функцию закрытия длинной позиции
}
//+------------------------------------------------------------------+
Algo parecido com isto. Mais uma vez, enfatizo que este não é um guia para a criação de Expert Advisors, mas uma estrutura aproximada que utilizo ao criar meus Expert Advisors.
//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
// здесь инициализируем то, что считаем нужнымreturn(INIT_SUCCEEDED);
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
exibe informações da barra 6201
O que está escrito nele?
Provavelmente, a história é mais para o testador, para que os indicadores sejam calculados corretamente nelaLevando em conta as dicas dos membros do fórum, que são um grande OBRIGADO, obtivemos esta versão do script:
Saudações, Vladimir.
Esqueci completamente de um ponto muito importante no script. Era necessário normalizar o lote. Aqui está a versão corrigida:
Atenciosamente, Vladimir.
E o que temos agora: clique na caixa de seleção "mostrar histórico de negociações" e todo o histórico (setas para cima e para baixo) no gráfico semanal já é uma cerca sólida.
E eu gostaria de uma configuração como outras ferramentas (linhas de tendência, setas, etc.), cuja exibição pode ser definida não em todos os períodos de tempo.
Boa tarde. Você poderia me dizer onde posso ver o exemplo mais simples de um Expert Advisor baseado na interseção de duas MAs (você pode dar uma aula).
Eu sei como adicionar um. Não quero fazer um simples copiar-colar e alongar o código, sei que existem outros métodos.
Se na MQL4 eu não tinha nenhuma dúvida, na MQL5 não consigo entender direito como fazer.
Eu sei como adicionar um. Não quero fazer um simples copiar-colar e alongar o código, sei que existem outros métodos.
Se na MQL4 eu não tinha nenhuma dúvida, na MQL5 não consigo entender direito como fazer.
Olá. Abra o MetaEDitor 5. Ele tem um Expert Advisor integrado (padrão) baseado na interseção de duas MAs. Abra o código e estude-o. Ou procure-o no CodeBase. Aqui, por exemplo, está o primeiro EA construído com base na interseção de duas MAs.
Saudações, Vladimir.
Olá, abra o MetaEDitor 5. Ele tem um Expert Advisor integrado (padrão) baseado na interseção de duas MAs. Abra o código e estude-o. Ou pesquise no CodeBase. Aqui, por exemplo, está o primeiro EA construído com base na interseção de duas MAs.
Saudações, Vladimir.
Obrigado, dei uma olhada.
Entendo o que acontece no OnInit.
Como fazer tudo corretamente no OnTick?
Obrigado, eu dei uma olhada.
Em OnInit, entendo mais ou menos o que está acontecendo.
Como faço para inserir tudo isso no OnTick?
Estou mostrando apenas uma variante de escrever um Expert Advisor, mas pode haver um grande número dessas variantes. Tudo depende da qualificação do programador. A estrutura de um Expert Advisor pode ser assim:
Algo parecido com isto. Mais uma vez, enfatizo que este não é um guia para a criação de Expert Advisors, mas uma estrutura aproximada que utilizo ao criar meus Expert Advisors.
Atenciosamente, Vladimir.
Não sei como escrever isso
Não sei como escrever isso
O que exatamente não está claro para você? Como criar uma função de inicialização do EA? Então, tente estudar este artigo para iniciantes.
Saudações, Vladimir.