Erreurs, bugs, questions - page 2224

 

En remettant le testeur en marche en mode visualisation après un passage, je me rends compte que j'ai fait de mauvais réglages et le testeur se bloque pendant quelques minutes.

2018.07.11 17:03:05.992 Core 8  disconnected
2018.07.11 17:03:05.992 Core 8  connection closed
2018.07.11 17:03:09.241 Core 8  connecting to 127.0.0.1:3000
2018.07.11 17:03:18.308 Tester  stopped by user
2018.07.11 17:03:19.241 Core 8  tester agent authorization error
 
//Определение экстремума
for(int i=NBars;i<=NumBars;i++)
     {
      xMinL=ArrayMinimum(MinBuffer,0,i);
      xMinLD=ArrayMinimum(MinBuffer,0,i+NBars);
      if((MinBuffer[xMinL]<=MinBuffer[xMinLD])&&(xMinL>=NBars))
        {
         Minimum=MinBuffer[xMinL];
         break;}}

//Проверка если ордера с такой же ценой не существует         
   for (int r=0; r<=OrdersTotal(); r++)
   {if (OrderSelect(OrderGetTicket(r)))
    {if (StringToDouble(OrderGetString(ORDER_COMMENT))==NormalizeDouble(Minimum,_Digits))    
       {x2=1;
        break;}
     else x2=0;}}

//Проверка если Позиции с такой же ценой не существует     
   for (int l=0; l<=PositionsTotal(); l++)
   {if (PositionSelectByTicket(PositionGetTicket(l)))
    {if (StringToDouble(PositionGetString(POSITION_COMMENT))==NormalizeDouble(Minimum,_Digits))     
       {y2=1;
        break;}
     else y2=0;}}

//Если проверка отрицательная, открываем ордер        
   if ((x2==0)&&(y2==0))
   m_trade.SellStop(Volume,NormalizeDouble(Minimum,_Digits),_Symbol,NormalizeDouble(Minimum+(SL_ATR*ATR2),_Digits),NormalizeDouble(Minimum-(TP_ATR*ATR2),_Digits),ORDER_TIME_GTC,0,DoubleToString(Minimum,_Digits));
Bonjour chers utilisateurs du forum. Voici un extrait de code qui détecte les extrema et place des ordres en attente sur ceux-ci. Cela semble fonctionner, mais parfois il commence à mettre des pauses sans fin à une extrémité, comme s'il ne voyait pas le critère d'arrêt. Je me suis déjà creusé les méninges.
 
Dmitri Custurov:
Bonjour chers utilisateurs du forum. Il s'agit d'un extrait de code qui identifie les extrema et place des ordres en attente sur eux. Cela semble fonctionner, mais parfois il commence à mettre des pauses sans fin à une extrémité, comme s'il ne voyait pas le critère d'arrêt. Je me suis déjà creusé les méninges.

Alors, est-il correct de comparer ?

if (StringToDouble(PositionGetString(POSITION_COMMENT))==NormalizeDouble(Minimum,_Digits)){.....}
 

Dans l'indicateur

Impression en mode testeur de stratégie visuelle, car mon cerveau est déjà en ébullition - je n'ai pas pu trouver l'erreur dans la logique :

Print(iHigh(Symbol(),PERIOD_CURRENT,i+1), "  ",sqh_buffer[i+1]);

Date de début 01.01.2018 minutes

2018.07.11 17:19:07.770 2018.01.01 00:00:00   58148.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58149.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58146.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58140.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58139.0  0.0
2018.07.11 17:19:07.863 2018.01.03 10:00:00   58139.0  58391.79995461365
2018.07.11 17:19:07.863 2018.01.03 10:00:00   58135.0  58391.71051866656
2018.07.11 17:19:07.906 2018.01.03 10:00:20   58135.0  58463.08874123808

Bien sûr, il n'y a pas de vraies citations à cette date, les gens ont un jour férié, alors quels sont ces chiffres magiques, et en général comment obtenir des informations pour le premier rendez-vous ? ??

 

Question :

Comment puis-je savoir que la minuterie est en marche et quelle est sa fréquence ?

Est-ce que je ne lis pas très bien l'aide ou est-ce que ce n'est pas possible ?

 
Nikolai Semko:

Question :

Comment puis-je savoir que la minuterie est en marche et quelle est sa fréquence ?

Ou bien je ne lis pas très bien l'aide, ou bien ce n'est pas possible ?

A en juger par le silence, il n'y a probablement pas de telle possibilité. :((

Mais comment se fait-il qu'il s'agisse d'une fonction très simple et utile ?

Par exemple, je crée une classe qui utilise le timer. Et à l'intérieur de la classe, je peux activer et désactiver le minuteur, changer sa périodicité. Mais pour travailler sans conflit avec le reste du programme, la classe doit savoir si le timer est activé ou désactivé et quelle est sa périodicité.

 
Nikolai Semko:

A en juger par le silence, il n'y a probablement pas une telle possibilité. :((

Mais pourquoi ? Après tout, il s'agit d'une fonction très simple et utile !

Par exemple, je crée une classe qui utilise une minuterie. Et à l'intérieur de la classe, je peux activer et désactiver le minuteur, changer sa périodicité. Mais pour travailler avec le reste du programme sans conflits, la classe doit savoir si le timer est activé ou désactivé et quelle est sa périodicité.

Donc, vous êtes le bienvenu pour savoir si la minuterie est en marche ou non.

 
Sergey Dzyublik:

Drapeau sur la cour de récréation, ou plutôt la salle de classe.

Ça ne servira à rien. Surtout si la minuterie est déjà en marche avant d'être activée dans la classe, par exemple à des intervalles de quelques heures ou jours. Alors une telle classe ruinera toute la logique du programme.

 
Sergey Dzyublik:

La comparaison est-elle donc correcte ?

J'ai essayé à la fois le feng shui et ceci - le résultat est le même. Le fait est que tout fonctionne 99% du temps, et j'ai besoin de 100%. Pour l'instant, l'essentiel pour moi est de trouver la bonne logique, et je pourrai faire la beauté plus tard.

J'ai oublié d'ajouter seulement que l'erreur mentionnée ci-dessus apparaît dans le testeur. Lorsque je l'ouvre sur un graphique, je ne le vois pas ou je dois attendre l'extremum requis où cette erreur se reproduira.
 

Je n'ai pas compris ou j'ai déjà oublié :

Les valeurs des objets sont-elles retournées normalement sur l'hébergement partagé?

Par exemple, si la stratégie utilise des lignes, puis-je obtenir la valeur de ces lignes sur l'hébergement virtuel des méta-cotes ?