Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1077

 

Qual é a maneira correta de lidar com o erro: matriz fora do alcance em '... nesta situação quando se muda para #propriedade estrita ?



int limit=rates_total-prev_calculated;

ArrayResize(?,?,?);


for(i=0; i<limit; i++)
 {
  if(Буфер[i]-Буфер[i+1] < 0.0)  Буф2[i]=Буфер[i];
 }
 

Faça-o assim

int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;

Em vez de 1, você pode colocar qualquer número, exceto 0. Quanto maior o número, menos barras serão contadas quando o indicador começar.

E remover

ArrayResize(?,?,?);

é absolutamente inútil.

 
AlexeyVik:

Faça-o assim

Em vez de 1, você pode colocar qualquer número, exceto 0. Quanto maior o número, menos barras serão contadas quando o indicador começar.

E remover

é absolutamente inútil.

Agora eu entendo. Obrigado pelo conselho.
 
caras, há um comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); como faço para não marcar hoje 10:00, mas amanhã 10:00? dica por favor!
 
kocunyc89 : há um comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); como faço para definir não hoje 10:00 mas amanhã 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alerta("Now = ",dt, " Amanhã às 10:00 = ",t1);

 
LRA:
kocunyc89 : há um comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); como faço para definir não hoje 10:00 mas amanhã 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alerta("Now = ",dt, " Amanhã às 10:00 = ",t1);

Muito obrigado!
 
 if (Sob_01_0_1==1 && OrderSelect(ticket3_buy, SELECT_BY_TICKET)==true)
        {
         Alert("Sob_01_0_1=",Sob_01_0_1);
         Alert("здесь код перестает работать?"); 
                   
        if (OrderTakeProfit()>0 && OrderCloseTime()>0)
           {
           Alert("третий ордер на покупку закрыт, событие 011");
           bool close6=OrderClose(ticket3_sell, lot3, Ask, 20, clrRed);
                if (close6==true)
                   Alert("третий ордер на продажу закрыт");
                   else Alert("ошибка закрытия третьего ордера на продажу", GetLastError());
           bool close7=OrderClose(ticket2_sell, lot2, Ask, 20, clrRed);
                if (close7==true)
                   Alert("закрыт второй модифицированный ордер на продажу");
                   else Alert("ошибка закрытия второго модифицированного ордера на продажу ticket2_sell ", GetLastError());
               Sob_01_0_1++;
               Sob011++;
           }
         }
 
bobrush:
Boa noite, você pode me dizer qual é o erro. O código deixa de funcionar após oAlerta("aqui o código deixa de funcionar?");. Isto é, quando oticket3_buy fechacom lucro, então a declaração se não for executada.
 

Boa noite a todos. Pergunta de um boneco sobre as funções iLowest e iHighest. No início, eu queria usar estas funções para encontrar a pausa alta/baixa em minha EA e colocar uma ordem pendente. Tudo funciona com iLowest, mas iHighest não define ordens. No entanto, esta é uma palavra, já que eu já resolvi este problema de uma maneira diferente. Agora eu tenho que apagar uma ordem pendente se ela foi cancelada para abri-la a um novo preço. Eu tentei usar as funções acima novamente. Não há problema com iLowest e remoção de uma ordem de compra pendente; tenho problemas com iHighest remover uma ordem de venda - a ordem é removida quando uma condição ainda não foi atendida (o preço está abaixo do máximo), uma nova ordem é colocada, é removida novamente e assim por diante. Se o preço tiver ultrapassado o máximo, ele é apagado e um novo não é executado, mas assim que o preço atual tiver se movido abaixo do máximo anterior, a "briga" começa novamente.

As condições são escritas da seguinte maneira

if(iHighest(NULL, 0, MODE_HIGH, 70, 2) < iHigh(NULL, 0, 1)

{

DeleteOrders(OP_SELLSTOP, Magic);

}

if(iLowhest(NULL, 0, MODE_HIGH, 70, 2) > iLow(NULL, 0, 1)

{

DeleteOrders(OP_BUYSTOP, Magic);

}

(A função Delete é escrita separadamente). O que estou fazendo de errado, qual é o erro?

 
Desculpe pelo inconveniente, tudo foi resolvido. Escrevi a condição de eliminação no EA de forma ligeiramente diferente do que escrevi no fórum - não houve compensação em relação à barra atual.