[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 980

 

Laissez-moi vous donner l'essentiel de l'idée.

Vous devez trouver ou identifier la première flèche de l'histoire à partir de la barre actuelle.

Peu importe que ce soit en haut ou en bas.

(A) Et ensuite sauvegarder ce résultat dans une variable ou un drapeau. Par exemple GlobalFlag =-1 (si la flèche est en bas) et +1 si elle est en haut.

Ensuite, le prix est allé plus loin vers l'avant et une flèche est à nouveau dessinée.

Dans l'EA, le cycle de recherche est lancé à chaque fois avec un nouveau tick, n'est-ce pas ?

La boucle a été relancée et elle a trouvé la flèche qui venait d'être dessinée et l'a sauvegardée dans une variable ou un drapeau, c.-à-d.

c'est-à-dire que l'élément A a été exécuté.

C'est l'idée.

Pourquoi s'embêter avec le drapeau et tout ça ?

Ensuite, ce drapeau, c'est-à-dire l'endroit où la flèche regarde, sera utilisé avec un autre indicateur pour confirmer le signal.

Par exemple, si GlobalFlag=+1 (flèche vers le haut) et qu'un autre indicateur signale une hausse, cela signifie que nous devons entrer sur le marché.

Autrement dit, les deux conditions doivent coïncider dans les indicateurs.


Que pensez-vous de ce code ?

En d'autres termes, je n'ai pas besoin de calculer sur quelle bougie se trouve la flèche, quel est le prix, etc.

L'essentiel est de fixer la disponibilité de la flèche et sa direction.

Puis-je assigner vrai et faux ? ??? au lieu de +1 et -1 ou non ?


double DataIndUP, DataIndDN;
int    i, GlobalFlag, nBars = 250 ;  // nBars = количество проверяемых баров вглубь истории

for (i=0; i<nBars; i++) 
{
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP !=EMPTY_VALUE)     // или if (DataIndUP !=0) // найдена стрелка вверх
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN !=EMPTY_VALUE)     // или if (DataIndDN !=0) // найдена стрелка вниз
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}
 
Tupen:


C'est un début.


Donc, le point d'entrée A -- vendre et acheter se situe à 4 pips. 1 variante de comportement - le prix baisse - on fixe le profit dans, disons, 5 points du point d'entrée. - Si le prix augmente, le nombre de points avant de fixer le profit changera également (un minimum pour l'instant), c'est-à-dire que le programme devra passer 4 ordres à la fois, )) est-il possible de programmer ?
 
Roman.:



Message supprimé pour blasphème obscène

 
Vinin:

Message supprimé pour blasphème obscène


Désolé, généreux, je n'ai pas pu m'en empêcher. Lassée des contes des bois de Vienne...
 

Veuillez écrire un programme avec 4 ordres. J'ai besoin de regarder la démo et de voir le retournement.

 
Tupen:

S'il vous plaît écrire un programme avec 4 ordres. Je dois regarder la démo et voir si je peux comprendre l'option de pivot.


Voir le fil de discussion "Avalanche" - tout y a été minutieusement réfléchi avec "tout", y compris les options d'inversion.

Il n'est pas nécessaire de réinventer la roue. Tout a été inventé par des gens il y a longtemps. Lisez-le, analysez-le, utilisez-le et faites-en usage.

Vous n'arriverez pas assez tôt à la bicyclette "it" (lire : la solution)...

 

Pouvez-vous me dire pourquoi il n'y a pas de cyclicité ? Dans le testeur, le conseiller expert n'ouvre que deux transactions.

extern int F = 8 ; //période de jeûne МА
extern int S = 20 ; //période de MA lent
extern double Lots = 0.1 ; // lot de commande
int Slippage = 5 ; // slippage en pips.
int Magic = 123 ; /numéro magique du conseiller expert
int ticketsell ;
int ticketbuy ;
int start()
{
double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1) ;
double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1) ;
// aucun ordre avec ticketell dans le terminal OU il est fermé ET la MA rapide est inférieure à la lente, vendez !
si ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
{
// si nous avons déjà eu un ordre contraire, achat, fermons-le :
si ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE) ;
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Magic,0,Red)
}
si ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
{
si ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE) ;
ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Magic,0,Blue) ;
}
retour(0) ;
}

 

Mirgha Essayez ceci

extern int F = 8; //период быстрой МА
extern int S = 20; //период медл.МА
extern double Lots = 0.1; // лот ордера
int Slippage = 5; // проскальзывание в пп.
int Magic = 123; // магический номер эксперта
int ticketsell;  
int ticketbuy;

int start()
{
   double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
   double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1); 
   
   ticketsell = -1;
   ticketbuy = -1;
   for (int i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      {
         if (OrderType() == OP_SELL) ticketsell = OrderTicket();
         if (OrderType() == OP_BUY)  ticketbuy  = OrderTicket();
      }
    }
   // ордера с тикетом ticketsell в терминале нету ИЛИ он закрылся И быстрая МА ниже медленной, продаем !
   if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
   {
      // если у нас при этом был противоположный ордер, бай, его закроем :
      if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      ticketsell = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,0,Magic,0,Red);
   } 
   if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
   {
      if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
      ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
   }
   return(0);
} 
 
Merci !
 

Ma question reste sans réponse.

Cependant, comment puis-je filtrer le nombre de signaux entrants de l'indicateur ? Par exemple, le conseiller expert accepte le signal numéro trois pour commencer à travailler, c'est-à-dire que les deux premiers signaux sont ignorés, et le troisième est accepté pour action. Comme je l'ai écrit ci-dessus, j'ai essayé de l'implémenter avec des variables globales, mais cela ne fonctionne pas.....

Raison: