Realizar um único teste - um único passe. Não uma optimização, mas uma única passagem. Dessa forma pode ver o diário de bordo com certeza.
Como assim, visual? Bem, eu tenho o diário de bordo. Não vejo aí nada de mal. Os parâmetros são todos passados. Mesmo assim, a produção continua a ser de 20.000.
Como assim, visual? Bem, eu tenho o diário de bordo. Não vejo nada de errado nisso. Os parâmetros são todos passados. Até foi executado. Mas o balanço de saída era de 20000 e ainda é.
Assim, alterar o código de modo a darmensagens de erro quando houver erros ou se a operação comercial não puder ser executada. Ou em geral, o código está errado e não dá sinais. Os milagres não acontecem.
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из...
Assim, alterar o código de modo a darmensagens de erro quando ocorrem erros ou se a troca não puder ser executada. Ou o código é defeituoso e não dá qualquer sinal. Não há milagres.
Sim.
Portanto, a optimização não está incluída no Ontick. O OnInit está a ser processado. Mas o On-Tick não é gerado. Aqui está o problema.
Integrei pontos de impressão ( ) nas entradas e saídas. Apenas o Init está escrito no registo.
P.S.
Eu trato dos erros. Força do hábito. Tenho escrito programas desde 1987.
Sem o código, só os telepatas podem ajudar - e agora, como a sorte o desejaria, todos os telepatas estão de férias.
Encontrei a razão. Por alguma razão, os indicadores não são recalculados em Ontick (não dá o número de barras recalculadas). Talvez eu precise de actualizar as citações.
No entanto, perdi o meu agradecimento. Tornei-me mais esperto. Soube onde estão escritos os registos.
Converteu um indicador simples de MQL4 -> MQL5, mas sem sinal nas últimas barras. Por favor, ajudem-me a encontrar a razão. O código fonte e o resultado está em anexo. Vou colar aqui também o convertido.
#property indicator_chart_window#property indicator_plots4#property indicator_buffers4#property indicator_color1 PaleVioletRed
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Red
#property indicator_color4 LimeGreen
inputint dist2 = 21; // Distance#2inputint dist1 = 14; // Distance#1double b1[];
double b2[];
double b3[];
double b4[];
int handle_atr;
int min_rates_total;
double atr[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit() {
SetIndexBuffer(0,b1,INDICATOR_DATA);
SetIndexBuffer(1,b2,INDICATOR_DATA);
SetIndexBuffer(2,b3,INDICATOR_DATA);
SetIndexBuffer(3,b4,INDICATOR_DATA);
ArraySetAsSeries(b1,true);
ArraySetAsSeries(b2,true);
ArraySetAsSeries(b3,true);
ArraySetAsSeries(b4,true);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_ARROW);
PlotIndexSetInteger(3,PLOT_DRAW_TYPE,DRAW_ARROW);
PlotIndexSetInteger(2,PLOT_ARROW,159);
PlotIndexSetInteger(3,PLOT_ARROW,159);
ResetLastError();
handle_atr = iATR(NULL,PERIOD_CURRENT,50);
if(handle_atr==INVALID_HANDLE) {
Print(" *** ATR handle was unable to create. Error ",GetLastError());
returnINIT_FAILED;
}
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetString(0,PLOT_LABEL,"SuperSignals Upper");
PlotIndexSetString(1,PLOT_LABEL,"SuperSignals Lower");
PlotIndexSetString(2,PLOT_LABEL,"SuperSignals Sell");
PlotIndexSetString(3,PLOT_LABEL,"SuperSignals Buy");
returnINIT_SUCCEEDED;
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &High[],
constdouble &Low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[]) {
int counted_bars=prev_calculated;
int i,limit;
ArraySetAsSeries(Low,true);
ArraySetAsSeries(High,true);
if(counted_bars<0) return0;
if(counted_bars>0) counted_bars--;
limit=rates_total-counted_bars;
limit=MathMax(limit,dist1);
limit=MathMax(limit,dist2);
for (i = limit-1; i >= 0; i--) {
int hhb1 = ArrayMaximum(High,i-dist1/2,dist1);
int llb1 = ArrayMinimum(Low, i-dist1/2,dist1);
int hhb = ArrayMaximum(High,MathMax(0,i-dist2/2),dist2);
int llb = ArrayMinimum(Low, MathMax(0,i-dist2/2),dist2);
b1[i] = EMPTY_VALUE;
b2[i] = EMPTY_VALUE;
b3[i] = EMPTY_VALUE;
b4[i] = EMPTY_VALUE;
ArraySetAsSeries(atr,true);
int copied=CopyBuffer(handle_atr,0,0,limit,atr);
if (copied<=0) Print(" *** ATR failed to copy.");
double tr = atr[i];
b1[i] = High[hhb];
b2[i] = Low[llb];
if (i==hhb1) b3[i] = High[hhb1]+tr/2;
if (i==llb1) b4[i] = Low[llb1] -tr/2;
}
return rates_total;
}
//+------------------------------------------------------------------+
Converteu um indicador simples de MQL4 -> MQL5, mas sem sinal nas últimas barras. Por favor, ajudem-me a encontrar a razão. O código fonte e o resultado está em anexo. Vou colar aqui também o convertido.
O resultado.
O culpado pode ser algo que não é logicamente feito entre as plataformas
Por favor, preste atenção aos diferentes parâmetros de entrada
MT4
ArrayMaximum
Ищет в одномерном числовом массиве максимальный элемент.
intArrayMaximum(
constvoid& array[], // массив для поискаint count=WHOLE_ARRAY, // количество проверяемыхint start=0// с какого индекса начинаем поиск
);
MT5
ArrayMaximum
Ищет максимальный элемент в первом измерении многомерного числового массива.
intArrayMaximum(
constvoid& array[], // массив для поискаint start=0, // с какого индекса начинаем поискint count=WHOLE_ARRAY// количество проверяемых
);
A optimização é realizada por AGENTES (no seu caso, AGENTES LOCALES).
Para ver os registos do agente local: clique com o botão direito do rato no separador Registo e vá para a pasta do agente
Aí é que está, não há erros. Tudo confere. Talvez haja uma firewall ou algo assim.
Aí é que está, não há erros. Tudo conta. Talvez haja firewalls ou algo assim?
Realizar um único teste, um único passe. Não optimização, apenas uma única passagem. Poderá ver o diário de bordo dessa forma.
Realizar um único teste - um único passe. Não uma optimização, mas uma única passagem. Dessa forma pode ver o diário de bordo com certeza.
Como assim, visual? Bem, eu tenho o diário de bordo. Não vejo aí nada de mal. Os parâmetros são todos passados. Mesmo assim, a produção continua a ser de 20.000.
Como assim, visual? Bem, eu tenho o diário de bordo. Não vejo nada de errado nisso. Os parâmetros são todos passados. Até foi executado. Mas o balanço de saída era de 20000 e ainda é.
Assim, alterar o código de modo a darmensagens de erro quando houver erros ou se a operação comercial não puder ser executada. Ou em geral, o código está errado e não dá sinais. Os milagres não acontecem.
Assim, alterar o código de modo a darmensagens de erro quando ocorrem erros ou se a troca não puder ser executada. Ou o código é defeituoso e não dá qualquer sinal. Não há milagres.
Sim.
Portanto, a optimização não está incluída no Ontick. O OnInit está a ser processado. Mas o On-Tick não é gerado. Aqui está o problema.
Integrei pontos de impressão ( ) nas entradas e saídas. Apenas o Init está escrito no registo.
P.S.
Eu trato dos erros. Força do hábito. Tenho escrito programas desde 1987.
Sim.
Em geral, a optimização não está incluída na Ontick. O OnInit é processado. Mas On Tick não é gerado. O problema.
Integrei pontos de impressão ( ) nas entradas e saídas. Apenas o Init está escrito no registo.
P.S.
Eu trato dos erros. Força do hábito. Tenho escrito programas desde 1987.
Apenas os telepatas poderão ajudar sem o código - e agora todos os telepatas estão de férias.
Sem o código, só os telepatas podem ajudar - e agora, como a sorte o desejaria, todos os telepatas estão de férias.
Encontrei a razão. Por alguma razão, os indicadores não são recalculados em Ontick (não dá o número de barras recalculadas). Talvez eu precise de actualizar as citações.
No entanto, perdi o meu agradecimento. Tornei-me mais esperto. Soube onde estão escritos os registos.
Converteu um indicador simples de MQL4 -> MQL5, mas sem sinal nas últimas barras. Por favor, ajudem-me a encontrar a razão. O código fonte e o resultado está em anexo. Vou colar aqui também o convertido.
O resultado.
Converteu um indicador simples de MQL4 -> MQL5, mas sem sinal nas últimas barras. Por favor, ajudem-me a encontrar a razão. O código fonte e o resultado está em anexo. Vou colar aqui também o convertido.
O resultado.
O culpado pode ser algo que não é logicamente feito entre as plataformas
Por favor, preste atenção aos diferentes parâmetros de entrada
MT4
MT5
O tipo de culpado pode ser algo que não é logicamente feito entre plataformas
Notar os diferentes parâmetros de entrada
MT4
MT5
Obrigado, Vitaliy.
A ordem das variáveis neste local é correcta. Troquei-as durante a conversão. Também as funções iHighest / iLowest estavam em MQL4.
Isto é outra coisa. Já me arrebentei com os miolos.