Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 815

 
evillive:

Et quand pensez-vous que ce cycle devrait se terminer ?

?

Corrigé :

if(R==0)

{

 while(true)

 {

  Sleep(30000);

  Alert("Ошибка!");

  DeleteBuy=OrderDelete(OrderTicketBuy);

  DeleteSell=OrderDelete(OrderTicketSell);

  return(1);

 }

}

Calcul du bénéfice également.

J'ai inséré un message et un traitement des erreurs dans la boucle while (true). La boucle fonctionne, le message est écrit, pas d'erreur. Mais il ne passe pas la condition, les données ne semblent pas être mises à jour.

Dossiers :
test3_7.mq4  16 kb
 
CJIeCaPb:

J'ai inséré un message et un traitement des erreurs dans la boucle while (true). La boucle fonctionne, le message est écrit, pas d'erreur. Mais il ne passe pas la condition, les données ne sont pas mises à jour.

Voici quelques conseils supplémentaires.

Ce cycle ne prend pas en compte toutes les commandes ; de plus, s'il y a plus d'une commande d'un même type (par exemple, trois commandes bystop sont passées), que se passera-t-il ?

for(i=1;i<=OrdersTotal();i++)
{
 Alert(i);
 if(OrderSelect(i-1,SELECT_BY_POS)==true)
 {
  if(OrderSymbol()!=Symb)continue;
  if(OrderType()==OP_BUYSTOP)
  {
   OrderTicketBuy=OrderTicket();
   Alert("Buy");
   }
   if(OrderType()==OP_SELLSTOP)
   {
   OrderTicketSell=OrderTicket();
   Alert("Sell");
   }
  }
}


En fait, ce devrait être l'inverse : nous devrions d'abord choisir un ordre, et seulement si un ordre est choisi, nous devrions vérifier son type et faire toutes sortes de bêtises à son sujet :

while(OrderType()==OP_BUY)//Buy
{
 RefreshRates();
 
 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
 ...
}
 
//--------------------------------------------------------------------------
//Sell
while(OrderType()==OP_SELL)
{
 RefreshRates();
  
 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
 ...
}
 


Et dans le "sweep-switch-which-type-traits-stoploss", pourquoi exactement ??? Et quand cette ligne sera-t-elle exécutée, dans un premier temps et dans un second temps ?

    CloseBuy=OrderClose(OrderTicketBuy,Lote,Bid,1); continue;//119
-----
    CloseSell=OrderClose(OrderTicketSell,Lote,Ask,1); continue;//119
 
evillive:


Ici, le type d'ordre est d'abord considéré, puis l'ordre est sélectionné. En fait, cela devrait être l'inverse, il faut d'abord sélectionner l'ordre, puis si l'ordre est sélectionné, regarder son type et s'en moquer de toutes sortes de façons :

donc :

if(R==1)//238

{

 Alert("yes");

 R=0;

 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);

}


if(R==2)//245

{

 Alert("yes");

 R=0;

 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);

}

Et dans le "scroll-type-tralit-stoploss"( =D. Qu'est-ce que tu n'aimes pas ? Je trouve ça normal, c'est très clair. ), pourquoi exactement partout ? Et quand cette ligne sera-t-elle exécutée, dans un premier temps et dans un second temps ?

De cette façon, il sera exécuté par condition :

 Timen=OrderCloseTime();

 if(Timen>0)

 {

  DeleteSell=OrderDelete(OrderTicketSell);

  OldProfit=0;

  WarBuy=true;

  break;

 }

Eh bien, oui, la rupture apparaîtra mieux dans la chaîne OrderClose. Ensuite, nous devons ajouter OrderDelete.

evillive:

Voici quelques conseils supplémentaires.

Cette boucle ne prend pas en compte tous les ordres. En outre, s'il y a plus d'ordres d'un type que d'un autre (par exemple, trois ordres bystop sont placés), que se passera-t-il ?

OrdersTotal commence à partir de 1 et OrderSelect à partir de 0.

Y a-t-il plus d'un ordre du même type sur 1 symbole ? Non. Mais je vais regarder à nouveau.

Nous avons besoin d'une condition proche de celle-ci : "Si MA==prix, alors".

Cela fera l'affaire :

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))

P.S. : Bonne année !

 
Ce n'est pas le réveillon du Nouvel An pour certains. Bonne année ! !!
 

Bonne année !

J'ai récemment commencé à étudier MQL 4 et je voulais poser une question :

Par exemple, j'ai une condition pour ouvrir un ordre :

si (Bid>=SS+5*Point)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) ;

La question est la suivante : quelle condition doit être spécifiée pour ouvrir le deuxième ordre si le premier ordre a un bénéfice de 10 points ou plus ?

 
lexdemon:

Bonne année !

J'ai récemment commencé à étudier MQL 4 et je voulais poser une question :

Par exemple, j'ai une condition pour ouvrir un ordre :

si (Bid>=SS+5*Point)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) ;

La question est la suivante : quelle est la condition à spécifier pour ouvrir le deuxième ordre dans le cas où le premier ordre a un profit de 10 points ou plus ?

Regardez ici, il y a beaucoup de fonctions pour presque tous les cas.

https://www.mql5.com/ru/forum/131859

 
lexdemon:

Bonne année !

J'ai récemment commencé à étudier MQL 4 et je voulais poser une question :

Par exemple, j'ai une condition pour ouvrir un ordre :

si (Bid>=SS+5*Point)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) ;

Maintenant, la question est la suivante : quelles conditions doivent être spécifiées pour ouvrir le deuxième ordre si le premier ordre a un profit de 10 points ou plus ?

Présélectionner la commande OrderSelect (Ticket_first_order, SELECT_BY_TICKET) ;

si(OrderOpenPrice()+10*Point==Ask)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) ;

 
CJIeCaPb

 Нужно условие максимально приближенное к этому: "если MA==цене, то".

Такое  пойдет:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))


Hourra, ça a l'air de marcher. J'ai inséré l'opérateur return et "O" dans chaque boucle pour éviter les opérations inutiles.

Un problème : les ordres sont maladroits - je ne sais pas comment formuler la condition.

Dossiers :
test3.mq4  16 kb
 

J'ai un trader appelé forexstart, si cela fait une différence. le problème est que j'ai écrit un robot de trading qui fonctionne sur des graphiques de 1 minute. il analyse l'historique sur de nombreux graphiques, l'historique est donné pour environ un mois et demi et pas plus.

j'ai un robot de trading qui fonctionne sur un graphique d'une minute. il analyse l'historique. sur de nombreux graphiques, l'historique est donné pour environ un mois et demi et pas plus, bien que le graphique horaire - quotidien - annuel montre l'historique.

Comment puis-je y faire face ?


 
pycha:

J'ai un trader appelé forexstart, si cela fait une différence. le problème est que j'ai écrit un robot qui fonctionne sur des graphiques de 1 minute. il analyse l'historique sur de nombreux graphiques et n'affiche rien d'autre.

j'ai un robot de trading qui fonctionne sur le graphique d'une minute. il affiche l'historique. sur de nombreux graphiques, l'historique est donné pour environ un mois et demi et pas plus, bien que le graphique horaire - quotidien - annuel affiche l'historique. il y a aussi des cas où il revient à une certaine date puis s'interrompt, le jeu continue il y a quelques mois, bien que les graphiques supérieurs montrent tout à nouveau.

Comment puis-je y faire face ?


Si après quelques cycles de suppression - téléchargement de l'historique depuis le serveur DC, les ruptures sont toujours là, cela signifie qu'ils vous donneront l'historique. Google Tickstory Lite et préparez un grand espace disque pour l'historique des tics, puis donnez cet historique au testeur et vous aurez un M1 pour une décennie ou plus.