orderend() ajuda na codificação... - página 3

 
mugged:

Raptor, se você não se importa... como você estava planejando verificar a conectividade via php?

O que eu tinha em mente era isto:

O EA enviará um pequeno arquivo via FTP a cada 2 minutos (pode ser 5 minutos, 30 minutos, qualquer que seja sua tolerância . . * ) para meu servidor Web hospedeiro, rodando nesse servidor Web será um trabalho Cron que procura o arquivo recebido via FTP e verifica se ele foi atualizado nos últimos 2 minutos * se ele não me enviou um e-mail de alerta.

 
SDC:
Sempre fiz dessa forma porque é assim que eles fazem nos exemplos do livro MQL4, mas agora estou pensando que isso não parece correto, certamente se você abrir no preço de venda você quer ter lucro a esse preço + sua quantidade de TP, e você quer parar por esse preço - sua quantidade de SL ?

Se você quiser parar no preço -x. O que isso significa? Você quer parar quando a Licitação atingir o preço x (ou quando a Licitação atingir o preço).

Se você quiser um SL de 3 pips em uma compra e usar o Ask - 3*pips2dbl. O momento em que você abre você está agora a 1 pip de distância (assumindo um spread de 2 pip.) Novamente depende de sua definição

Se você quer dizer quando o Bid alcança o preço x, em uma compra seu SL seria preço x. Mas em um Sell você ainda quer parar no Pricex, mas o preço de ativação deve ser relativo ao ask. price-x+spread.

O que você faz quando o spread muda? Em uma Venda, isso significa que para fechar na mesma posição (uma Licitação) você deve modificar o TP/SL. Depende de sua definição.

O que eu faço é fazer TODOS os cálculos relativos ao Bid, e ajustar no final.

//want to open at P
if (OP == OP_BUY)  double bid.to.open = Ask-Bid, bid.to.stop = 0,       DIR=+1.;
else                      bid.to.open = 0;       bid.to.stop = Ask-Bid; DIR=-1.;
:
if ((Bid - P) *DIR >= 0.){ // Time to open
  double openPrice = Bid + bid.to.open,
  OrderSend(NULL, OP, v, Bid+bid.to.open...)
 
WHRoeder:

Minha abordagem é apenas relatar o erro e retornar.

Minha preocupação é que eu tenho um pedido aberto com SL & TP = 0 e minha EA não tem conexão com a Internet . . . . Prefiro ser alertado para esta possibilidade mesmo que meu EA esteja em um VPS ou em meu próprio servidor colocado.
 

Não discordando disso, eu disse "relatar o erro".

Não há nada que a EA possa fazer com isConnected()==falso, a não ser esperar.

Não há nada que a EA possa fazer com ERR_TRADE_TIMEOUT a não ser esperar e depois ver.

Retornar do início e esperar pelo próximo tick e depois recuperar é o mais fácil.

 
WHRoeder:
Não discordando disso, eu disse "informe o erro". Não há nada que a EA possa fazer com isConnected()==falso ou ERR_TRADE_TIMEOUT, mas espere pelo próximo tick e depois veja.
Claro, eu só estava me certificando de que você entendesse onde eu queria chegar, em algum momento eu gostaria que um cão de guarda me dissesse que algo não está certo ... daí o trabalho de cron e a idéia do PHP.
 
mugged:

Raptor, se você não se importa... como você estava planejando verificar a conectividade via php?

Talvez algo como isto . . .

<?php
$to = "recipient@example.com";
$subject = "EA is silent";
$body = "EA has stopped responding . . . ";

$file = 'somefile.txt';
$filetime = filemtime($file);
$timetwomins = time()-120; // two mins ago

if ($filetime < $timetwomins) {
   mail($to, $subject, $body)
}
?>
 

Acho que o que farei é ter um alerta por e-mail imediatamente antes do acionamento do pedido e depois outro que confirme que a parada foi alterada.

Portanto, se eu receber o primeiro e o e-mail de modificação correspondente não for enviado, então eu sei que há problemas.

 
mugged:

Acho que o que farei é ter um alerta por e-mail imediatamente antes do acionamento do pedido e depois outro que confirme que a parada foi alterada.

Portanto, se eu receber o primeiro e o e-mail de modificação correspondente não for enviado, então eu sei que há problemas.

acho que enviar um correio após o acionamento do pedido & outro confirma que a parada foi alterada
 
qjol:
acho que enviar um e-mail após o acionamento do pedido & outro confirma que a parada foi alterada

Minha única preocupação em enviar o e-mail depois é o que se o pedido dispara e então sua conexão morre antes que o e-mail possa ser enviado...

A outra forma de receber o primeiro correio dizendo que algo está prestes a disparar, e depois o segundo confirmando a modificação da parada.

 
RaptorUK:

Talvez algo como isto . . .


Raptor, eu gosto desta idéia. Pensei sobre isso no passado, mas não tinha idéia de como fazer isso.

O que eu tenho agora é apenas a EA enviando um e-mail a cada hora confirmando que ela está funcionando. Eu precisaria apenas de alguma forma de verificar esse e-mail e se ele não chegar, então envie um aviso. A mesma idéia, uma abordagem diferente, suponho.

Razão: