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

 
Pessoas. Por favor, ajude. Minha pergunta é a seguinte. Estou fazendo um EA baseado no indicador MACD. Na verdade, há duas condições para a abertura e duas condições para o fechamento. A primeira condição para fechar Comprar: o sinal é mais que 0, MACD é mais que 0, a primeira barra é menos que a segunda e a segunda é mais que a terceira. A segunda condição: o sinal é inferior a 0, MACD é inferior a 0, a primeira barra é inferior à segunda e a segunda é inferior à primeira. Mas há um mas.... Estas condições copiam completamente as condições do negócio para fechar a venda. Como separá-los? Por favor, informe. Tenho uma idéia de que o pico se repete no histograma, mas então como descrever que o pico já lá esteve? Como criar tal memória na EA?
 

Olá a todos, estou escrevendo um EA. A essência é esta - abre duas ordens de parada direcionadas de forma diferente quando uma delas aciona a segunda é apagada, mas no testador é apagada apenas a ordem de compra quando a tentativa de apagar o ticket de venda-topo sai 4108 erro incorreto. Por favor, ajude-me a entender isto. Inseriu uma função que apaga a ordem.

Obrigado de antemão!!!

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

Saudações. Por favor, informe como obter dados do indicador.

Precisa dos dados dos ícones vermelho e azul. Há alguns valores astronômicos nos respectivos amortecedores quando não há desenho. Limitei-os a um número de 10000. Parece funcionar, mas há sinais de pular. Como consertá-lo? Eis como eu estraguei tudo:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
se (PriceHigh1<10000) PriceHigh=PriceHigh1; caso contrário, PriceHigh=0;
if (PriceLow1<10000) PriceLow=PriceLow1; caso contrário, PriceLow=0;
Arquivos anexados:
 
Andrey Sokolov:

Saudações. Você pode me dizer como obter os dados corretos a partir do indicador.

Preciso dos dados dos ícones vermelho e azul. Há alguns valores astronômicos nos respectivos amortecedores quando não há desenho. Limitei-os a um número de 10000. Parece funcionar, mas há sinais de pular. Como consertá-lo? Eis como eu estraguei tudo:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
se (PriceHigh1<10000) PriceHigh=PriceHigh1; caso contrário, PriceHigh=0;
if (PriceLow1<10000) PriceLow=PriceLow1; caso contrário, PriceLow=0;

Ainda não investiguei o código, mas posso assumir que isso ajudará. Eu posso estar errado:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

Não investiguei o código, mas posso supor que ele ajudará. Eu poderia estar errado:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
Obrigado por não ter passado, mas isso não ajudou.
 
Andrey Sokolov:
Obrigado por não ter passado, mas isso não ajudou.
Tente também comparar com EMPTY_VALUE, uma vez que existem valores "astronômicos".
 
ArraySearchDouble() e EquationDirect() na versão antiga do mql 4. A nova versão tem algum análogo.
 
27311065:
ArraySearchDouble() e EquationDirect() na versão antiga do mql 4. E a nova versão tem quaisquer análogos.
Onde você já os viu na versão antiga? Estas são funções autoescritas. Não?
 
obrigado pela dica
 

Por favor, informe como melhor trabalhar com dados - dada uma série numérica, que será dividida em subgrupos, dependendo dos resultados do cálculo, esses grupos deverão ser armazenados em uma matriz, além disso, cada grupo terá dois ou mais indicadores por grupo (um grupo de números separadamente pertencerá à figura calculada). Os dados devem ter a seguinte aparência

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

e assim por diante

Razão: