Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Boa tarde.
Estou a tentar usar a MQL5.Desmontei exp_tema.mq5 e modifiquei o código. Agora devo imprimir em log MA de cada vela (últimos 20). Mas não percebo porque faltam algumas entradas no diário de bordo. Notei que se falta ma[3] no registo, então não há ma[13]. Porque é que isto está a acontecer? Onde está o erro?
Aqui está.
está obviamente a faltar um cheque:
Não há necessidade de um vídeo.
Fazer uma impressão detalhada no código, para que possamos ver no registo a que variáveis intermédias são iguais.
#property copyright "Copyright 2011, "
#property link "http://www.mql5.com"#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod=0;
Print("Начало_Vhod="+DoubleToString(Vhod,2));
Vhod=linfunc(15);
Print("Конец_Vhod="+DoubleToString(Vhod,2));
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(double b) // имя функции и список параметров
{
double a=1;
while((a/b)<1 && !IsStopped())//-------------------
{
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
a=a+1;
}
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
Print("a+b="+DoubleToString(a+b,2));
double f=a+b;
// составной оператор
return(f); // возвращаемое значение
}
//+------------------------------------------------------------------+
Aqui está o código.
Aqui está a sua impressão
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0,00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 1 (EURUSD,M1) 18:11:17 Fim_V método=0,00
NH 2 1 (EURUSD,M1) 18:11:24 depuração terminada
Se executar o EX5 debug não a partir do editor, mas directamente no terminal - o mesmo resultado?
Pode anexar o EX5 debug?
Aqui está a sua impressão
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0,00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 1 (EURUSD,M1) 18:11:17 Fim_V método=0,00
NH 2 1 (EURUSD,M1) 18:11:24 depuração terminada
Não joga.
Win7 x64
MT5 x64 construir 687
Se executar o EX5 debug não a partir do editor, mas directamente no terminal - o mesmo resultado?
Pode anexar o EX5 debug?
É interessante, se o correr a partir do testador, dá 30, se o correr como EA, dá também 30 em impressão.
Se eu voltar a depurar, volta a 0.
MetaDriver
Sobre que construção e de que tipo (desculpe a expressão) funcionou.
Tenho ainda de apresentar o vídeo, se ninguém mais não conseguir reproduzir este milagre.
Aí mesmo
claramente carentes de controlos:
Obrigado, vou tentar adicioná-lo.
Aqui está um vídeo (mas escolha uma resolução superior a 720, caso contrário tudo estará em sabão)
https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.be
Win7 64bit MT5 687 build
Como descobri, o efeito quando o retorno dá 0 parece acontecer apenas no depurador.
Ao mesmo tempo, se eu usar apenas o botão "step while", parece funcionar.
Se eu entro enquanto faço o loop para sair com o botão "step in", não funciona, a saída é estavelmente 0.
Em geral, o vídeo mostra tudo, mas como ser e o que fazer até eu não entender (e por que é tão só eu?)
Win7 64bit MT5 687 build
Durante a optimização apareceram símbolos incompreensíveis
No separador do gráfico de optimização vertical, todos os valores são -1
Aí mesmo
claramente carentes de controlos:
No entanto, ainda tenho problemas com amortecedores. Tudo é claro quando os leio, mas não compreendo como devem ser implementados em código. Se não for muito incómodo, pode inseri-lo no código?