[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Como são feitas as consultas ao testador de estratégia? Como, por exemplo, executar o seguinte comando: "Faça um teste em um EA em um período de tempo específico com um arquivo específico e, quando terminar, salve o relatório".

 
alsu:
É difícil entender o código de outra pessoa de uma só vez... Se eu tivesse que adivinhar, eu verificaria os valores Imin,Imax,Jmin,Jmax na função Neuron.Study(). Na época 0, o valor 32 é passado como lR, que é então utilizado na indexação (geralmente indexamos matrizes de 0 a 1). É bem possível que seja aqui que reside o erro.

De fato, o erro estava relacionado a esses cálculos. Obrigado
 
alkador:

Como são tratadas as consultas ao testador de estratégia? Como, por exemplo, executar o seguinte comando: "Faça um teste em um EA em um determinado intervalo com um determinado arquivo e, quando terminar, salve o relatório".

Configuração na partida

O terminal do cliente pode ser iniciado com configurações pré-definidas. Para este fim, o nome do arquivo de configuração é passado para o terminal do cliente como um parâmetro.

Por exemplo:

  terminal.exe config\i terminal.ini teste1.txt terminal.exe "C:\Program Files\MetaTrader 4\config25.ini"

Se o caminho completo do arquivo não for especificado (Drive:SubDirectory:FileName), o arquivo será pesquisado no diretório do terminal do cliente. O arquivo de configuração tem as seguintes linhas:
[Parâmetro] = [Valor].

Os comentários começam com um ponto-e-vírgula (;) e não são avaliados.

Os parâmetros do arquivo de configuração podem ser divididos em vários grupos: configurações gerais, configurações de servidor proxy(guia "Servidor" na tabela de configurações de terminal), configurações de FTP(guia "Publicar" na tabela de configurações de terminal), configurações de Expert Advisor(guia "Expert Advisors" na tabela de configurações de terminal), configurações de um único início de um Expert Advisor ou de um script, configurações de um iniciador de teste de estratégia.

Configurações comuns

  • Perfil - nome do subdiretório no diretório de perfis. Os gráficos serão abertos no terminal do cliente, de acordo com o perfil especificado. Se esta opção não for especificada, o perfil atual será aberto.

  • MarketWatch - nome do arquivo (diretório de símbolos) que contém a lista de símbolos a serem exibidos na janela de observação do mercado. Tal arquivo pode ser recebido usando o comando do menu de contexto da janela "Market Watch - Symbolsets - Save As".

  • Login - número da conta a que se conectar na inicialização. Se este parâmetro estiver faltando, será usado o login atual.

  • Senha - senha para login. Este parâmetro será ignorado se o terminal do cliente armazenar dados pessoais em disco e o número da conta a ser conectada estiver na lista.

  • Servidor - nome de um servidor comercial ao qual a conexão deve ser feita. O nome do servidor coincide com o nome do arquivo srv correspondente armazenado no diretório de configuração. Este parâmetro será ignorado se as informações sobre a conta a ser conectada forem salvas em disco.

  • AutoConfiguração - "verdadeira" ou "falsa", dependendo se a autoconfiguração deve ser habilitada. Se este parâmetro estiver faltando, será usado o valor das configurações atuais do servidor.

  • DataServer - endereço do centro de dados. Se a autoconfiguração do servidor estiver ativada, esta entrada pode ser ignorada. Se este parâmetro estiver faltando, será usado o valor das configurações atuais do servidor.

  • EnableDDE - "verdadeiro" ou "falso", dependendo se o servidor DDE deve ser ativado. Se este parâmetro estiver ausente, então será usado o valor das configurações atuais do servidor.

  • EnableNews - "verdadeiro" ou "falso", dependendo se o recebimento de notícias deve ser permitido ou não. Se este parâmetro não estiver presente, será utilizado o valor das configurações atuais do servidor.

Exemplo:

  Perfil de configurações comuns=test 3 MarketWatch=set2.set Login=12345 Senha=xxxxxx Servidor=MetaQuotes-demo AutoConfiguration=false DataServer=192.168.0.1:443 EnableDDE=true EnableNews=false

Configurações de Proxy

  • ProxyEnable - "verdadeiro" ou "falso", dependendo se o servidor proxy deve ser usado para conexão com o servidor comercial.

  • ProxyServer - endereço do servidor proxy.

  • ProxyType - tipo de servidor proxy. Pode ser "HTTP", "SOCKS4" ou "SOCKS5".

  • ProxyLogin - login no servidor proxy.

  • ProxyPassword - senha para acessar o servidor proxy.

Se algum destes parâmetros estiver faltando, são usadas as configurações atuais do terminal do cliente (configurações proxy na guia "Servidor" da tabela de configurações do terminal do cliente).

Exemplo:

  ; configurações proxy ProxyEnable=proxyServer=proxy.company.com:3128 ProxyType=HTTP ProxyLogin=user45 ProxyPassword=xxx

Configurações de FTP

  • FTPEnable - habilita/desabilita a publicação. Os valores aceitáveis são "verdadeiros" ou "falsos".

  • FTPPassiveMode - modo passivo habilitado/desabilitado. Valores aceitáveis "verdadeiro" ou "falso".

  • FTPAccount - número de conta cujos dados de status devem ser enviados ao FTP.

  • FTPServer - endereço do servidor FTP.

  • FTPLogin - login para autorização no servidor FTP.

  • Senha FTPPassword - senha de acesso ao servidor FTP.

  • FTPPath - nome do diretório no servidor FTP onde o relatório é colocado.

  • Período FTPP - periodicidade de envio de relatório ao servidor FTP em minutos.

Se algum dos parâmetros listados estiver faltando, são usadas as configurações atuais do terminal do cliente(guia "Publicação" na tabela de configurações do terminal).

Exemplo:

  ; configurações ftp FTPEnable=true FTPPassiveMode=false FTPAccount=12345 FTPServer=ftp.company.com FTPLogin=admin FTPPassword=pAssWOrd123 FTPPath=/inetpub FTPPeriod=10

Configurações dos especialistas

  • ExpertsEnable - habilitar/desabilitar os especialistas.

  • ExpertsDllImport - ativar/desativar a importação de DLL.

  • ExpertsDllConfirmar - ativar/desativar a confirmação manual das chamadas de função DLL.

  • ExpertsExpImport - permitir/proibir a importação de funções de Expert Advisors externos ou bibliotecas MQL4.

  • ExpertsTrades - habilitar/desabilitar a negociação da EA.

  • ExpertsTradesConfirmar - habilitar/desabilitar confirmação manual de operações comerciais pelo Expert Advisor.

Nota: todos os parâmetros de um grupo de consultores especializados só podem assumir valores "verdadeiros" ou "falsos".

Se algum dos parâmetros mencionados acima estiver ausente, são usadas as configurações atuais do terminal do cliente(guia "Expert Advisors" na tabela de configurações de terminal).

Exemplo:

  ExpertsEnable=true ExpertsDllImport=true ExpertsExpImport=true ExpertsTrades=true ExpertsTradesConfirm=false

Assessoria especializada única e/ou configurações de roteiro

  • Símbolo - nome do símbolo cuja carta deve ser aberta logo após o início do terminal. Após o fechamento do terminal do cliente, as informações sobre este gráfico adicional não são salvas. Se o terminal for reiniciado sem um arquivo de configuração, esta tabela não será aberta. Se este parâmetro estiver ausente, nenhuma tabela adicional é aberta.

  • Período - período do gráfico (M1, M5, M15, M30, H1, H4, D1, D1, W1, MN). Se este parâmetro estiver ausente, é utilizado o H1.

  • Modelo - nome do arquivo do modelo (diretório de modelos) a ser aplicado ao gráfico.

  • Expert - nome do Expert Advisor a ser lançado após o início do terminal do cliente. O Expert Advisor começa no gráfico que é aberto de acordo com os parâmetros Símbolo e Período. Se o parâmetro Símbolo estiver faltando, nenhum gráfico adicional é aberto e a EA é iniciada no primeiro gráfico do perfil atual. Se não houver gráficos no perfil atual, o Expert Advisor não será iniciado. Se este parâmetro não estiver disponível, nenhum especialista será iniciado.

  • ExpertParameters - nome do arquivo que contém os parâmetros EA (diretório de expertos). Tal arquivo pode ser criado na janela de propriedades do Expert Advisor ao pressionar o botão "Parâmetros de entrada - Salvar". Geralmente é usado para armazenar parâmetros, que são diferentes dos parâmetros padrão. Se este parâmetro estiver ausente, são utilizados os parâmetros padrão.

  • Roteiro - nome do roteiro a ser lançado após o início do terminal do cliente. O roteiro é lançado pelas mesmas regras que o Expert Advisor (descrito acima).

  • ScriptParameters - nome do arquivo que contém os parâmetros do script (diretório de expertos). Este arquivo é gerado da mesma forma que para o Expert Advisor.

Exemplo:

  abrir gráfico e executar expert e/ou script Symbol=EURUSD Period=H4 Template=popular.tpl Expert=MACD Sample ExpertParameters=macd.set Script=period_converter ScriptParameters=

Configurações de lançamento do Strategy Tester

  • TestExpert - nome do Expert Advisor a ser lançado para testes. Se este parâmetro estiver faltando, nenhum teste é realizado.

  • TestExpertParameters - nome do arquivo que contém os parâmetros (diretório de testes). Tal arquivo pode ser criado na janela de propriedades do Expert Advisor, pressionando o botão "Parâmetros de entrada - Salvar". É normalmente usado para armazenar parâmetros diferentes dos padrões. Outros parâmetros do EA sendo testado das abas "Testing" e "Optimization" (e da aba "Input parameters" caso este parâmetro esteja ausente) são preenchidos com valores salvos automaticamente no arquivo \i [Nome do especialista].ini após o último teste.

  • TestSymbol - nome do instrumento, em cujos dados o teste do Expert Advisor deve ser realizado. Se este parâmetro não estiver disponível, é usado o último valor usado no testador.

  • Período de teste - período do gráfico (M1, M5, M15, M30, H1, H4, D1, D1, W1, MN). H1 é usado se este parâmetro estiver ausente.

  • TestModel - 0, 1 ou 2 dependendo do modelo de teste (Todos os carrapatos, Benchmarks, Preços Abertos). Se este parâmetro não estiver disponível, é usado o valor 0 (Todos os tiquetaques).

  • TestOptimization - otimização ativação/desativação. Os valores aceitáveis são "verdadeiros" ou "falsos". Se este parâmetro não estiver disponível, é usado o valor "falso".

  • TestDateEnable - ativar/desativar a opção "Datas de uso". Os valores aceitáveis são "verdadeiros" ou "falsos". Se esta opção não estiver disponível, "falso" é usado.

  • TestFromDate - data de início da faixa de teste como AAAA.MM.DD. Se este parâmetro estiver ausente, é utilizado "1970.01.01".

  • TestToDate - data final da faixa de teste na forma AAAA.MM.DD. Se este parâmetro estiver ausente, será 1970.01.01.01.

  • TestReport - nome do arquivo do relatório de teste. O arquivo será criado no diretório do terminal do cliente. O caminho relativo pode ser especificado, por exemplo: tester\MovingAverageReport". Se nenhuma extensão for especificada no nome do arquivo do relatório, será usada a extensão ".htm". Se este parâmetro não for especificado, o relatório de teste não será gerado.

  • TestReplaceReport - permitir/des permitir a escrita repetida do arquivo de relatório. Os valores aceitáveis são "verdadeiros" ou "falsos". Se "falso" for definido e o arquivo de relatório com este nome já existir, o nome do arquivo de relatório será anexado com um número seqüencial entre colchetes. Por exemplo, "MovingAverageReport[1].htm". Se este parâmetro estiver ausente, será usado "falso".

  • TestShutdownTerminal - habilitar/desabilitar o desligamento do terminal após o teste. Os valores aceitáveis são "verdadeiros" ou "falsos". Se este parâmetro estiver ausente, é usado "falso". Se o usuário pressionou o botão "Stop" durante o teste, o valor deste parâmetro é redefinido para "falso" porque o usuário assumiu o controle.

Exemplo:

  start strategy test testExpert=Moving Average TestExpertParameters=ma0.set TestSymbol=EURUSD TestPeriod=H1 TestModel=2 TestOptimization=false TestDateEnable=true TestFromDate=1970.01.01 TestToDate=2006.06.06 TestReport=MovingAverageReport TestReplaceReport=false TestShutdownTerminal=true

 
AndEv:
Se alguém souber, por favor, avise: preciso de um roteiro em loop que "pressione" o botão "Atualizar" uma vez a cada 0,5 segundos. "Eu tentei fazer um roteiro em loop usando o WindowRedraw(). Eu tentei fazer um roteiro em loop usando WindowRedraw() e Sleep(500), mas os indicadores não são reinicializados.
Esta biblioteca contém várias funções para o controle do MT4. Incluindo funções de atualização do gráfico para Consultores Especialistas e indicadores. Há até mesmo funções autônomas. Uma vez eu dirigi o roteiro e pronto. Ele é descarregado e os gráficos continuam a ser atualizados até que você descarregue o MT4.
 

Adaptado de

Armen63 18.02.2012 14:47 |Armen63 18.02.2012 14:47 |Armen63 18.02.2012 14:47

Oi, toda ajuda, por favor não saiba como implementá-la...alguém pode por favor aconselhar? xocu chtobi v sovetnike obshee chislo sell ili buy ordersov kontrolirovalos int Total1 = OrdersTotal();

if (Total1 <= MaxOrders || MaxOrders == 0) take ya kontroliruyu v all tipi encomenda um nado po otdelnosti i dlya vende i dlya compra

 

para Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

Olá, Prezados usuários do fórum!

Comecei a aprender o mql4 e decidi escrever minha própria EA.

Você sabe como escrever a seguinte condição no código: se os três últimos preços são mais altos que o anterior (pergunte3>ask2>ask1), então faça um pedido de compra

Espero ter dito a idéia claramente), se algo estiver errado, por favor, pergunte, eu especificarei)

Serei muito grato por sua ajuda ))

 
assim.
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
Talvez eu esteja errado. Estou apenas aprendendo.
 
openlive:
por exemplo, talvez eu esteja errado, estou apenas aprendendo


Se assumirmos que a EA lida com cada carrapato, então devemos fazer as coisas de maneira um pouco diferente.

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}