Recentemente descobri que o MetaEditor não está abrindo no terminal, e o comando "mudar" não funciona em EAs e indicadores ............. Por favor, me ajude com isto. Por favor, ajude-me a descobrir.
Recentemente descobri que o MetaEditor não está abrindo no terminal, e o comando "mudar" não funciona em EAs e indicadores ............. Por favor, me ajude com isto. Obrigado.
Vou tentar responder a isso.
Nenhuma possibilidade de corrigir códigos antigos funciona mais.
Você sabe tudo! Hoje eu não consegui pegar quem me colocou como Administrador, e não consegui a senha, e não pensei em perguntar! Vou conseguir amanhã! O que você está fazendo de pé?
Obrigado tara por sua participação! Tive tudo restaurado por meu vizinho no quarteirão! Especialista em ciência da computação!
Sim, eu entendo que existem muitas perguntas estúpidas. Honestamente, tenho tentado o dia todo, mas sem resultados.
Estou escrevendo os valores de preços de várias linhas de tendência na barra atual em uma matriz.
Como posso apagar um valor da matriz se não há nenhum objeto?
artmedia70:
Se passarmos através dos valores das linhas de tendência em cada tick, inicializarmos o array e aumentarmos sua dimensão ao encontrar o próximo preço necessário da linha de tendência necessária, então não haverá necessidade de remover os valores das linhas de tendência eliminadas do array. A matriz será dinâmica, e cada vez a cada tique, conterá apenas valores de objetos existentes.
double MassTrendNumber(double &array[], string tip) // Поиск значения цены трендовой линии, текущего бара, запись в массив. Два массива: masS и masB
{
ArrayResize(array,ObjectsTotal(OBJ_TREND));
for (int i = 0, limit = ArrayResize(array,ObjectsTotal(OBJ_TREND)); i < limit; i++)
{
string DWnem=ObjectName(i);
string DW="downtrendline"+IntegerToString(i); // существует два названия трендовых линий, первое
string DW2="uptrendline"+IntegerToString(i); // второе
if(tip="Sell") //первый массив цен на селл
if(DWnem=DW)//если имя равно "downtrendline"if(ObjectGet(DWnem,OBJPROP_COLOR)==Goldenrod || ObjectGet(DWnem,OBJPROP_COLOR)==Gainsboro || ObjectGet(DWnem,OBJPROP_COLOR)==White)
// Также существует три цвета
array[i]=ObjectGetValueByShift(DWnem,1); //записываем
if(tip="Buy") //второй массивцен на бай
if(DWnem=DW2)
if(ObjectGet(DWnem,OBJPROP_COLOR)==Goldenrod || ObjectGet(DWnem,OBJPROP_COLOR)==Gainsboro || ObjectGet(DWnem,OBJPROP_COLOR)==White)
array[i]=ObjectGetValueByShift(DWnem,1);
} return;
}
Estou tentando fazer um oscilador por volta de 0 a partir do preço fechado em uma janela separada, mas não consigo.
Ou seja, temos o preço Close[i], preciso que este preço vá acima/abaixo de zero como no MACD/CCI, em uma janela separada, mas por mais que eu tente, não posso fazê-lo sem valores adicionais como MA: agora eu consigo algo semelhante se eu subtrair o iClose-iMA, mas talvez haja variantes sem suavizar?
Ou na faixa 0,0...1,0 se não houver como chegar a zero...
O método de busca no método abaixo é ligeiramente diferente:
#property strict/******************************************************************************/bool AddValue(double &array[], constdouble value) {
constint size = ArraySize(array);
if (ArrayResize(array, size + 1) != size + 1) {
returnfalse; // Ошибка, значение не может быть добавлено к массиву
}
array[size] = value; //записываемreturntrue; // Нет ошибки, значение добавлено к массиву
}
/******************************************************************************/bool AddValueIfFound(double &array[], conststring name) {
constint type = ObjectType(name);
if (type == OBJ_TREND) {
switch ((color)ObjectGet(name, OBJPROP_COLOR)) { // Тип color допустимо использовать в switchcase Goldenrod:
case Gainsboro:
case White:
if (!AddValue(array, ObjectGetValueByShift(name, 1))) {
returnfalse; // Ошибка, значение найдено, но не может быть добавлено к массиву
}
}
}
returntrue; // Нет ошибки, значение, если найдено, добавлено к массиву
}
/******************************************************************************/bool MassTrendNumber(double &array[], constbool buy) { // Поиск значения цены трендовой линии, текущего бара, запись в массив. Два массива: masS и masBconststring subname = (buy ? "uptrendline" : "downtrendline"); // существует два названия трендовых линий, первое и второеif (ArrayResize(array, 0) != 0) {
returnfalse; // Ошибка, массив не может быть заполнен достоверно
}
for (int i = 0, limit = ObjectsTotal(OBJ_TREND); i < limit; i++) {
if (!AddValueIfFound(array, subname + IntegerToString(i))) {
returnfalse; // Ошибка, массив, если и заполнен, то недостоверно
}
}
returntrue; // Нет ошибки, массив заполнен достоверно
}
/******************************************************************************/void FillAndPrint(double &array[], constbool buy) {
if (MassTrendNumber(array, buy)) {
constint limit = ArraySize(array);
Print("Найдено объектов: ", limit);
for (int i = 0; i < limit; i++) {
Print("Price[", i, "] = ", DoubleToStr(array[i], Digits));
}
} else {
Print("Чёрт!");
}
}
/******************************************************************************/voidOnStart() {
double masS[];
double masB[];
Print("Sell:");
FillAndPrint(masS, false);
Print("Buy:");
FillAndPrint(masB, true);
}
Adicione duas linhas de tendência brancas com nomes correspondentes ao gráfico e você o tem:
Não escreva funções quilométricas, divida o programa em breves "frases" - "tijolos". Os "tijolos" pequenos fazem os maiores, e os maiores fazem os ainda maiores. Veja, é possível.
Passe todos os seus dados para funcionar somente através de parâmetros.
Certifique-se de lidar com os erros se a função que está sendo chamada falhar e outras ações, se o erro for ignorado, terão sérias consequências. A grande maioria das falhas de programa (em geral) ocorre porque o tratamento de erros não é programado de forma alguma.
Por exemplo, se o ArrayResize(), chamado para ampliar o tamanho da matriz, retornou um erro, e o programador não o verificou e se refere à matriz supostamente ampliada, ocorre um erro que faz com que o programa MQL4 deixe de funcionar mais tarde. O Expert Advisor, por exemplo, deixa de negociar deixando posições em aberto. Não é ótimo?
Tente inserir "array[0] = 0;" antes do loop na função MassTrendNumber(), e certifique-se de que o script termina após o erro de overrun do array.
Estou tentando fazer um oscilador por volta de 0 a partir do preço fechado em uma janela separada, mas não consigo.
Ou seja, temos o preço Close[i], preciso que este preço vá acima/abaixo de zero como no MACD/CCI, em uma janela separada, mas por mais que eu tente, não posso fazê-lo sem valores adicionais como MA: agora eu consigo algo semelhante se eu subtrair o iClose-iMA, mas talvez haja variantes sem suavizar?
Ou na faixa 0,0...1,0 se não houver como chegar a zero...
O método de busca abaixo é ligeiramente diferente:
Adicione duas linhas brancas de tendência com os nomes correspondentes ao gráfico e você o tem:
Não escreva funções quilométricas, divida o programa em frases curtas "-"tijolos". Os "tijolos" pequenos fazem os maiores, e os maiores fazem os ainda maiores. Veja, é possível.
Somente passe todos os dados para as funções através de parâmetros.
Certifique-se de lidar com erros se a função que está sendo chamada falhar, e a ação subseqüente, se o erro for ignorado, terá sérias conseqüências. A grande maioria das falhas de programa (em geral) ocorre porque o tratamento de erros não é programado de forma alguma.
Por exemplo, se o ArrayResize(), chamado para ampliar o tamanho da matriz, retornou um erro, e o programador não o verificou e se refere à matriz supostamente ampliada, ocorre um erro que faz com que o programa MQL4 deixe de funcionar mais tarde. O Expert Advisor, por exemplo, deixa de negociar deixando posições em aberto. Isso não é ótimo?
Tente inserir "array[0] = 0;" antes do loop no MassTrendNumber() e certifique-se de que o script termina após o erro de overrun do array.
Sim, muito obrigado, você está além das palavras como é útil, tão claro! Fantástico!!!
Minha pergunta é para um novato:
Recentemente descobri que o MetaEditor não está abrindo no terminal, e o comando "mudar" não funciona em EAs e indicadores ............. Por favor, me ajude com isto. Por favor, ajude-me a descobrir.
Minha pergunta é para um novato:
Recentemente descobri que o MetaEditor não está abrindo no terminal, e o comando "mudar" não funciona em EAs e indicadores ............. Por favor, me ajude com isto. Obrigado.
Vou tentar responder a isso.
Nenhuma possibilidade de corrigir códigos antigos funciona mais.
Ao menos você tem um príncipe para coroar.
Você sabe tudo! Hoje eu não consegui pegar quem me colocou como Administrador, e não consegui a senha, e não pensei em perguntar! Vou conseguir amanhã! O que você está fazendo de pé?
Obrigado tara por sua participação! Tive tudo restaurado por meu vizinho no quarteirão! Especialista em ciência da computação!
Sim, eu entendo que existem muitas perguntas estúpidas. Honestamente, tenho tentado o dia todo, mas sem resultados.
Estou escrevendo os valores de preços de várias linhas de tendência na barra atual em uma matriz.
Como posso apagar um valor da matriz se não há nenhum objeto?
artmedia70:Se passarmos através dos valores das linhas de tendência em cada tick, inicializarmos o array e aumentarmos sua dimensão ao encontrar o próximo preço necessário da linha de tendência necessária, então não haverá necessidade de remover os valores das linhas de tendência eliminadas do array. A matriz será dinâmica, e cada vez a cada tique, conterá apenas valores de objetos existentes.
ArrayResize(array,ObjectsTotal(OBJ_TREND)); for (int i = 0, limit = ArrayResize(array,ObjectsTotal(OBJ_TREND)); i < limit; i++) { string DWnem=ObjectName(i); string DW="downtrendline"+IntegerToString(i); // существует два названия трендовых линий, первое string DW2="uptrendline"+IntegerToString(i); // второеEstou tentando fazer um oscilador por volta de 0 a partir do preço fechado em uma janela separada, mas não consigo.
Ou seja, temos o preço Close[i], preciso que este preço vá acima/abaixo de zero como no MACD/CCI, em uma janela separada, mas por mais que eu tente, não posso fazê-lo sem valores adicionais como MA: agora eu consigo algo semelhante se eu subtrair o iClose-iMA, mas talvez haja variantes sem suavizar?
Ou na faixa 0,0...1,0 se não houver como chegar a zero...
O método de busca no método abaixo é ligeiramente diferente:
Adicione duas linhas de tendência brancas com nomes correspondentes ao gráfico e você o tem:
Não escreva funções quilométricas, divida o programa em breves "frases" - "tijolos". Os "tijolos" pequenos fazem os maiores, e os maiores fazem os ainda maiores. Veja, é possível.
Passe todos os seus dados para funcionar somente através de parâmetros.
Certifique-se de lidar com os erros se a função que está sendo chamada falhar e outras ações, se o erro for ignorado, terão sérias consequências. A grande maioria das falhas de programa (em geral) ocorre porque o tratamento de erros não é programado de forma alguma.
Por exemplo, se o ArrayResize(), chamado para ampliar o tamanho da matriz, retornou um erro, e o programador não o verificou e se refere à matriz supostamente ampliada, ocorre um erro que faz com que o programa MQL4 deixe de funcionar mais tarde. O Expert Advisor, por exemplo, deixa de negociar deixando posições em aberto. Não é ótimo?
Tente inserir "array[0] = 0;" antes do loop na função MassTrendNumber(), e certifique-se de que o script termina após o erro de overrun do array.
Estou tentando fazer um oscilador por volta de 0 a partir do preço fechado em uma janela separada, mas não consigo.
Ou seja, temos o preço Close[i], preciso que este preço vá acima/abaixo de zero como no MACD/CCI, em uma janela separada, mas por mais que eu tente, não posso fazê-lo sem valores adicionais como MA: agora eu consigo algo semelhante se eu subtrair o iClose-iMA, mas talvez haja variantes sem suavizar?
Ou na faixa 0,0...1,0 se não houver como chegar a zero...
https://www.mql5.com/ru/code/9340
https://www.mql5.com/ru/code/9340
É mais ou menos isso mesmo. Nada é novo neste mundo ))))
O método de busca abaixo é ligeiramente diferente:
Adicione duas linhas brancas de tendência com os nomes correspondentes ao gráfico e você o tem:
Não escreva funções quilométricas, divida o programa em frases curtas "-"tijolos". Os "tijolos" pequenos fazem os maiores, e os maiores fazem os ainda maiores. Veja, é possível.
Somente passe todos os dados para as funções através de parâmetros.
Certifique-se de lidar com erros se a função que está sendo chamada falhar, e a ação subseqüente, se o erro for ignorado, terá sérias conseqüências. A grande maioria das falhas de programa (em geral) ocorre porque o tratamento de erros não é programado de forma alguma.
Por exemplo, se o ArrayResize(), chamado para ampliar o tamanho da matriz, retornou um erro, e o programador não o verificou e se refere à matriz supostamente ampliada, ocorre um erro que faz com que o programa MQL4 deixe de funcionar mais tarde. O Expert Advisor, por exemplo, deixa de negociar deixando posições em aberto. Isso não é ótimo?
Tente inserir "array[0] = 0;" antes do loop no MassTrendNumber() e certifique-se de que o script termina após o erro de overrun do array.
Sim, muito obrigado, você está além das palavras como é útil, tão claro! Fantástico!!!