Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 388

 

Boa tarde a todos.

Estou aprendendo sobre arrays.

Você pode me dizer como remover o valor que eu preciso de uma matriz?

Pelo que entendi, após a eliminação de um valor, o tamanho da matriz será reduzido e provavelmente

o novo valor do tamanho da matriz também precisará ser especificado.

Ainda não encontrei a função que apagaria um valor de matriz no Manual de Referência. Você pode me mostrar como é todo o procedimento?

para que, após a eliminação, a matriz continue a funcionar.

Obrigado.

Aqui está um exemplo concreto do que eu preciso.

int start()                                             
{

double mass[3]=
{
1.2414,
1.2438,
1.2874
};

double value =  Bid ;
int S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);

if ( Bid == mass[S]) //Bid = 1.2874
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
// после того как открылся ордер по цене элемента массива с индексом 2 (1.2874)
// КАК УДАЛИТЬ ИЗ МАССИВА ЗНАЧЕНИЕ 1.2874 так что бы массив продолжил функционировать дальше.
 
ANDREY:

Boa tarde a todos.

Estou aprendendo sobre arrays.

Você pode me dizer como remover o valor que eu preciso de uma matriz?

Pelo que entendi, após a eliminação de um valor, o tamanho da matriz será reduzido e provavelmente

O novo tamanho da matriz também precisará ser especificado.

Ainda não encontrei a função que apagaria um valor de matriz no Manual de Referência. Por favor, mostre-me como é todo o procedimento. para apagar um valor de matriz,

Para que, após a eliminação, a matriz continue a funcionar.

Obrigado.

Aqui está um exemplo concreto do que eu preciso.

Você pode copiar o array "em si mesmo" e depois redimensionar o array diminuindo-o em 1. Um exemplo com a eliminação do índice zero da matriz e o preenchimento do último, mas você pode copiar de qualquer índice qualquer número de elementos.

A segunda opção é sobregravar o último valor no espaço "liberado" e também reduzir o tamanho da matriz.

Подскажите про массивы
Подскажите про массивы
  • 2017.12.03
  • www.mql5.com
Я только учусь и на массивах попал в засаду: пытаюсь написать скрипт в котором массив данных будет перезаписываться...
 
Alexey Viktorov:

Você pode copiar um array "para si mesmo" e então redimensionar o array diminuindo-o em 1. Um exemplo é apagar o índice zero da matriz e preencher o último, mas a cópia pode ser feita a partir de qualquer índice com qualquer número de elementos.

A segunda opção é sobregravar o último valor no espaço "liberado" e também reduzir o tamanho da matriz.

Muito obrigado pela dica.
 

Olá!!! Explique-me, mesmo não sendo um principiante, mas estou terrivelmente doente de um único problema. Eu estou chamando o indicador a partir do indicador. Quando recebo uma nova barra com um valor, recebo valores completamente diferentes quando a recompilo imediatamente. O atraso no cálculo do indicador por tempo não leva a nada. Como resultado, não há nenhuma função automática. A pergunta. PORQUÊ???? Estou tão exausto que estou exausto. O que é esta incrível falha... Estou farto disso...

 

Olá! não posso resolver o problema de mover os níveis de sinal se o preço for além deles. No momento da compilação tudo está bem, mas no testador, quando a condição "adequada" chega, nada muda. Por favor, informe o que está errado com a condição de o preço ir além dos níveis de sinal?

//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
 ObjectCreate("UrO",OBJ_HLINE,0,0,price);
 ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
 ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
 ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
 ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
 ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
//--------------------------------------------------------------------------
if((Bid>=priceA) ||(Bid<=priceB)){                                                                 //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));  
                                                                                             

O nível"UrA" ou"UrB" deve ser movido para o máximo da última vela em m15, mas isso não acontece. Alguém sabe por quê?

 
vikzip:

Olá! não posso resolver o problema de mover os níveis de sinal se o preço for além deles. No momento da compilação tudo está bem, mas no testador, quando a condição "adequada" chega, nada muda. Por favor, informe o que está errado com a condição de o preço ir além dos níveis de sinal?

O nível"UrA" ou"UrB" deve ser movido para o máximo da última vela em m15, mas isso não acontece. Alguém sabe por quê?


O que há de errado com ObjectMove()?

 
Vitalie Postolache:

O que há de errado com ObjectMove()?


Obrigado!!!)

 
Vitalie Postolache:

O que há de errado com ObjectMove()?


A função é ótima! Mas a condição não é cumprida por alguma razão! Alguém sabe o motivo?

  double price;                                                                                    //цена сердцевины
  double priceA;                                                                                   //цена верхнего сигнального уровня
  double priceB;                                                                                   //цена нижнего сигнального уровня
//+------------------------------------------------------------------------------------------------------------------------------------------------------------
int start(){
//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------

price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                                                                                                                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 //---------------------------------------------------------------------------------------------------------------------------------------------------------------
if((Bid<=priceB)||(Bid>=priceA)){                                                                 //если цена вышла за одну из ГРАНИЦ
  ObjectsDeleteAll();                                                                             //для примера удаляю все объекты, но этого не происходит!
  }                                                                                               //Почему ведь очевидно на тестере цена выходит за пределы, но ни чего не происходит???
return(0);
}
Alguém pode explicar qual é o erro, por favor?
 

Olá!

Estou apenas começando a aprender MQL4. Não consigo entender porque o script ignora o botão"Permitir negociação automática" no MT4 (ver. 4.0 build 1090)

Eu não consigo lidar com este tipo de construção:

int start()
{

     Alert("Привет!");

return;
}

Eu não aperto o botão, mas ele ainda mostra uma janela com alerta. Quando eu faço um roteiro das ordens, ele as dispara em cada tic-tac sem parar, quer o botão Autotrade seja pressionado ou não.


Eu tentei uma tal construção:


int start()
{

 while(!IsStopped())
    {
    
      Alert("Привет!");

     if(!IsExpertEnabled()) break;
    }


return;
}

No início parecia funcionar, mas no processo de complicar o roteiro também parou de funcionar...

Não sei se deve ser assim, mas não sinto a fluência do trabalho da EA: quando mudo a EA, a velha continua trabalhando como se estivesse em segundo plano, mas talvez eu ainda não tenha percebido.

 
Dimitry-1983:

Olá!

Estou apenas começando a aprender MQL4. Não consigo entender porque o script ignora o botão"Permitir negociação automática" no MT4 (ver. 4.0 build 1090)

Eu não consigo lidar com este tipo de construção:

Eu não aperto o botão, mas ele ainda mostra uma janela com alerta. Quando eu estabeleço uma ordem em um script, ela é disparada em cada tique sem parar, quer o botão Autotrade seja pressionado ou não.


Eu tentei uma tal construção:


No início parecia funcionar, mas no processo de complicar o roteiro também parou de funcionar...

Não sei se deve ser assim, mas não sinto a fluência do trabalho da EA: quando mudo a EA, a velha continua trabalhando como se estivesse em segundo plano, mas talvez eu ainda não tenha percebido.

Este botão só afeta as funções comerciais. Tudo o resto continua funcionando como deveria.
Razão: