Question pour les connaisseurs - page 11

 
Urain >> :

Logiciel Acronis True Imidge pour créer et restaurer des sauvegardes . Sauvegardez votre disque C.

Back Up et le système tel qu'il était au moment de la création.

La durée du retour en arrière est de 4 minutes.

Merci à vous aussi.

 
rid >> :

>> Merci à vous aussi.

Cher rid, pourriez-vous m'aider avec une question ici) https://forum.mql4.com/ru/15972/page145

 
MQLBankir >> :
Bonne journée !
Je n'écris des EA que depuis le premier mois.
J'ai résolu les plus simples : j'ai un signal - j'ouvre une position. Que faire si j'ai besoin de plusieurs signaux ?
Par exemple.
Le 1er signal d'un indicateur
Le 2ème signal arrive plus tard, mais la 1ère condition est déjà FAUX. Je comprends que le programme est exécuté à chaque tick, mais je dois me souvenir que la première condition (signal) est vraie et n'est pas encore annulée.
Je pensais peut-être l'écrire dans un fichier. Mais je ne le comprends pas encore vraiment.
Peut-être existe-t-il une autre issue, par le biais d'une fonction ou autre ?
Pouvez-vous me donner un indice ?

Je ne suis pas vraiment doué pour ça.

Mais je suppose que si après le 1er signal vous "suspendez" le drapeau, laissez-le pendre.

Même si le 1er signal est déjà épuisé !

Ensuite, le 2e signal donnera le signal d'ouverture sans problème.

Si je comprends bien la question...

 
Infinity >> :

Cher rid, pourriez-vous m'aider avec une question) https://forum.mql4.com/ru/15972/page145

C'est là que vous demandez la fermeture ? Regardez ici.

"Fermeture des positions. Sur un signal d'un indicateur.

//------------------------

En mon temps, j'ai abordé le sujet là-bas.

Mais dans le code que vous avez posté - c'est difficile à comprendre et je ne vois pas du tout de section sur la fermeture.

Voici un exemple de bloc de fermeture pour vous :

//********* Закрытие позиций ****************************************
if ( AutoClose) { //если выключатель закрытия включен 
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if( Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if( Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 
rid >> :

Je ne suis pas vraiment un expert en la matière.

Mais l'hypothèse est que si après le premier signal vous "accrochez" le drapeau, alors laissez-le accrocher.

Même si le 1er signal est déjà épuisé !

Ensuite, le 2e signal donnera le signal d'ouverture sans problème.

Si je comprends bien la question...



si le deuxième signal arrive après le premier, ..... et seulement ainsi, mais... peut-être qu'en vérifiant le 2ème signal à l'ouverture le 1er signal sera déjà passé de faux à vrai alors il faudra terminer le calcul du 2ème signal, et procéder au passage du premier signal !

 
rid >> :

C'est là que vous demandez la fermeture ? Regardez ici.

"Fermeture des positions. Sur un signal d'un indicateur.

//------------------------

En mon temps, j'ai abordé le sujet là-bas.

Mais dans ce code, que vous avez posté - c'est difficile à comprendre et je ne vois pas du tout la section sur la fermeture.

Eh bien, ce n'est pas là, ..... Je n'arrive pas à obtenir le numéro d'un ordre ouvert pour fermer l'ordre, cela me donne une erreur... même si le numéro est trouvé par d'autres fonctions.

 

Regardez au-dessus. J'y ai ajouté un exemple.

Seulement au lieu de MagicNum vous insérez votre mn

Dans les paramètres externes, ajoutez

extern bool AutoClose = true ;

 
rid >> :

Seulement au lieu de MagicNum vous insérez votre mn

Dans les paramètres externes, ajoutez

extern bool AutoClose = true ;

>> >> ouais ouais merci, je l'ai eu.)

 
Infinity >> :

Eh bien, ce n'est pas là, ..... Je n'arrive pas à obtenir le numéro d'un ordre ouvert pour le fermer, il continue à afficher une erreur... même si le numéro est trouvé par d'autres fonctions.

Essayez de sélectionner l'ordre par position : la fonction donne un ticket t position de l'ordre dans la liste des ordres de bourse.

int Select_POS(int t)
{//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if(OrderSelect( t, SELECT_BY_POS, MODE_TRADES)) TIC[ t]=OrderTicket();
else TIC[ t]=-1;
return( TIC[ t]);
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t = OrdersTotal() et diminuent à chaque commande traitée.
 
Urain >> :

Essayez de sélectionner un ordre par position : la fonction donne la position ticket t de l'ordre dans la liste des ordres de négociation.

t = OrdersTotal() et diminuent avec chaque commande traitée.


Merci pour l'aide ! cela marcherait probablement aussi !!! Je ne manquerai pas de le vérifier !

Le code de fermeture a fonctionné.... Tout fonctionne maintenant, le problème était vraiment avec la définition de l'ordre ouvert. Merci encore à tous !

Raison: