aide à la codification de ordersend()... - page 3

 
mugged:

Raptor, si tu veux bien... comment prévoyais-tu de vérifier la connectivité via php ?

Ce que j'avais en tête était le suivant :

L'EA enverra un petit fichier par FTP toutes les 2 minutes (cela pourrait être 5 minutes, 30 minutes, selon votre tolérance... *) à mon serveur Web hébergé. Sur ce serveur Web, une tâche Cron recherchera le fichier reçu par FTP et vérifiera s'il a été mis à jour au cours des 2 dernières minutes * si ce n'est pas le cas, elle m'enverra un e-mail d'alerte.

 
SDC:
Je l'ai toujours fait de cette façon parce que c'est ainsi qu'ils le font dans les exemples du livre MQL4 mais maintenant je pense que cela ne semble pas correct, sûrement si vous ouvrez sur le prix Ask vous voulez prendre le profit à ce prix + votre montant TP, et vous voulez arrêter à ce prix - votre montant SL ?

Si vous voulez vous arrêter au prix-x. Qu'est-ce que cela signifie ? Voulez-vous vous arrêter lorsque l'offre d'achat atteint le prix x (ou lorsque l'offre de vente l'atteint) ?

Si vous voulez un SL de 3 pips sur un achat et que vous utilisez le Ask - 3*pips2dbl. Au moment où vous ouvrez, vous êtes maintenant à 1 pip (en supposant un spread de 2 pip.) Cela dépend à nouveau de votre définition.

Si vous voulez dire quand l'offre atteint le prix x, sur un achat votre SL serait le prix x. Mais pour une vente, vous voulez toujours vous arrêter au prix x, mais le prix de déclenchement doit être relatif à la demande. prix x + spread.

Que faites-vous lorsque le spread change ? Sur une vente, cela signifie que pour clôturer à la même position (un Bid) vous devez modifier TP/SL. Cela dépend de votre définition.

Ce que je fais, c'est faire TOUS les calculs par rapport à l'offre, et ajuster à la fin.

//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:

Mon approche consiste à signaler l'erreur et à revenir.

Ce qui me préoccupe, c'est que j'ai un ordre ouvert avec SL et TP = 0 et que mon EA n'a pas de connexion à l'Internet ... . Je préférerais être alerté de cette possibilité même si mon EA est sur un VPS ou mon propre serveur colocalisé.
 

Je ne suis pas en désaccord avec cela, j'ai dit "rapportez l'erreur".

Il n'y a rien que l'EA puisse faire avec isConnected()==false à part attendre.

Il n'y a rien que l'EA puisse faire avec ERR_TRADE_TIMEOUT à part attendre et voir ensuite.

Le plus simple est de revenir au début et d'attendre le prochain tick, puis de récupérer.

 
WHRoeder:
Il n'y a rien que l'EA puisse faire avec isConnected()==false ou ERR_TRADE_TIMEOUT à part attendre le prochain tick et voir ensuite.
Bien sûr, je voulais juste m'assurer que vous compreniez où je voulais en venir, à un moment donné, j'aimerais qu'un chien de garde me dise que quelque chose ne va pas... d'où l'idée de la tâche cron et du PHP.
 
mugged:

Raptor, si tu veux bien... comment prévoyais-tu de vérifier la connectivité via php ?

Peut-être quelque chose comme ça...

<?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)
}
?>
 

Je suppose que ce que je vais faire est d'avoir une alerte par email juste avant que l'ordre ne se déclenche et ensuite une autre qui confirme que le stop a été modifié.

Ainsi, si je reçois le premier et que l'e-mail de modification correspondant ne me parvient pas, je sais qu'il y a un problème.

 
mugged:

Je suppose que ce que je vais faire est d'avoir une alerte par email juste avant que l'ordre ne se déclenche et ensuite une autre qui confirme que le stop a été modifié.

Ainsi, si je reçois le premier et que l'e-mail de modification correspondant ne me parvient pas, je sais qu'il y a un problème.

Je pense envoyer un mail après le déclenchement de l'ordre et un autre qui confirme que le stop a été modifié.
 
qjol:
Je pense qu'il faut envoyer un e-mail après le déclenchement de l'ordre et un autre pour confirmer que le stop a été modifié.

Mon seul souci avec l'envoi de l'email après est que si l'ordre se déclenche et que votre connexion meurt avant que l'email puisse être envoyé....

De l'autre côté, vous avez le premier mail qui vous dit que quelque chose est sur le point de se déclencher, puis le second qui confirme la modification du stop.

 
RaptorUK:

Peut-être quelque chose comme ça...


Raptor, j'aime cette idée. J'y ai pensé dans le passé mais je ne savais pas comment m'y prendre.

Ce que j'ai pour l'instant, c'est juste l'EA qui envoie un e-mail toutes les heures pour confirmer qu'il est opérationnel. J'aurais juste besoin d'un moyen de vérifier l' arrivée de ce mail et s'il n'arrive pas, d'envoyer un avertissement. Même idée, approche différente, je suppose.

Raison: