Erreurs, bugs, questions - page 308

 
aharata:
Essayez de vous renseigner sur BarsCalculated dans l'aide, qui donne d'ailleurs le bon exemple.

Essayons de le faire avec celui-ci. Merci !
 
Im_hungry:

c'est-à-dire que tant que CopyBuffer>0 nous le calculons, et le nouveau paramètre (Close())

apparaît lorsque la position est fermée. En d'autres termes, nous devons boucler sur While. Ça se passe comme ça.

Je le formulerais ainsi : "Tant que CopyBuffer<0, nous répétons l'appel de cette fonction".

La ligne While (vhandle>0) ne semble pas porter de charge particulière, car en cas de premier CopyBuffer<0 elle retournera(0) ;

je travaillerais dans ce sens :

if(!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
  {
   for(uchar u=0;u<100;u++)  //запускаем цикл с ограниченным количеством шагов
    {
     if(CopyBuffer(vhandle,0,0,50,Sp1Buffer) && CopyBuffer(vhandle,1,0,50,Sp2Buffer))
      {
       return(true);  //дождались копирования буферов - выходим
      }
     else
      {
       if(u==99) //т.е. выявляем последний шаг нашего цикла for, который не принёс ожидаемых результатов
         {
          Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
          return(0);
         }
       Sleep(50);  //засыпаем ненадолго (хотя я сам не сторонник использования Sleep в теле OnTick)
      }
    }
  }

En général, quelque chose de ce genre, à la discrétion de l'auteur. Comme il a été souligné à juste titre, un guide de référence ne ferait pas de mal.

 
aharata:
Essayez de lire l'aide sur BarsCalculated, d'ailleurs, le bon exemple y est donné.

Merci pour le référencement effectué - fonctionne, semble n'avoir aucun problème (testé pendant 1 mois)

Voici mon code de travail pour la première paire

void OnTick()
{ 
   if (isNewBar()==true && proverkaHANDLA()==true)
     {
      if (!PositionSelect(Symbol1))
         {
          BSOpen();
         }
     }    
}
//+==================================================================+
bool proverkaHANDLA()
{
  ArraySetAsSeries(Sp1Buffer,true);
  ArraySetAsSeries(Sp2Buffer,true);
  vhandle=iCustom(NULL,0,"МТ5",Symbol1,100,Lots,1,Close());
  ResetLastError();
  int copied0=CopyBuffer(vhandle,0,0,50,Sp1Buffer);
  int copied1=CopyBuffer(vhandle,1,0,50,Sp2Buffer);
  if(copied0<=0 || copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(vhandle)>0)
         break;
         Sleep(50);
        }
      copied0=CopyBuffer(vhandle,0,0,50,Sp1Buffer);
      copied1=CopyBuffer(vhandle,1,0,50,Sp2Buffer);
      if(copied0<=0 || copied1<=0)
        {
         Print("Не удалось скопировать Буфера индюков :-)",GetLastError(),
         "copied0",copied0,"copied1=",copied1);
         return (false); 
        }
       Print("Удалось скопировать Буфера :-)copied0",copied0,"copied1=",copied1);
       return (true);
     }
   Print("Удалось скопировать Буфера. Sp1Buffer=",ArraySize(Sp1Buffer),
         "Sp2Buffer=",ArraySize(Sp2Buffer));
   return (true);
}
 
Yedelkin:

Je dirais : "tant que CopyBuffer<0, répéter l'appel de cette fonction".

La ligne While (vhandle>0) ne semble pas être très chargée, car en cas de premier CopyBuffer<0, elle renverrait(0);

Je travaillerais dans ce sens :

En gros, quelque chose comme ça, à la discrétion de l'auteur. Comme on l'a fait remarquer à juste titre, un livre de référence ne ferait pas de mal.

C'est encore plus simple, voyons laquelle de ces 2 approches est la meilleure et la plus rapide - c'est ce que nous allons prendre,

Merci à tous ! Allons au test.

 
développeurs, veuillez prêter attention à l'application #33601 (il y a une "grande fonctionnalité" sur l'effet de levier dans différents OS)...
 
Interesting:
développeurs, veuillez prêter attention à la demande #33601 (il y a une "grande fonctionnalité" concernant l'effet de levier dans différents OS)...

Peut-être utilisez-vous des terminaux installés à l'origine par des courtiers différents ? Ajoutez des détails à votre demande, s'il vous plaît.
 
Rosh:
Peut-être utilisez-vous des terminaux installés à l'origine par des courtiers différents ? Ajoutez des détails à votre demande, s'il vous plaît.
Il a clarifié les terminaux et ce que je dois obtenir à la fin.
 

Question pour les développeurs.

Tout est clair en ce qui concerne les spreads, ils sont stockés dans des barres et le testeur peut exécuter l'historique complet, en tenant compte des changements de spreads (si l'historique est chargé normalement), mais qu'en est-il des swaps ?

En d'autres termes, que se passe-t-il si le courtier ou le négociant modifie les taux des swaps ou des commissions ?

Je comprends que la situation est un peu absurde, mais quand même.

Si je comprends bien, le testeur, comme dans MT4, prend les swaps et les commissions sur .....

PS

Clarifié à nouveau, maintenant avec des captures d'écran....

 
Interesting:

Question pour les développeurs.

Tout est clair en ce qui concerne les spreads, ils sont stockés dans des barres et le testeur peut exécuter l'historique complet, en tenant compte des changements de spreads (si l'historique est chargé normalement), mais qu'en est-il des swaps ?

Autrement dit, que se passe-t-il si un courtier ou un négociant modifie la taille des swaps ou des commissions ?

L'historique des swaps et des commissions n'est pas stocké, ces paramètres sont repris de la dernière connexion.
 
Rosh:
L'historique des échanges et des commissions n'est pas conservé, ces paramètres sont repris de la dernière connexion.
Je vois, c'est à peu près ce que je pensais. Espérons qu'ils ne changent pas souvent/pas du tout.
Raison: