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

 
Encore une copie.

Vous devez écrire une partie du code du robot de trading afin qu'il effectue une transaction une fois si les conditions de trading sont remplies.
Par exemple :
1) Si la Ligne_1 est supérieure à la Ligne_2, une transaction d'achat est exécutée,
2) L'opération est conclue à SL ou TP,
3) Si la Ligne_1 est supérieure à la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Si les conditions changent, c'est-à-dire si la Ligne_2 est supérieure à la Ligne_1, une transaction est exécutée. Puis tout est répété.
1) Si la Ligne_2 est supérieure à la Ligne_1, une transaction d'achat est exécutée,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_2 est supérieure à la Ligne_1, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Et.
1) Si la Ligne_1 est supérieure à la Ligne_2, un trade d'achat est exécuté..,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_1 est supérieure à la Ligne_2, la transaction n'est pas exécutée jusqu'à ce que les conditions changent .

etc.
 
Link_x:
Je le copie à nouveau.

Vous devez écrire une partie du code de votre robot de trading, afin qu'il effectue une transaction une fois, si les conditions de trading sont remplies.
Par exemple :
1) Si la Ligne_1 est supérieure à la Ligne_2, une transaction d'achat est exécutée,
2) L'opération est conclue à SL ou TP,
3) Si la Ligne_1 est supérieure à la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions soient modifiées .
...

etc.


(3) Le paragraphe n'est pas clair. "...jusqu'à ce que les conditions changent" - il n'est pas précisé de quelles conditions il s'agit.

Faut-il seulement ouvrir un ordre d'achat ? Il n'est pas non plus précisé si plusieurs ordres peuvent exister simultanément sur le marché ou un seul.

 
fozi:

Salut Camradics.

Qui peut négocier le SP500 via MT4-5 ?


mmcis a une démo mt4 _SP500

Mais il est écrit Commerce : Non.

Peut-être que c'est seulement sur la démo, je ne sais pas.

 
Link_x:
Je le copie à nouveau.

Vous devez écrire une partie du code d'un robot de trading, afin qu'il réalise une transaction une fois, si les conditions de trading sont remplies.
Par exemple :
1) Si la Ligne_1 est supérieure à la Ligne_2, alors une transaction d'achat est exécutée,
2) L'opération est conclue à SL ou TP,
3) Si la Ligne_1 est supérieure à la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Si les conditions changent, c'est-à-dire si la Ligne_2 est supérieure à la Ligne_1, une transaction est exécutée. Puis tout est répété.
1) Si la Ligne_2 est supérieure à la Ligne_1, une transaction d'achat est exécutée,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_2 est supérieure à la Ligne_1, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Et.
1) Si la Ligne_1 est supérieure à la Ligne_2, un trade d'achat est exécuté..,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_1 est au-dessus de la Ligne_2, la transaction n'est pas exécutée jusqu'à ce que les conditions changent .

etc.


J'y ai réfléchi et je pense avoir compris, mais je veux encore avoir la confirmation que j'ai bien compris.

Il n'y a toujours qu'un seul ordre sur le marché. L'ordre est toujours ouvert lorsque la condition change et toujours uniquement pour acheter.

 
khorosh:

(3) Le paragraphe n'est pas clair. "...jusqu'à ce que les conditions changent" - il n'est pas précisé de quelles conditions il s'agit.

Faut-il seulement ouvrir un ordre d'achat ? Il n'est pas non plus clair si plusieurs ordres peuvent exister simultanément sur le marché ou un seul.

Tant pour l'achat que pour la vente.
Une seule commande.

....
 
Link_x:
Tant pour l'achat que pour la vente.
Une seule commande.

....
Votre mission ne parle pas de vendre, mais d'acheter partout.
 
khorosh:
Votre mission ne dit pas un mot sur la vente, seulement sur l'achat.


Mon erreur. Je vais arranger ça. :)


1) Si la Ligne_1 est supérieure à la Ligne_2, alors nous effectuons une transaction d'achat,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_1 est au-dessus de la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Si les conditions changent, c'est-à-dire si la Ligne_2 est supérieure à la Ligne_1, une transaction est exécutée. Puis tout est répété.
1) Si la Ligne_2 est supérieure à la Ligne_1, une transaction de vente est exécutée,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_2 est supérieure à la Ligne_1, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Et.
1) Si la Ligne_1 est supérieure à la Ligne_2, un trade d'achat est exécuté..,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_1 est au-dessus de la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .
 
Une explication visuelle :
Dossiers :
 
Link_x:

J'ai fait une erreur. Je vais arranger ça. :)


1) Si la Ligne_1 est supérieure à la Ligne_2, une transaction d'achat est exécutée,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_1 est au-dessus de la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Si les conditions changent, c'est-à-dire si la Ligne_2 est supérieure à la Ligne_1, une transaction est exécutée. Puis tout est répété.
1) Si la Ligne_2 est supérieure à la Ligne_1, une transaction de vente est exécutée,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_2 est supérieure à la Ligne_1, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

Et.
1) Si la Ligne_1 est supérieure à la Ligne_2, une transaction d'achat est exécutée..,
2) La transaction est fermée au niveau du SL ou du TP,
3) Si la Ligne_1 est au-dessus de la Ligne_2, une transaction n'est pas exécutée jusqu'à ce que les conditions changent .

int start()
  {
//----
   
   if(Lin1>Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_SELL)
           {
            OpenPosition("0",OP_BUY,NormalizeDouble(Ask-SL*Point,Digits),
                       NormalizeDouble(Ask+TP*Point,Digits), -1);
           }
        }                         
     }
   if(Lin1<Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_BUY)
           {
            OpenPosition("0",OP_SELL,NormalizeDouble(Bid+SL*Point,Digits),
                          NormalizeDouble(Bid-TP*Point,Digits), -1);
           }
        }                         
     }  
//----
   return(0);
  }
Чтобы код работал нужно ещё записать коды всех использованных функций KimIV вне тела функции start() и
определить все значения констант и переменных ошибки по которым будут выданы при компиляции ввиду 
того что здесь они не определены..

	          
 

Bonne année à tous ! Du bonheur, de la chance, de l'amour et, bien sûr, d'énormes bénéfices pour tous ! =))


Si vous êtes un expert, veuillez vérifier que la fonction ne comporte pas d'erreurs. Le point principal de cette fonction : elle doit calculer un lot nécessaire pour que le prochain ordre ouvert couvre ses pertes en un certain nombre de points en cas de fermeture de la grille d'ordres.

double FindRightLot (int otype)
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); // ТP это то к-во пунктов, за которое след. ордер должен закрыть убыток
           if (Lot>0) // т.е. нас интересуют только убыточные ордера
           {
             TotalLot=TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)// выбираем только убыточные
           {
             TotalLot=TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
Raison: