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

 
drems:
Pouvez-vous me dire s'il est possible de définir des commentaires par défaut sur la commande ?

Quel genre d'"ordre"? A quoi ça sert ? Où et pourquoi faut-il un commentaire ?
 
hoz:

J'ai quelque chose sur un point simple, un mal de tête. Il existe une fonction permettant de rechercher des commandes.

t - compteur de toutes les commandes.

p - compteur d'ordres en attente.

Je l'appelle dès le début :

En fait, lorsque nous l'ouvrons, même s'il n'y a pas d'ordres, nous voyons ceci (même s'il n'y a pas d'ordres, cela s'imprime comme s'il y en avait...) :

Comment cela est-il possible ?


Et voilà...
if (OrderType() > 1)
      {
          p++;
      }
      t++;
Что у нас тут? Если тип ордера больше OP_SELL, то увеличиваем p

N'avez-vous jamais pensé que le type de commande pouvait aussi être plus de cinq ? Plus précisément six. Il s'agit d'une modification non commerciale du dépôt.

 
artmedia70:
Et voilà...

N'avez-vous jamais pensé que le type de commande pouvait aussi être plus de cinq ? Plus précisément six. Il s'agit d'une modification non commerciale du dépôt.



Non. C'est la première fois que j'en entends parler. Où est-ce que ça dit ça ?
 
FAQ:
dépôt = type 6

Hmm. Type de commande = dépôt !? Qu'est-ce que c'est ?
 
artmedia70:
Et voilà...

N'avez-vous jamais pensé que le type de commande pouvait aussi être plus de cinq ? Plus précisément six. Il s'agit d'une modification non commerciale du dépôt.



Et pourquoi 6, parce que la taille ou le nombre d'ordres peuvent être définis indépendamment dans le conseiller expert.
 
hoz:

Hmm. Type de commande = dépôt !? Qu'est-ce que c'est ?

tous les retraits et dépôts sont comptabilisés sous ce numéro
 
Profitov:

Et pourquoi 6, parce que la taille ou le nombre d'ordres peut être écrit dans l'EA.

De quoi s'agit-il ? Nous ne parlons pas du nombre de commandes, mais du type de commande. Ainsi : un ordre de type 6 est une modification non commerciale du dépôt.
 
hoz:

Non. C'est la première fois que j'en entends parler. Où est-ce que ça dit ça ?

Il s'agit de données non documentées.
 
FAQ:

Tous les retraits et dépôts se font sous ce numéro.


Hmm. Et comment ce chiffre peut-il affecter la collecte de statistiques sur les commandes ?

artmedia70:

Ce sont des données non documentées.

C'est génial ! La chose la plus intéressante est que quelqu'un est au courant, bizarrement. Comment quelqu'un aurait-il pu le deviner ?

artmedia70:

De quoi s'agit-il ? Ce n'est pas le nombre de commandes qui compte, mais le type de commande. Donc : un ordre de type 6 est un changement de dépôt non commercial.

Si une chouette est testée dans la démo, comment rendre compte de cette commande ? C'est-à-dire le solde, qui est initialement donné sur la démo - ce sera cela... l'UN recherché ? Et dans la réalité - c'est ce que nous avons retiré et déposé, non ?

 
Sepulca:

Cela devrait fonctionner, je ne l'ai pas testé moi-même, car le terminal est occupé à optimiser un autre EA pour l'instant.

Bonjour !

J'ai essayé de coller votre code dans le modèle du tutoriel. Je dois ouvrir une seule position mais le modèle n'a qu'une seule position.

La variable ticket porte un autre nom, car le modèle en possède déjà une et l'a rendue statique, de sorte que le critère de retrait recevrait des données de celle-ci, si la position reste le jour suivant.

Tout est bon, mais un problème de bouclage est apparu. Par exemple, dans le testeur de stratégie, le conseiller expert sort d'une position au moment du Take Profit ou de la clôture et le critère d'entrée est toujours actif, il s'avère donc que l'EA ouvre et ferme constamment une position.

Ce problème a été résolu par l'ajout d'une variable statique de temps de date t plus tôt mais maintenant

 if(Maximum>0 && Flag) {
   signal = Maximum - Bid;    
   if (signal > 0.005 ) { // к примеру если ниже максимума на 12 пунктов, в этом случае откроем SELL 
      Opn_S = true;
      tickett= Opn_S; 
      t=Time[0];  
      if(tickett>=0) Flag=false;// Ордер открылся, сегодня больше не открываем.       
   }  
}
 
if(tickett>=0) 
    {
double stop = iHigh(Symbol(),Period(),0) - iHigh(Symbol(),Period(),1);
if (stop > 0.0012)
     {
       if (Time[0]>t)
            {
             Cls_S=true;   
             tickett=-1;          
            }
      }
     }

sell ne fonctionne plus.

Ça marche mais ça tourne en boucle :

#define magic 123456789
StartHour=14;
StartMinute=1;// Время 08:01
StopHour=16;
StopMinute=30; // Время 23:58
StartTime=StartHour*60+StartMinute;
StopTime=StopHour*60+StopMinute;
static int tickett=-1;
static double Maximum=-1;
static datetime t;
if(StopTime<=StartTime) {Print("ERROR: Неправильные времена"); return(0);}
 CurrentMinutesFromDayStart=Hour()*60+Minute();// Текущее время в минутах от начала дня
 datetime td=iTime(Symbol(),PERIOD_D1,0);// Время открытия дневного бара в секундах от 01.01.1970
 if(CurrentMinutesFromDayStart<StartTime) {Maximum=-1;Flag=true;}// Если StartTime еще не настало, то после StopTime нужно пересчитать Maximum и можно открывать ордер
if(CurrentMinutesFromDayStart>StopTime && Maximum<0) {// если максимум ещё не посчитан
  datetime ts=td+StartTime*60;// начало временного диапазона в секундах от 01.01.1970
  start= iBarShift(Symbol(),PERIOD_M1,ts,false);// смещение бара, которому принадлежит ts
  ts=td+StopTime*60;// конец временного диапазона в секундах от 01.01.1970
  count= iBarShift(Symbol(),PERIOD_M1,ts,false);// смещение бара, которому принадлежит ts
  count=start-count;// Сколко баров длится временной интервал
  Maximum=iHigh(Symbol(),PERIOD_M1,iHighest(Symbol(),PERIOD_M1,MODE_HIGH,count,start));//Находим максимум на заданном временном интервале
 }
 if(Maximum>0 && Flag) {
   signal = Maximum - Bid;    
   if (signal > 0.005 ) { // к примеру если ниже максимума на 12 пунктов, в этом случае откроем SELL 
      Opn_S = true;
      tickett= Opn_S;   
      if(tickett>=0) Flag=false;// Ордер открылся, сегодня больше не открываем.       
   }  
}
 
if(tickett>=0) 
    {
double stop = iHigh(Symbol(),Period(),0) - iHigh(Symbol(),Period(),1);
if (stop > 0.0012)
            {
             Cls_S=true;   
             tickett=-1;          
            }
      }

Quel peut être le problème ? J'ai essayé tout ce à quoi j'ai pu penser, mais je ne suis pas très doué en mql .

Je joins le Conseiller Expert, il n'est pas possible de placer tout le texte.

Dossiers :
svhrvrsa.mq4  14 kb