[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 53

 

Tenho notado tal nuance quando receito uma impressão em minha EA, ou seja:

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);

Imprimir ("+++++++++++++", Para cima);

o consultor especializado mostra o seguinte resultado - ++++++++++++++ 2147483647. Posso ver o mesmo número para buffers para cima e para baixo também. Por favor, informe que tipo de código é este? E como "obter" o valor da Ikastom exatamente quando a seta aparece?

 

Peço um pouco de ajuda de pessoas com conhecimento: por favor, aconselhe o código correto para criar um Expert Advisor/Utility cujo algoritmo é o seguinte:

- A abertura de uma dupla transação em UMA direção (lotes 0,1 e 0,1) é feita no momento de cruzar baixa (venda)/alta (compra) da última vela formada no gráfico/tempo atual com uma parada próxima à alta / baixa da vela, em cujo cruzamento foi aberta a transação e colocada no mesmo ponto da ordem pendente uma dupla transação em uma direção com lotes, tais como 0,2 e 0,1.

 

Pergunta:

Existe um código

int start()

se (H===TimeHour(TimeCurrent())) && M===TimeMinute(TimeCurrent()) && S===TimeSeconds(TimeCurrent())

{+ algumas condições

Em seguida, o pedido é aberto

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alerta ("Buy order opened ",Ticket);

return;}

Mas se neste momento não há nenhum sinal, ele não é acionado.

Mas se eu lhe der mais tempo para pensar que pode abrir várias ordens.

Eu deveria ter apenas um pedido sem prestar atenção aos pedidos já abertos.

Por favor, informe o que fazer

 
v2812:

Tenho notado tal nuance quando receito uma impressão em minha EA, ou seja:

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);

Imprimir ("+++++++++++++", Para cima);

o consultor especializado mostra o seguinte resultado - ++++++++++++++ 2147483647. Posso ver o mesmo número para buffers para cima e para baixo também. Por favor, informe que tipo de código é este? E como "obter" o valor da Ikastom exatamente quando a seta aparece?


Tente passar os valores indicadores não através do iCustom(), mas através das variáveis globais do terminal. Estes são os que você pode ver por F3. A questão é que não é uma situação incomum quando se trata da única forma normal de transmissão de dados. Já tive casos desses.

É bem possível que em seu indicador alguns tipos de flechas sejam desenhadas através do buffer do indicador, enquanto outras são criadas como objetos. Esta é a única razão pela qual pode não haver preços de setas na janela de dados - os dados são emitidos para esta janela a partir dos buffers indicadores.

 
palesandr:

Pergunta:

Existe um código

int start()

se (H===TimeHour(TimeCurrent())) && M===TimeMinute(TimeCurrent()) && S===TimeSeconds(TimeCurrent())

{+ algumas condições

Em seguida, o pedido é aberto

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alerta ("Buy order opened ",Ticket);

return;}

Mas se neste momento não há nenhum sinal, ele não é acionado.

Mas se eu lhe der mais tempo para pensar que pode abrir várias ordens.

Eu deveria ter apenas um pedido sem prestar atenção aos pedidos já abertos.

Por favor, informe o que fazer


O código EA é acionado SOMENTE quando chega um novo tick. Mais de um pedido é aberto porque no próximo sinal de configuração também é verdadeiro e não há verificação do número de pedidos. Precisamos recalcular as ordens.
 
drknn:


Tente passar valores indicadores não através de iCustom(), mas através de variáveis de nível terminal global. Estes são os que podem ser vistos pela F3. A questão é que não é uma situação incomum quando se trata da única forma normal de transmissão de dados. Eu já tive tais situações.

É possível que em seu indicador alguns tipos de seta sejam desenhados através de um buffer de indicadores e outros sejam criados como objetos. Esta é a única razão pela qual pode não haver preços definidos por seta na janela de dados - os dados são enviados para esta janela a partir de buffers indicadores.


Muito obrigado! Vou agora tentar prescrever, como você disse.
 
palesandr:
Mas se não houver nenhum tique neste ponto, ele não é acionado

e se você der mais tempo para pensar, pode abrir várias ordens.

Mas eu só preciso de um e não quero que ele preste atenção aos pedidos que já estão abertos.

Você pode me dizer o que fazer
?


1. datatime global last_dt;


2. fazer o tempo correto

datetime dt=StrToTime(H+": "+M+": "+S);


3.

se (TimeCurrent()>=dt && last_dt<dt) // a hora certa chegou e é o dia seguinte

{

// abrir o pedido

se (bilhete>0) last_dt=TimeCurrent(); // lembre-se da hora de abertura

}

 
v2812:

então a EA dá o seguinte resultado - ++++++++++++++ 2147483647. E o mesmo número tanto para os amortecedores para cima como para baixo.

2147483647 - esta é a constante EMPTY_VALUE
 

Eu entendo isso.

Preciso ser mais específico sobre o recálculo de pedidos. Talvez um exemplo (em forma de código) ou um link .

Eu já tentei assim

if (Ticket > 0)
Alerta ("Opened Buy order ",Ticket);

sono (10000)
retorno;}

falhou por alguma razão

drknn:

O código EA é acionado SOMENTE quando um novo tick chega. O pedido abre mais de um porque no próximo tick o sinal definido também é verdadeiro e não há verificação do número de pedidos. Precisamos recalcular as ordens.
 

Quero que o software ignore a data, apenas a hora é importante

Seu conselho é útil neste caso?

sergeev:


1. datatime global last_dt;


2. Faça o tempo correto

datetime dt=StrToTime(H+": "+M+": "+S);


3.

se (TimeCurrent()>=dt && last_dt<dt) // é o momento certo e é o dia seguinte

{

// pedido aberto

se (bilhete>0) last_dt=TimeCurrent(); // lembre-se do tempo de abertura

}