Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 688

 
vld:
Stavo parlando della finestra dati del terminale, il resto è più o meno chiaro)

Quindi vuoi vedere la data e l'ora della candela e la lettura dell'indicatore quando ci passi sopra il mouse?
 
AlexeyVik:

Quindi, vuoi vedere la data e l'ora delle letture delle candele e degli indicatori?

Un espediente, ma andiamo)

Posso vedere la data e l'ora della candela così com'è passandoci sopra il mouse. Letture dell'indicatore del limite dell'intervallo di tempo in cui mi trovo,

Il numero di giorni, ecc., barre dell'intervallo di tempo e alla sua fine (è contato e mostrato in secondi).

Sì, e che ho per date di quotazioni Time[0], Time[Bars-1].

Per evitare scatti inutili)

 
vld:

Un espediente, ma andiamo)

Posso vedere la data e l'ora della candela così com'è passandoci sopra il mouse. Letture dell'indicatore del limite dell'intervallo di tempo in cui mi trovo,

Il numero di giorni, ecc., barre dell'intervallo di tempo e alla sua fine (è contato e mostrato in secondi).

Sì, e che ho per date di quotazioni Time[0], Time[Bars-1].

Così che senza scatti inutili)


Non lo capisco, anche se non è una gag, è una sorpresa di incomprensione.
 

La funzione start() era di tipo int. Ora è di tipo nullo. Esiste una cosa del genere. Una volta era conveniente abbandonare la funzione start() se falliva. Ma ora non è così conveniente. Ho preso uno dei gufi antichi, dove si può vedere come stavo scrivendo prima:

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];     // На текущем баре все необходимые действия..
                                     // .. успешно выполнены
   }
}

In pratica, con la variabilegdt_LastBarTime controllo l'apertura di una nuova barra. Una volta era diverso. L'ho scritto così:

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

Saltavo qualsiasi altra operazione. In che modo è più conveniente attuarlo ora? Perché non c'è la possibilità di restituire alcun valore. Si scopre che se ho inserito una condizione, qualunque cosa succeda lì, la funzione arriverà alla fine e la variabile gdt_lastBarTime otterrà un nuovo valore. Il punto è che inviare richieste al terminale ad ogni tick non è un'opzione. Quindi dobbiamo limitare questo caso in modo più preciso. E se la funzione non può essere abbandonata, come, per esempio, con la funzione int o booleana, significa che funzionerà comunque.

 
hoz:

La funzione start() era di tipo int. Ora è di tipo nullo. Esiste una cosa del genere. Una volta era conveniente abbandonare la funzione start() se falliva. Ma ora non è così conveniente. Ho preso uno dei gufi antichi, dove si può vedere come stavo scrivendo prima:

In pratica, con la variabilegdt_LastBarTime controllo l'apertura di una nuova barra. Una volta era diverso. L'ho scritto così:

Saltavo qualsiasi altra operazione. In che modo è più conveniente attuarlo ora? Perché non c'è la possibilità di restituire alcun valore. Si scopre che se ho inserito la condizione, qualunque cosa succeda lì, la funzione arriverà alla fine e la variabile gdt_lastBarTime otterrà un nuovo valore. Il punto è che inviare richieste al terminale ad ogni tick non è un'opzione. Quindi dobbiamo limitare questo caso in modo più preciso. E se la funzione non può essere abbandonata, come, per esempio, con la funzione int o booleana, significa che funzionerà comunque.

Cosa c'è di male nel nonavere parametri?
 
evillive:
il ritorno senza parametri non è soddisfacente?
Questo è il punto in cui mi sono fermato.
 

È sorta una domanda sull'uso dei buffer indicatori - diciamo che due buffer in una finestra separata disegnano un istogramma. Il primo mostra alcuni valori nominali e il secondo mostra i valori di picco.
È possibile proibire programmaticamente l'uso del secondo buffer da parte di indicatori esterni (wizard, ecc.), cioè usarlo solo per visualizzare i valori richiesti sul grafico, ma non essere visibile agli indicatori esterni che vengono sovrapposti dall'utente sul grafico?

 
atztek:

È possibile proibire programmaticamente l'uso del secondo buffer da parte di indicatori esterni (wizard, ecc.), cioè in modo che sia utilizzato solo per visualizzare i valori richiesti sul grafico, ma non visibile agli indicatori esterni che vengono sovrapposti dall'utente sul grafico?

No. Tutto ciò che è visibile può essere letto programmaticamente.
 
TheXpert:
No. Tutto ciò che è visibile può essere programmaticamente contato.

Capisco.
Grazie!
 

È possibile creare un array bidimensionale impostando la dimensione della seconda dimensione su una variabile invece che su una costante?

Motivazione: