Camaradas. Decidi, em nome da prática, fazer uma simples exibição de absorção. Mas no final houve um problema que se eu mudar o cronograma no gráfico e voltar ao cronograma com a absorção, o alerta é acionado novamente. Encontrei uma opção para alertar apenas uma vez por barra, mas novamente tudo é reinicializado quando troco os intervalos de tempo.
if (Bars != ThisBarTrade ) {
ThisBarTrade = Bars; // ensure only one trade opportunity per bar// Trade logic goes here
}
Aqui está o próprio código, sem desenhos gráficos, apenas lógica. Como corrigi-lo?
especialmente o ticket-3, TK trade é uma espécie de preço médio entre vários pedidos ) mas como separar a compra de tickets da venda de tickets ? para que eu possa atender a um pedido que foi aberto há 3 baías atrás ) Também para venda
escrevi um programa que abre um modelo (com os indicadores e o objeto gráfico de que preciso) na inicialização, depois analisa os dados e as trocas. quando eu apenas o executo em um gráfico, tudo funciona bem. quando o executo em um testador, ele só funciona quando visualizado. entendo que o modelo só pode ser carregado em um gráfico visualmente aberto... por isso não funciona em modo de teste normal, pois só funciona na tabela sem carregar o modelo... E quanto à otimização? tenho alguns parâmetros, e de alguma forma é muito pouco razoável executar cada opção manualmente com a visualização.
ajuda plz)) como você pode resolver o problema com a otimização e o modelo?
Mas eu não escrevi em MQL, mas formalmente, esse é o problema (:
E como poderia ser determinado?
Como o número de valores é muito limitado, podemos verificá-lo com uma força bruta direta:
#property strict/******************************************************************************/void fun1(intconst A) {
Print("fun1()");
if (A == 0 || A == 1) {
Print("fun1 do!");
}
}
/******************************************************************************/void fun2(intconst A) {
Print("fun2()");
if (A != 2) {
Print("fun2 do!");
}
}
/******************************************************************************/void Гарантия_0_1_2(intconst A) {
switch (A) {
case0:
case1:
case2:
fun1(A);
fun2(A);
break;
default:
Print("Не соблюдены условия (теоремы)");
}
}
/******************************************************************************/voidOnStart() {
for (int A = 0, limit = 4; A < limit; A++) {
Print("Проверяем для A = ", A);
Гарантия_0_1_2(A);
}
}
Aqui nós conseguimos:
22:52:38 Script 3 EURUSDm,H1: loaded successfully
22:52:383 EURUSDm,H1: initialized
22:52:383 EURUSDm,H1: Проверяем для A = 022:52:383 EURUSDm,H1: fun1()
22:52:383 EURUSDm,H1: fun1 do!
22:52:383 EURUSDm,H1: fun2()
22:52:383 EURUSDm,H1: fun2 do!
22:52:383 EURUSDm,H1: Проверяем для A = 122:52:383 EURUSDm,H1: fun1()
22:52:383 EURUSDm,H1: fun1 do!
22:52:383 EURUSDm,H1: fun2()
22:52:383 EURUSDm,H1: fun2 do!
22:52:383 EURUSDm,H1: Проверяем для A = 222:52:383 EURUSDm,H1: fun1()
22:52:383 EURUSDm,H1: fun2()
22:52:383 EURUSDm,H1: Проверяем для A = 322:52:383 EURUSDm,H1: Не соблюдены условия (теоремы)
22:52:383 EURUSDm,H1: uninit reason 022:52:38 Script 3 EURUSDm,H1: removed
Acontece que eles são iguais. Se não houvesse 3, mas, digamos, 3 milhões de valores, você ainda poderia verificar na máquina - devolver os resultados das funções e compará-los. Se nenhuma diferença for encontrada para toda a gama, então eles são iguais.
Se for usada uma expressão em vez de uma variável, por exemplo, uma chamada de função, então a equivalência torna-se "equivalência com reservas" devido ao curto circuito de cálculo das expressões lógicas.
A segunda não: quero que comece a contar com cada barra depois de "linha1 > 0".
Isso é basicamente o que eu fiz em meu consultor especializado:
if (line1 > 0 && time ==0){time=Time[i+0];}//сработало предварительное условие входа, записываем времяif (time > 0)shift=iBarShift(Symbol(),Period(),i+time);//находим индекс бара
E depois de "turno >= shet", a condição de desenho é acionada.
Eu mudo os parâmetros externos da variável "shet", não há mudança no indicador.
Bem, alguém já tem um RSI iMAOnArray pronto para usar?
Posso ver porque ninguém respondeu com muita "ajuda".
Bem, alguém já tem um RSI iMAOnArray pronto para usar?
há um na kodobase, você só tem que procurá-lo
Você pode me dizer como separar o bilhete para comprar e vender separadamente?
ticket=OrderSend("EURUSD",OP_SELLL,SellLot,Bid,3,0,0,",MAGICMA,0,Red);
senão
{
OrderSelect(ticket-3,SELECT_BY_POS,MODE_TRADES);
OrderClose(ticket-3,SellLot,Ask,3,Red);
}
especialmente o ticket-3, TK trade é uma espécie de preço médio entre vários pedidos ) mas como separar a compra de tickets da venda de tickets ? para que eu possa atender a um pedido que foi aberto há 3 baías atrás ) Também para venda
Olá amigos!) Eu tenho um problema desses:
escrevi um programa que abre um modelo (com os indicadores e o objeto gráfico de que preciso) na inicialização, depois analisa os dados e as trocas. quando eu apenas o executo em um gráfico, tudo funciona bem. quando o executo em um testador, ele só funciona quando visualizado. entendo que o modelo só pode ser carregado em um gráfico visualmente aberto... por isso não funciona em modo de teste normal, pois só funciona na tabela sem carregar o modelo... E quanto à otimização? tenho alguns parâmetros, e de alguma forma é muito pouco razoável executar cada opção manualmente com a visualização.
ajuda plz)) como você pode resolver o problema com a otimização e o modelo?
Pontuação ))))
Mas eu não escrevi em MQL, mas formalmente, esse é o problema (:
E como poderia ser determinado?
Como o número de valores é muito limitado, podemos verificá-lo com uma força bruta direta:
Aqui nós conseguimos:
Acontece que eles são iguais. Se não houvesse 3, mas, digamos, 3 milhões de valores, você ainda poderia verificar na máquina - devolver os resultados das funções e compará-los. Se nenhuma diferença for encontrada para toda a gama, então eles são iguais.
Se for usada uma expressão em vez de uma variável, por exemplo, uma chamada de função, então a equivalência torna-se "equivalência com reservas" devido ao curto circuito de cálculo das expressões lógicas.
Olá a todos!
Fabricou um indicador baseado em outro indicador.
O primeiro tampão conta como deveria.
A segunda não: quero que comece a contar com cada barra depois de "linha1 > 0".
Isso é basicamente o que eu fiz em meu consultor especializado:
E depois de "turno >= shet", a condição de desenho é acionada.
Eu mudo os parâmetros externos da variável "shet", não há mudança no indicador.
Qual pode ser o problema?
Código indicador:
Olá a todos!
Fabricou um indicador baseado em outro indicador.
O primeiro tampão conta como deveria.
A segunda não: quero que comece a contar com cada barra depois de "linha1 > 0".
Isso é basicamente o que eu fiz em meu consultor especializado:
E depois de "turno >= shet", a condição de desenho é acionada.
Eu mudo os parâmetros externos da variável "shet", não há mudança no indicador.
Qual pode ser o problema?
Código indicador:
Há alguma confusão em acrescentar 0, mas tente desta forma:
Boa tarde.
No terminal, se eu clicar duas vezes na linha de pedido, abre-se uma janela de modificação.
Mas se o preço de abertura de um pedido e o lucro de outro pedido estiverem em linha, o último pedido modificado se abre.
Por favor, informe se o mql4 tem uma função para abrir a janela de modificação do pedido, clicando na ordem necessária no indicador?