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

 
Valeriy Yastremskiy:

A lógica é coxa, tudo está lá, tanto as matrizes para bilhetes quanto os tipos de pedidos. Somente não é preenchido quando os pedidos são abertos, e a matriz é zerada na função TicketLimit por algum motivo. À primeira vista, é o que parece.

Como é o xadrez? Falta um movimento. Vou tentar analisá-lo. Obrigado, Valery.

 

Como faço para acertar as estatísticas do bar?

Eu o fiz, conta o número corretamente, mas quando eu tento usar os dados eu recebo "0".

//---
   int i,limit;
   datetime Start=0;
   if((rates_total-prev_calculated-1)<=0)return(0);
   limit=rates_total-prev_calculated-1;
   for(i=limit; i>=0; i--) 
     {
      Label1Buffer[i]=open[i];
      Label2Buffer[i]=close[i];
      if(Start!=time[i])
        {
         a+=1;                                        // кол-во баров
         if(Label1Buffer[i] <Label2Buffer[i]) u+=1;   // восходящие бары
         if(Label1Buffer[i] >Label2Buffer[i]) d+=1;   // нисходящие бары
         if(Label1Buffer[i]==Label2Buffer[i]) b+=1;   // Дожи
         Start=time[i];
        }
      if(Start==time[i]&&a<=limit)
        {
         Print(i," / ",u," / ",d," / ",b," / ",a," / ",limit);//
        }
      if(a==limit) 
        {
         ObjectCreate(0,"STAT1",OBJ_TEXT,0,time[0],high[0]+750*Point);
         ObjectSetText("STAT1",d,8,"Arial",clrBlack);
         ObjectCreate(0,"STAT2",OBJ_TEXT,0,time[0],low[0]-250*Point);
         ObjectSetText("STAT2",u,8,"Arial",clrBlack);
         Print(d/u);
        }
     }
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 0
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 1 / 3041 / 2971 / 41 / 6053 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 2 / 3041 / 2970 / 41 / 6052 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 3 / 3041 / 2969 / 41 / 6051 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 4 / 3041 / 2968 / 41 / 6050 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 5 / 3041 / 2967 / 41 / 6049 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 6 / 3041 / 2966 / 41 / 6048 / 6053

Talvez haja uma maneira normal, mas eu "reinvento a roda")

Por favor, informe.

 
MakarFX:

Como faço para acertar as estatísticas do bar?

Eu o fiz, conta o número corretamente, mas quando eu tento usar os dados eu recebo "0".

Talvez haja uma maneira normal, mas eu "reinvento a roda")

Por favor, informe.

Parece que você tem todas as variáveis int e o resultado da divisão é inferior a 0. Portanto, 0;

Experimente:

Print((double)d/u);
 
Galim_V:

Como no xadrez? Falta um movimento. Vou tentar dar um sentido a isso. Obrigado, Valery.

в глобальной области
int ind=0, Ind=0;
......

 if(ParSar>MaxClose&&chekt==1){

    ticket=_OrderSend(NULL,OP_BUYSTOP,0.01,MaxClose+(spread*Point()),0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
  }
    }
    if(MinClose!=0){
   if(ParSar<MinClose&&chekt==1){
    _price= NormalizeDouble( MinClose-(spread*Point()),Digits);
    ticket=_OrderSend(NULL,OP_SELLSTOP,0.01,_price,0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
........

for(i=Ind,i<1,Ind--) // вместо Ind OrderTotal правильнее, если есть и другие ордера в терминале
{OrderSelect( _Tacket[i], SELECT_BY_TICKET )
проверки и действия
}
// Здесь запомнить тикет в массив _тикет и тип ордера тоже и запомнить последний индекс массива!!!

 //А потом в Ордер селект подставлять значение массива _тикет) Цикл по индексу массива _тикет от 1 до последнего индекса.
 
Mihail Matkovskij:

Parece que você tem todas as variáveis int e o resultado da divisão é inferior a 0. Portanto, 0;

Experimente:

Obrigado.
 
Mais uma vez obrigado por toda sua ajuda em meu projeto anterior.

Aqui está outra idéia para a próxima EA, talvez alguém já esteja familiarizado com a estratégia ORBO (Open Range Brake out)...

 

Você pode me dizer se existe uma função que simplifique esta definição para a abertura de um pedido?

if(Bid < OpenPrice && Bid > OpenPrice-10*Point)
if(Ask > OpenPrice && Ask < OpenPrice+10*Point)
A idéia é que uma ordem não seja aberta se o preço não se enquadrar nessa faixa
 
MakarFX:

Você pode me dizer se existe uma função que simplifique esta definição para a abertura de um pedido?

A idéia é que uma ordem não seja aberta se o preço não cair nessa faixa

Desenhe-o no papel.

OpenPrice _________________________

Licitação _________________________

OpenPrice-10*_Point________________________


Pela foto você pode ver que OpenPrice - Bid não deve ser superior a 10*_Ponto

 
Alexey Viktorov:

Bem, desenhe-o no papel.

OpenPrice _________________________

Licitação _________________________

OpenPrice-10*_Point________________________


Pela foto você pode ver que OpenPrice - Bid não deve ser mais do que 10*_Ponto

diferença de módulo. Sem módulo somente a zona superior cai na condição. | OpenPrice - Bid |> 10*_Point opening condition

 
Alexey Viktorov:

Bem, desenhe-o no papel.

OpenPrice _________________________

Licitação _________________________

OpenPrice-10*_Point________________________


Pela foto você pode ver que OpenPrice - Bid não deve ser superior a 10*_Ponto

Você me surpreende.


Razão: