[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 313
Como fazer para que quando um parâmetro de tendência for passado para esta função, que será responsável pela transferência da tendência principal assumida no momento, o cálculo se baseie neste parâmetro.
Isto é, se a tendência == para baixo, a função no loop era como agora, e se atendência == para cima, oAberto[i] e o Fechado[i] eram trocados no loop, para que as condições fossem observadas. Porque, nesse caso, o preço fechado da barra será menor que o preço aberto e a diferença será negativa.
bool trend;
if ((2*trend-1)*Δ=>const) cnt++;
if ((2*trend-1)*Δ<const) cnt=0;
Nesse caso2*trend-1toma valores +1 e -1, ou seja, se trend=verdadeiro será para cima e trend=falso será para baixo enquanto Δ será tomado respectivamente com sinal certo ou errado. Este é apenas um exemplo de onde a matemática substitui a matemática se.
gyfto, o roteiro de teste do kit está funcionando para você?
Eu o teria feito:
//в шапке#include <SharedMemoryMT4.mqh>//в инит. Создание и открытие не обязательно. Эти функции для ускорения работы с памятью.
MemoryCreate(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
// Вариант более быстрый, чем выше:
MemoryCreateProjection(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
//в деинит
MemoryCloseName(1, "", "ind");
//в старт вместо for(; i<Σ; i++) MemoryWriteInt(1, "", -1, "ind", i * 4, iBars(sn, 1));//ind[i]=iBars(sn, 1);
#property show_inputs#include <SharedMemoryMT4.mqh>externint x;//сколько секунд назад с данного момента прикрепления смотрим значения TOLHCVint init()
{
// MemoryOpen(1, "", -1, "ind"); // Это не требуется.return(0);
}
int start()
{
//MemoryReadInt(1, "", -1, "ind", i) это ind[i], GlobalVariableGet("final") это последний элемент в массиве, а ф-ла выглядит так: n=ind[final]-ind[final-x]+1int n=MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final"))-MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final")-x)+1;
Alert(TimeToStr(TimeCurrent(),TIME_SECONDS), ": Time=", TimeToStr(Time[n], TIME_SECONDS), ", Open=", Open[n], ", High=", High[n], ", Low=", Low[n], ", Close=", Close[n], ", Volume=", Volume[n]);
return(0);
}
O resto está correto. Não entrou apenas no protocolo de transferência de dados.
A criação, abertura e alocação de memória são opcionais. Estas funções são para agilizar o manuseio da memória. Para a mais simples operação de biblioteca, você só precisa das funções de leitura e escrita. A biblioteca fará o resto. Além disso, você pode ler antes de escrever. A memória no tamanho solicitado será alocada e a função retornará zero. Já que ainda não há nada lá.
Estou provavelmente prestes a ganhar um concurso para o erro mais idiota. Eu não tinha a variável ADXBars GV declarada, por isso escrevi "erro de método". Além disso, não houve alinhamento no limite intangível. Mas o alerta ainda emite todos os zeros, com ou sem alinhamento. Vou assistir ao vídeo e tentar descobrir por mim mesmo primeiro. Se eu falhar, tentaremos descobrir isso juntos.
Eu mesmo cometi o maldito erro. Na verdade, não há lógica alguma. Para abrir um pedido pendente de acordo comhttps://book.mql4.com/ru/appendix/limits, o preço de abertura deve ser abaixo de Bid (para venda) ou acima de Ask (para compra). Estou fazendo o que é necessário.
//+-------------------------------------------------------------------------------------+//| Открытие длинной позиции |//+-------------------------------------------------------------------------------------+bool OpenBuy()
{
int ticket = -1;
double OOP = High[1] + i_thresholdToUp * pt;
pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
if (ND(OOP) > Ask)
ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
else pr ("Ордер послать не удалось " + GetLastError());
if (ticket > 0)
{
lastBarTime = Time[0]; // На текущем баре все необходимые действия..// .. успешно выполненыreturn (true);
}
}
De vez em quando eu recebo 0 e 130 erros. Embora 130 seja um erro de parada errada, que pode acontecer durante a modificação, mas não durante a abertura do pedido.
Na captura de tela a situação e a impressão exibida usando a função pr.
Por favor, informe como se livrar deste bug. Estou realmente farto e cansado deste erro. Logicamente, não se trata de forma alguma do assunto.
Como fazer para que quando um parâmetro de tendência for passado para esta função, que será responsável pela transferência da tendência principal assumida no momento, o cálculo se baseie neste parâmetro.
Isto é, se a tendência == para baixo, a função no loop era como agora, e se atendência == para cima, o Aberto[i] e o Fechado[i] eram trocados no loop, para que as condições fossem observadas. Porque, nesse caso, o preço fechado da barra será menor que o preço aberto e a diferença será negativa.
Nesse caso2*trend-1toma valores +1 e -1, ou seja, se trend=verdadeiro será para cima e trend=falso será para baixo enquanto Δ será tomado respectivamente com sinal certo ou errado. Este é apenas um exemplo de onde a matemática substitui a matemática se.
gyfto, o roteiro de teste do kit está funcionando para você?
Eu o teria feito:
O resto está correto. Não entrou apenas no protocolo de transferência de dados.
A criação, abertura e alocação de memória são opcionais. Estas funções são para agilizar o manuseio da memória. Para a mais simples operação de biblioteca, você só precisa das funções de leitura e escrita. A biblioteca fará o resto. Além disso, você pode ler antes de escrever. A memória no tamanho solicitado será alocada e a função retornará zero. Já que ainda não há nada lá.
Zhunko, eu acho que não. Comentário() não sai, apenas escreve no log, no log:
Está tudo em uma linha, eu a mudei para cá para que não haja nenhuma largura anormal de tela aqui.
Zhunko, eu acho que não. Comentário() não sai, ele só escreve no log, no log:
Está tudo em uma linha, eu a mudei para cá para que não haja nenhuma largura anormal de tela aqui.
TarasBY artmedia70 hoz
Obrigado, senhores oficiais!
TarasBY artmedia70 hoz
Obrigado, senhores oficiais!
O quê, você se matou? :)))
Duas vezes 8-[
Olá! Por favor, me ajude neste tópico:
https://www.mql5.com/ru/forum/144634
Muito obrigado!
Eu mesmo cometi o maldito erro. Na verdade, não há lógica alguma. Para abrir um pedido pendente de acordo comhttps://book.mql4.com/ru/appendix/limits, o preço de abertura deve ser abaixo de Bid (para venda) ou acima de Ask (para compra). Estou fazendo o que é necessário.
De vez em quando eu recebo 0 e 130 erros. Embora 130 seja um erro de parada errada, que pode acontecer durante a modificação, mas não durante a abertura do pedido.
Na captura de tela a situação e a impressão exibida usando a função pr.
Por favor, informe como se livrar deste bug. Estou realmente farto e cansado deste erro. Logicamente, não se trata de forma alguma do assunto.