Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, para funcionar de forma semelhante em MQL5.
//Введем внешнюю переменную, чтобы иметь возможность изменить количество сканируемых свечей.externint Window=30;
voidOnStart()
{
//Вводим переменные.double Highest=High[0];
double Lowest=Low[0];
//Сканируем 30 свечей и обновляем значения самых высоких и самых низких цен.for(int i=0; i<=Window; i++) {
if(Low[i]<Lowest) Lowest=Low[i];
if(High[i]>Highest) Highest=High[i];
}
//Выводим результат.Alert("Самая высокая цена ",Highest," - Самая низкая цена ",Lowest);
}
Minha variante obviamente não passa, por algum motivo há muitos erros):
//Введем внешнюю переменную, чтобы иметь возможность изменить количество сканируемых свечей.externint Window=30;
voidOnStart()
{
double o = iOpen(NULL, PERIOD_CURRENT, 0);
double h = iHigh(NULL, PERIOD_CURRENT, 0);
double l = iLow(NULL, PERIOD_CURRENT, 0);
double c = iClose(NULL, PERIOD_CURRENT, 0);
double Highest=h;
double Lowest=l;
//Сканируем 30 свечей и обновляем значения самых высоких и самых низких цен.for(int i=0; i<=Window; i++)
{
if ( l[i] < Lowest )
Lowest=[i];
if ( h[i] > Highest )
Highest=[i];
}
//Выводим результат.Print("Самая высокая цена ",Highest,
" - Самая низкая цена ",Lowest);
}
e não é possível ver a qual variável você está adicionando dados
O valor mais alto/mais baixo deve ser exibido.
Dei uma olhada nisso:
int val_index=iLowest(NULL,0,MODE_CLOSE,10,1);
Muito próximo, mas ainda não.
Bem, ele mostra o NÚMERO dos últimos 10 (a partir do primeiro "1") candlestick com a maior baixa. Mas eu preciso do valor do preço, não do número da vela.
tudo pode ser feito, a pergunta era para aqueles que mediam o trabalho real e, melhor ainda, para os desenvolvedores, que sabem o que eles têm em seus planos
Não querofazer experimentos, há muitas outras tarefas.
Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, ele deve funcionar de forma semelhante na MQL5.
Minha variante obviamente não funciona, por algum motivo há muitos erros):
Aparentemente, você não tem nenhuma familiaridade com programação. É por isso que, seja qual for o conselho que lhe for dado, você não terá sucesso até agora .
Mas, mesmo assim... tente entender a função
intCopyHigh(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодint start_pos, // откуда начнем int count, // сколько копируемdouble high_array[] // массив для копирования максимальных цен
);
e a função de trabalhar com matrizes
intArrayMaximum(
constvoid& array[], // массив для поискаint start=0, // с какого индекса начинаем поискint count=WHOLE_ARRAY// количество проверяемых
);
Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, ele deve funcionar de forma semelhante na MQL5.
Minha variante obviamente não funciona, por algum motivo há muitos erros):
CopyRates() em vez de um monte de indicadores e as edições de código serão mínimas, o código permanecerá compacto e legível.
//Введем внешнюю переменную, чтобы иметь возможность изменить количество сканируемых свечей.externint Window=30;
voidOnStart()
{
//Вводим переменные.double Highest=DBL_MIN;// double Lowest=DBL_MAX; // MqlRates rates[];
//Сканируем 30 свечей и обновляем значения самых высоких и самых низких цен.if (CopyRates(_Symbol,_Period,30,rates)!=30) {
Alert("copyRates failed");
return;
}
for(int i=0; i<=Window; i++) {
if(rates[i].low<Lowest) Lowest=rates[i].low;
if(rates[i].high>Highest) Highest=rates[i].high;
}
//Выводим результат.Alert("Самая высокая цена ",Highest," - Самая низкая цена ",Lowest);
}
Na verdade, você também deve adicionar uma verificação para aspas curvas
Maxim, o CopyRates não é apresentado como tendo todas as características do personagem?
mais baratas, há características individuais
1) de acordo com as palavras dos desenvolvedores, a cópia virtual, ou seja, se possível, os dados não são transferidos, as referências internas são transferidas 2) mesmo com a cópia completa, ele é mais rápido do que o CopyBuffer para iHigh, iLow separadamente (1 chamada em vez de 2, que ainda irão para as mesmas estruturas de terminal).
E, finalmente, o principal: ao fazer a portabilidade, é muito importante que o código seja o mais semelhante possível ao original, mesmo visualmente. Você deve ter certeza absoluta de que ele (o código) faz exatamente a mesma coisa que o original. E pequenas otimizações são feitas depois, e somente quando for realmente essencial.
Boa noite, caros programadores!
Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, para funcionar de forma semelhante em MQL5.
Minha variante obviamente não passa, por algum motivo há muitos erros):
Boa noite, queridos programadores!
Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, ele deve funcionar de forma semelhante na MQL5.
Procure na ajuda
iHighe funções semelhantes
Se não funcionar, é porque há um erro no loop.
e não é possível ver a qual variável você está adicionando dados
procure na ajuda
e funções semelhantes
se não funcionar, há um erro no loop
e não é possível ver a qual variável você está adicionando dados
O valor mais alto/mais baixo deve ser exibido.
Dei uma olhada nisso:
int val_index=iLowest(NULL,0,MODE_CLOSE,10,1);
Muito próximo, mas ainda não.
Bem, ele mostra o NÚMERO dos últimos 10 (a partir do primeiro "1") candlestick com a maior baixa. Mas eu preciso do valor do preço, não do número da vela.
Em geral, é necessário não olhar para trás, mas para frente.
Por exemplo: procure o "mínimo" desde o início do candle anterior (que é numerado como "1") durante os próximos 100 candles.
tudo pode ser feito, a pergunta era para aqueles que mediam o trabalho real e, melhor ainda, para os desenvolvedores, que sabem o que eles têm em seus planos
Não querofazer experimentos, há muitas outras tarefas.
Certo. Não é um negócio real em .........
É isso mesmo. Não é assunto do rei em .........
Talvez devêssemos fechar o tópico Perguntas de iniciantes? Alexei, se você não quiser ajudar, não participe, pois há muitas reclamações suas.
Eu estava interessado em uma resposta profissional para ter uma ideia de como a plataforma funciona.
Boa noite, queridos programadores!
Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, ele deve funcionar de forma semelhante na MQL5.
Minha variante obviamente não funciona, por algum motivo há muitos erros):
Aparentemente, você não tem nenhuma familiaridade com programação. É por isso que, seja qual for o conselho que lhe for dado, você não terá sucesso até agora .
Mas, mesmo assim... tente entender a função
e a função de trabalhar com matrizes
Há outras variantes para resolver esse problema.
Boa noite, queridos programadores!
Ajudem-me a resolver um problema simples. Há um código da MQL4. Quero adaptá-lo ao 5. Ou seja, ele deve funcionar de forma semelhante na MQL5.
Minha variante obviamente não funciona, por algum motivo há muitos erros):
CopyRates() em vez de um monte de indicadores e as edições de código serão mínimas, o código permanecerá compacto e legível.
Na verdade, você também deve adicionar uma verificação para aspas curvas
CopyRates() em vez de um monte de indicadores, e as edições de código serão mínimas, o código permanecerá compacto e legível.
Na verdade, você também deve adicionar uma verificação para aspas curvas
Maxim, o CopyRates não é apresentado como tendo todos os recursos de um símbolo?
mais barato, há funções individuais
Maxim, o CopyRates não é apresentado como tendo todas as características do personagem?
mais baratas, há características individuais
1) de acordo com as palavras dos desenvolvedores, a cópia virtual, ou seja, se possível, os dados não são transferidos, as referências internas são transferidas 2) mesmo com a cópia completa, ele é mais rápido do que o CopyBuffer para iHigh, iLow separadamente (1 chamada em vez de 2, que ainda irão para as mesmas estruturas de terminal).
E, finalmente, o principal: ao fazer a portabilidade, é muito importante que o código seja o mais semelhante possível ao original, mesmo visualmente. Você deve ter certeza absoluta de que ele (o código) faz exatamente a mesma coisa que o original. E pequenas otimizações são feitas depois, e somente quando for realmente essencial.