2) Vi 110% e 70% a saltar constantemente e fortemente, ainda não o contei. Talvez tenha algo a ver com carga, mas não me parece que tenha. Abri pequenas coisas e a alavanca nas especificações é a mesma e os saldos são quase os mesmos.
direcção que declarou como int. É isso que se obtém. Ultimamente, muitas funções têm-se tornado bastante minuciosas em relação aos valores. É melhor assegurar com uma conversão. Eu próprio tenho enfrentado tais problemas recentemente. Não tive problemas antes. Mas foi-me pedido para corrigir o código e ele não quis funcionar correctamente até o lançar para o dobro.
Konstantin Nikitin: Tem a direcção declarada como int. É isso que se obtém. Ultimamente, muitas funções têm-se tornado bastante minuciosas em relação aos valores. É melhor tratar da conversão. Eu próprio tenho enfrentado tais problemas recentemente. Não tive problemas antes. Mas foi-me pedido para corrigir o código e ele não quis funcionar correctamente até o trazer para o dobro.
Sim, int. Mas é multiplicação - em números inteiros é também 30*1=30. Estou 100% certo de que há algumas construções atrás também funcionava bem na segunda variante, já que estas 30 foram determinadas pela colheita...
parece ser outra "característica" do MT5. Pelo menos o bloco é decorativo, mas se algures como o autolot ou o stoploss - a tristeza pode acontecer - muitas vezes inverto multiplicando por -1...
Konstantin tem razão, porquê colocar int onde se espera o dobro... Isto não é uma característica do mql5, são apenas algumas tentativas de se habituar à encomenda.
PlotIndexSetInteger(0,PLOT_ARROW,code);
//--- установим пустое значение PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
SetIndexBuffer(0,Buf1,INDICATOR_DATA);
PlotIndexSetString(0, PLOT_LABEL, "Break");
//----PlotIndexSetInteger(1,PLOT_ARROW,code);
//--- установим пустое значение PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
SetIndexBuffer(1,Buf2,INDICATOR_CALCULATIONS);
PlotIndexSetString(1, PLOT_LABEL, "Break");
Em OnCalculate(), o código define uma condição - a variável up.
Se for verdade, então o seguinte código é executado
i=nPoint1; BreakUp=false; BreakDn=false;
while(i>=0 && BreakUp==false && BreakDn==false)
{
Print("i ",i);
tmp=iHigh(NULL,0,nPoint1)-Speed*(nPoint1-i);
tmp1=iHigh(NULL,0,nPoint1)-Speed*(nPoint1-i)-resultL;
if(NormalizeDouble(iLow(NULL,0,i),Digits())<NormalizeDouble(tmp1,Digits())
&& NormalizeDouble(iHigh(NULL,0,i),Digits())>NormalizeDouble(tmp,Digits()))
{ size=ArraySize(Buf1);
Print("size ",size);
BreakUp=true;
if(channelbreak) Buf1[i]=tmp;
Comm="\nПробой вверх на уровне " + DoubleToString(tmp,Digits());
} elseif(NormalizeDouble(iLow(NULL,0,i),Digits())<NormalizeDouble(tmp1,Digits()))
{ size=ArraySize(Buf1);
Print("size ",size);
BreakDn=true;
if(channelbreak) Buf1[i]=tmp1;
Comm="\nПробой вниз на уровне "+DoubleToString(tmp1,Digits());
} elseif(NormalizeDouble(iHigh(NULL,0,i),Digits())>NormalizeDouble(tmp,Digits()))
{ size=ArraySize(Buf1);
Print("size ",size);
BreakUp=true;
if(channelbreak) Buf1[i]=tmp;
Comm="\nПробой вверх на уровне "+DoubleToString(tmp,Digits());
} else
Comm="\nПробоя канала нет"; //i--;
} } Ошибка происходит при входе в цикл while при присвоении значения переменной значению буфера. Проверка на
размер массива буфера выдает ноль. Т.е. буфер не инициализируется. Всю голову сломал, не могу понять почему. В чем затык?
Por favor esclareça se é normal que durante a depuração do indicador, os valores deste indicador não sejam visíveis no gráfico aberto? Isto é, por exemplo, abrimos o MACD no depurador. Estabelecemos um ponto de ruptura no ciclo de escrita de valores nos amortecedores. Após a escrita do valor ChartRedraw(). Espero ver este valor no gráfico imediatamente após o valor ter sido escrito, mas só vejo uma janela vazia.
Obrigado.
Encontrei esta outra coisa que talvez 1)seja um corretor de bloqueio.
https://www.mql5.com/ru/forum/38456/page127
https://www.mql5.com/ru/forum/304679
2) Vi 110% e 70% a saltar constantemente e fortemente, ainda não o contei. Talvez tenha algo a ver com carga, mas não me parece que tenha. Abri pequenas coisas e a alavanca nas especificações é a mesma e os saldos são quase os mesmos.
Um fio comum sobre os sinais é este
https://www.mql5.com/ru/forum/10603/page394
Para informação.
O Bug MT5 (build 2390) conta incorrectamente os suportes encaracolados na descrição da estrutura da classe.
Obrigado pelo correio, fixado
é assim que funciona:
por isso não (sempre 0)
direcção -1; +1; 0
é assim que funciona:
por isso não (sempre 0)
direcção -1; +1; 0
E assim
E desta forma.
também funciona, a segunda opção não funciona
Eu próprio tenho enfrentado tais problemas recentemente. Não tive problemas antes. Mas foi-me pedido para corrigir o código e ele não quis funcionar correctamente até o lançar para o dobro.
Tem a direcção declarada como int. É isso que se obtém. Ultimamente, muitas funções têm-se tornado bastante minuciosas em relação aos valores. É melhor tratar da conversão.
Eu próprio tenho enfrentado tais problemas recentemente. Não tive problemas antes. Mas foi-me pedido para corrigir o código e ele não quis funcionar correctamente até o trazer para o dobro.
Sim, int. Mas é multiplicação - em números inteiros é também 30*1=30. Estou 100% certo de que há algumas construções atrás também funcionava bem na segunda variante, já que estas 30 foram determinadas pela colheita...
parece ser outra "característica" do MT5. Pelo menos o bloco é decorativo, mas se algures como o autolot ou o stoploss - a tristeza pode acontecer - muitas vezes inverto multiplicando por -1...
Obrigado, vou usar outra muleta...
também funciona, a segunda opção não funciona.
Ahh. Copiei descuidadamente o código errado.
Konstantin tem razão, porquê colocar int onde se espera o dobro... Isto não é uma característica do mql5, são apenas algumas tentativas de se habituar à encomenda.
Por favor, ajudem.
O indicador está a ser expulso com uma matriz fora do intervalo de erro.
No código, defini os amortecedores
Variáveis globais declaradas
No Init() defini as propriedades
Em OnCalculate(), o código define uma condição - a variável up.
Se for verdade, então o seguinte código é executado
Por favor esclareça se é normal que durante a depuração do indicador, os valores deste indicador não sejam visíveis no gráfico aberto? Isto é, por exemplo, abrimos o MACD no depurador. Estabelecemos um ponto de ruptura no ciclo de escrita de valores nos amortecedores. Após a escrita do valor ChartRedraw(). Espero ver este valor no gráfico imediatamente após o valor ter sido escrito, mas só vejo uma janela vazia.
Construir 2380 x64.