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

 
artmedia70:
C'est-à-dire que je dois ajouter un appel pour afficher les informations dans la fenêtre de l'indicateur dans init() ?


essayez d'écrire dans init()

int init()
{
Alert("Je ne trouve pas votre boîte, je sors d'ici, bien que j'aie été appelé dans la section init()") ;
return(0) ;
}

 
IgorM:


Eh bien, essayez d'écrire dans init()

int init()
{
Alert("Je ne trouve pas votre boîte, je m'en vais, bien que j'aie été appelé dans la section init()") ;
retour(0) ;
}

:) Est-ce que vous plagiez ? :)
 

Aidez-moi à résoudre ce problème ! Si j'ai une transaction perdante, je dois changer le lot, sinon - non. Je le fais ......

//====================================================
// Расчет размера позиции
//====================================================
double CalculateLots(){
   double Res=dLots;
   bool bProfit=true;
   int PrevTime=-1;
   double tmpLots;
   for (int i=0;i<OrdersHistoryTotal();i++){
      if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
      if (OrderSymbol()!=Symbol())                    continue;
      if (OrderMagicNumber()!=MAGIC)                  continue;
      if (OrderCloseTime()<PrevTime)                  continue;
      PrevTime=OrderCloseTime();
      if (OrderProfit()>0) bProfit=true; else bProfit=false;
      tmpLots=OrderLots();
   }
   double Lots_Step=MarketInfo(Symbol(), MODE_LOTSTEP);
   if (!bProfit) Res=tmpLots+Lots_Step;
   return(Res);
}

Je dois changer le terrain si je veux le changer, mais je ne le ferai pas. Le problème est que lorsque je change de lot, j'ai déjà un ordre en attente (avec d'autres lots). Je dois supprimer ces ordres et changer le nombre de lots qu'ils contiennent (pour un nouveau), mais les paramètres restent les mêmes !


 


Chers programmeurs,
Veuillez répondre à la question suivante :

Pouvez-vous me dire pourquoi les données d'une chaîne de caractères ne sont pas correctement saisies dans le tableau ?

extern string Sessions_begin="15:31;14:11";
extern string Sessions_end="22:32;18:12"; 

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,
            // второй время[][1]-первый элемень время(часы), [][2]-минуты.

//
str_len_begin=StringLen(Sessions_begin)

Print("Длина str_len_begin="+str_len_begin);
  for (n=1,i=0; i<=str_len_begin; i+=6,n++)
  {
   mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i,2));
   mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
   mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i,2));
   mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
  Print("n= "+n);
  Print("i= "+i);

  Print("Начало сессии "+n+" в(вывод через Print) "+StringSubstr(Sessions_begin,i,2)+":"+StringSubstr(Sessions_begin,i+3,2)); 
  Print("Конец сессии "+n+" в (вывод через Print) "+StringSubstr(Sessions_end,i,2)+":"+StringSubstr(Sessions_end,i+3,2));
  Print("Начало сессии "+n+" в(вывод через Массив) "+mas_time_begin[n][1]+":"+mas_time_begin[n][2]);
  Print("Конец сессии "+n+" в(вывод через Массив) "+mas_time_end[n][1]+":"+mas_time_end[n][2]);
  }

Voici ce que j'ai maintenant :

http://savepic.ru/1410881.gif

 

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

Merci à ceux qui ont répondu.

 
Hedin:


Chers programmeurs,
veuillez répondre à la question suivante :

Pouvez-vous me dire pourquoi les données de la chaîne ne sont pas correctement saisies dans le tableau ?

Voilà ce que j'obtiens maintenant :

http://savepic.ru/1410881.gif

La taille du tableau dans la deuxième dimension n'est pas définie correctement :

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,

Les éléments du tableau commencent par 0, et vous êtes dans ces entrées

mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
nous voulons écrire des données dans la cellule 3 (0, 1, 2), bien que la deuxième dimension soit fixée à deux (seuls les indices 0, 1 peuvent être utilisés).

Solution : Soit agrandir le tableau dans la seconde dimension

int mas_time_begin[10][3], mas_time_end[10][3];  //первый - № сессии,

ou réécrire les index lors de l'écriture des valeurs

mas_time_begin[n][0]=StrToInteger(StringSubstr(Sessions_begin,i,2));
mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][0]=StrToInteger(StringSubstr(Sessions_end,i,2));
mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
 
rosomah:

Messieurs, pouvez-vous nous conseiller ? J'ai un problème avec le tri des ordres lorsque j'active ou (superpose) un EA réparé sur des ordres en attente déjà placés. J'ai essayé de construire des codes pour rechercher et réassigner les numéros d'ordre disponibles afin que l'EA les reconnaisse comme les siens, mais le résultat est indéfini. Lorsque je l'active, l'EA commence à placer des ordres en attente au même endroit avec les mêmes paramètres..... - Quelqu'un a-t-il des codes ou des suggestions à ce sujet pour de nombreux ordres ?

Merci pour vos commentaires.

Cela dépend de la façon dont l'EA définit "owl - alien", s'il utilise un nombre magique, vous ne pouvez rien faire avec les ordres en attente déjà établis, car ce paramètre ne peut pas être modifié pour un ordre déjà établi.
S'il stocke les billets, supposons, dans des variables globales, alors c'est déjà plus facile, les billets déjà existants peuvent être "ajoutés à la base". C'est donc la principale question qui se pose à vous à ce stade. Comment le détermine-t-il ?
 
ToLik_SRGV:

Cela dépend de la façon dont l'EA définit "owl - alien". S'il est défini par un nombre magique, il n'y a rien à faire avec les ordres en attente déjà placés, car ce paramètre ne peut pas être modifié pour un ordre déjà placé.

Oui, et s'il y a une grille de différents ordres en attente, avec des trous formés parce que certains ordres en attente ont été déclenchés, d'autres déplacés, etc. Ils doivent être reconnus, renumérotés et remplis par un "nouveau" conseiller expert. Bien sûr, on peut le faire manuellement, mais... Alors pourquoi s'embêter avec MTS ? Pour une commande, nous pouvons au moins l'obtenir de N.Morzhov :

int poisk ;

si(poisk==0)

{ int k ;

for(k=0 ; k<OrderTotal();k++)

{si(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==false)break ;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic)cjntinue

ticket_buy1=OrderTicket() ;

poisk=1 ; }}

mais comment traiter un ensemble d'ordres ?

 
Qui sait quand le tutoriel mql5 est prévu ?
 
Abzasc:
Qui sait quand le tutoriel mql5 est prévu ?

https://www.mql5.com/ru/forum/491
Raison: