[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 48

 
orlovkem >> :

Peut-être que le commentaire est faux, mais l'essence est vraie, le niveau de prix est plus élevé que la valeur de l'indicateur, il devrait acheter, mais il ne devrait être fait qu'une seule fois, et l'EA achètera tant qu'il y a de l'argent dans le dépôt. Vous devez simplement limiter le nombre de transactions. Pour ne pas en faire plus d'un à la fois, ça ne marche pas.

Faites une vérification sur la barre actuelle et sur la barre précédente, puis le signal sera un,

uniquement au moment du croisement.

C'est-à-dire si l'indicateur est plus haut sur la barre actuelle et plus bas sur la barre précédente.

cela signifie acheter, et il n'y aura qu'un seul achat pour le signal.

 
orlovkem >> :

Peut-être que je ne l'ai pas écrit correctement, mais l'essence est correcte, le niveau de prix est devenu plus élevé que la valeur de l'indicateur, je dois acheter et il achète, mais je dois le faire une fois, et l'EA achète tant qu'il y a de l'argent sur le dépôt. Vous devez simplement limiter le nombre de transactions. Pour ne pas en faire plus d'un à la fois, ça ne marche pas.

Êtes-vous sûr que le conseiller achète (vend) ? L'avez-vous essayé ? D'après le code, il ne devrait pas y avoir une seule transaction, et non pas "il achète tant qu'il y a de l'argent dans le dépôt". Ou vous n'avez pas écrit le code ?

 
xeon >> :

Le moyen le plus simple de contrôler le nombre d'ordres ouverts en même temps

un peu différent - les ordres ne s'ouvrent pas en parallèle, juste après avoir fermé un ordre, un autre s'ouvre dans la même direction (à ce moment-là, le trade a déjà épuisé sa puissance et je suis en perte)

((

 
VladislavVG >> :

Etes-vous sûr que le conseiller achète (vend) ? L'avez-vous essayé ? D'après le code, il ne devrait pas y avoir une seule transaction, et non pas "il achète tant qu'il y a de l'argent en dépôt". Ou vous n'avez pas écrit le code ?


J'ai écrit le code, et il achète et vend. Je l'ai essayé sur le testeur de stratégie.

 
satop >> :

Faites une vérification sur la barre actuelle et sur la barre précédente, puis le signal sera un,

uniquement lorsqu'il traverse.

C'est-à-dire, si l'indicateur est plus haut sur la barre actuelle et plus bas sur la précédente.

cela signifie acheter, et il n'y aura qu'un seul achat pour le signal.

Merci pour le conseil, je pense avoir compris ce qu'on attend de moi. Je vais l'essayer. Merci encore.

 
xruss >> :

légèrement erroné - les ordres ne s'ouvrent pas en parallèle, juste après avoir fermé un ordre, un autre s'ouvre dans la même direction (à ce moment-là, la transaction a déjà épuisé sa force et je suis en perte).

((

Et si vous nous envoyez le fragment entier, qui est responsable de la sélection de la dernière commande et de la condition de son contrôle, nous le comprendrons. Il est difficile de suggérer quelque chose de cette manière. Alternativement, après le signal, simultanément avec l'ouverture d'une position, vous pouvez mettre un drapeau pour interdire les trades suivants de ce type, et dans le bloc d'ouverture des positions pour vérifier sa présence. Si le drapeau est levé - la transaction est ignorée. À la réception d'un signal contraire, le drapeau est retiré, mais après la première ouverture réussie d'une position, le nouveau drapeau est mis en place - interdisant l'ouverture de transactions de ce type, pour lesquelles un nouveau signal a été reçu. Et ainsi de suite.

 
orlovkem >> :

J'ai écrit le code et il achète et vend à la fois. Je l'ai essayé sur le testeur de stratégie.

Donc ce n'est pas le code que vous avez posté sur la page précédente. Ce code n'achète rien et ne vend rien. Vous pouvez le copier, si vous ne me croyez pas, et l'exécuter dans le testeur.

Par exemple, pour moi, il est clair qu'il n'existe aucune paire de nombres pour laquelle les conditions a>=b et a<b sont satisfaites simultanément. À en juger par votre expert, non seulement ce n'est pas évident pour vous, mais pour vous, il est évident que de tels chiffres existent. Bien sûr, je peux me tromper - alors, s'il vous plaît, si ce n'est pas difficile, donnez-moi un exemple d'une telle paire de chiffres. Dans ce cas seulement, un ordre d'achat sera placé en utilisant votre algorithme. Il en va de même pour la vente.

>> Bonne chance.

 
Everlost писал(а) >>

Et si vous pouviez poster le fragment entier, qui est responsable de la sélection de la dernière commande et de la condition pour la vérifier, nous pourrions nous arranger. Il est difficile de suggérer quelque chose de cette manière. Alternativement, après le signal, simultanément avec l'ouverture d'une position, vous pouvez mettre un drapeau pour interdire les trades suivants de ce type, et dans le bloc d'ouverture des positions pour vérifier sa présence. Si le drapeau est levé - la transaction est ignorée. À la réception d'un signal contraire, le drapeau est retiré, mais après la première ouverture réussie d'une position, le nouveau drapeau est placé - interdisant l'ouverture de transactions de ce type, pour lesquelles un nouveau signal a été reçu. Et ainsi de suite.

Je le montrerai un peu plus tard, mais il me semble que les drapeaux seraient plus cool. Comment les définir via mql4 ?

Voici mon code :

//Учет ордеров истории
int ORDtype=-1;
double ORDprofit=0.001;
for( i=OrdersHistoryTotal(); i>=0; i--)
{
if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY))
 {
  if(OrderSymbol()==Symbol())
  {
   if(OrderCloseTime()!=0)
   {
     ORDtype=OrderType();
     ORDprofit=OrderProfit();
   }
  }
 }
}    

....

if (( ORDtype==OP_SELL)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
if (( ORDtype==OP_BUY)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
 

Je voulais faire en sorte que l'expert ne fonctionne pas de 6 à 20 sur le broker, en vérifiant avant qu'il ne s'éteigne et en attendant qu'il se ferme. Tout fonctionne mais j'aimerais pouvoir ajouter une alerte comme quoi le trading est terminé lorsque l'expert arrête de trader.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

il commence à biper à chaque tic. Dans ce cas, l'alerte ne sera pas seulement déclenchée une fois mais le cycle sera également coupé. Veuillez me conseiller sur la voie à suivre, je n'arrive pas à comprendre...

 
Dimoncheg >> :

Je voulais faire en sorte que l'expert ne fonctionne pas de 6 à 20 sur le broker, en vérifiant avant qu'il ne s'éteigne et en attendant qu'il se ferme. Tout fonctionne mais j'aimerais pouvoir ajouter une alerte comme quoi le trading est terminé lorsque l'expert arrête de trader.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

il commence à biper à chaque tic. Dans ce cas, l'alerte ne sera pas seulement déclenchée une fois mais le cycle sera également coupé. Veuillez me conseiller sur la voie à suivre, je n'arrive pas à comprendre...

Une des options :

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
   {
   if (OrdersTotal() == 0)
   if( NeedAlert){ Alert("Торговля закончена"); NeedAlert=false;}
   return(0);
   }
Définissez la variable bool NeedAlert sur true lorsque vous commencez à négocier.
Raison: