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

 
vld:
Je parlais de la fenêtre de données du terminal, le reste est plus ou moins clair).

Vous voulez donc voir la date et l'heure du chandelier et la lecture de l'indicateur lorsque vous passez votre souris dessus ?
 
AlexeyVik:

Vous voulez voir la date et l'heure des lectures des chandeliers et des indicateurs ?

Un gadget, mais allez)

Je peux voir la date et l'heure de la bougie telle qu'elle est en la survolant. Les lectures de l'indicateur de l'intervalle de temps délimitent où je suis,

Le nombre de jours, etc., barres de l'intervalle de temps et jusqu'à sa fin (il est compté et affiché en secondes).

Oui, et que j'ai par dates de cotations Time[0], Time[Bars-1].

Pour éviter les secousses inutiles)

 
vld:

Un gadget, mais allez)

Je peux voir la date et l'heure de la bougie telle qu'elle est en la survolant. Les lectures de l'indicateur de l'intervalle de temps délimitent où je suis,

Le nombre de jours, etc., barres de l'intervalle de temps et jusqu'à sa fin (il est compté et affiché en secondes).

Oui, et que j'ai par dates de cotations Time[0], Time[Bars-1].

Pour que sans à-coups inutiles)


Je ne comprends pas, même si ce n'est pas un gag, c'est une surprise d'incompréhension.
 

La fonction start() était auparavant de type int. Maintenant, c'est le type de vide. Ça existe. Il était autrefois pratique de quitter la fonction start() si elle échouait. Mais maintenant, ce n'est pas si pratique. J'ai pris une des anciennes chouettes, où vous pouvez voir comment j'écrivais avant :

void OnTick()
{
//---
   if (gdt_lastBarTime != Time[0])      // Если открылся новый бар, отрабатываем требуемые действия
   {
      int signal = GetGeneralSignal();
   
      if (signal != SIGNAL_NO)
          if (!Trade(signal))
              return (0);
          
      // Блок управления позициями   
      for (int li_Ord = OrdersTotal()-1; li_Ord >= 0; li_Ord--)
      {
         if (!OrderSelect(li_Ord, SELECT_BY_POS)) continue;
         if (OrderMagicNumber() != ii_Magic) continue;
         if (OrderSymbol() != Symbol()) continue;
       
          SPos.gi_CurTicket = OrderTicket();
          SPos.gi_Type = OrderType();
       
          // Блок модификации ордеров       
          if (id_SL != 0 || id_TP != 0)
          {
             if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
             {
                OrdersModifyer (ticket);
             }
          }
          // Блок перевода ордеров в б.у.
          if (OrderStopLoss() <= gd_PriceBU)
          {
             if (OrderType() > 1) continue;
             MovingStopLossToBU();
          }
          // Блок траала открытых ордеров
          if (OrderStopLoss() > gd_PriceBU)
          {
             TrailingStop();
          }

          // Удаление просроченных отложенных ордеров
          if (OrderOpenPrice() < Time[0])
          {
             DeletePendingOrders();
          }
      }
      
      gdt_lastBarTime = Time[0];     // На текущем баре все необходимые действия..
                                     // .. успешно выполнены
   }
}

En gros, avec la variablegdt_LastBarTime je contrôle l'ouverture d'une nouvelle barre. C'était différent avant. Je l'ai écrit comme ça :

if (gdt_lastBarTime == Time[0]) return (0)

Je sautais toute autre opération. En quoi est-ce plus pratique de mettre cela en œuvre maintenant ? Parce qu'il n'y a pas de possibilité de retourner une valeur. Il s'avère que si je saisis la condition, quoi qu'il arrive, la fonction arrivera à la fin et la variable gdt_lastBarTime recevra une nouvelle valeur. Le fait est que l'envoi de requêtes au terminal à chaque tick n'est pas une option. Nous devons donc limiter ce cas de manière plus précise. Et si la fonction ne peut pas être quittée, comme, par exemple, avec la fonction int ou booléenne, cela signifie qu'elle fonctionnera de toute façon.

 
hoz:

La fonction start() était auparavant de type int. Maintenant, c'est le type de vide. Ça existe. Il était autrefois pratique de quitter la fonction start() si elle échouait. Mais maintenant, ce n'est pas si pratique. J'ai pris une des anciennes chouettes, où vous pouvez voir comment j'écrivais avant :

En gros, avec la variablegdt_LastBarTime je contrôle l'ouverture d'une nouvelle barre. C'était différent avant. Je l'ai écrit comme ça :

Je sautais toute autre opération. En quoi est-ce plus pratique de mettre cela en œuvre maintenant ? Parce qu'il n'y a pas de possibilité de retourner une valeur. Il s'avère que si je saisis la condition, quoi qu'il arrive, la fonction arrivera à la fin et la variable gdt_lastBarTime recevra une nouvelle valeur. Le fait est que l'envoi de requêtes au terminal à chaque tick n'est pas une option. Nous devons donc limiter ce cas de manière plus précise. Et si la fonction ne peut pas être quittée, comme, par exemple, avec la fonction int ou booléenne, cela signifie qu'elle fonctionnera de toute façon.

Qu'y a-t-il de mal à ne pasavoir de paramètres ?
 
evillive:
Le retour sans paramètres n'est pas satisfaisant ?
C'est là que je me suis arrêté.
 

Une question a été soulevée concernant l'utilisation des tampons d'indicateurs - disons que deux tampons dans une fenêtre séparée dessinent un histogramme. La première montre des valeurs nominales et la seconde des valeurs de pointe.
Est-il possible d'interdire programmatiquement l'utilisation du second tampon par des indicateurs externes (assistants, etc.), c'est-à-dire de l'utiliser uniquement pour afficher les valeurs requises sur le graphique, mais de ne pas le rendre visible aux indicateurs externes qui sont superposés par l'utilisateur sur le graphique ?

 
atztek:

Est-il possible d'interdire programmatiquement l'utilisation du second tampon par des indicateurs externes (assistants, etc.), c'est-à-dire qu'il ne soit utilisé que pour afficher les valeurs requises sur le graphique, mais qu'il ne soit pas visible pour les indicateurs externes qui sont superposés par l'utilisateur sur le graphique ?

Non. Tout ce qui est visible peut être lu de manière programmatique.
 
TheXpert:
Non. Tout ce qui est visible peut être compté de manière programmatique.

Je vois.
Merci !
 

Est-il possible de créer un tableau à deux dimensions en fixant la taille de la deuxième dimension à une variable plutôt qu'à une constante ?