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

 

Salve.

Esiste una funzione NewBar(sy, TF). Sembra che si sia aperto un nuovo bar. Ho bisogno di ottenere un segnale sul grafico orario sulla comparsa di una nuova barra con un ritardo di 5 minuti. Voglio ottenere il segnale a 0,05, 1,05, 2,05, ..........., 10,05, 11,05, ecc.


Come si può fare? Forse la funzione stessa può essere riprogettata in qualche modo?

 
hoz:

Bene, ho rimosso la libreria #property, ma non c'è stato nessun avvertimento, mentre non c'è nessuna funzione di avvio...

Avvertimenti su cosa?
 
Vinin:

Avvertimenti su cosa?


Che dire... Qui:

sergeev:
ne avete bisogno se non volete vedere avvertimenti su un inizio mancante

 
gince:

Salve.

Esiste una funzione NewBar(sy, TF). Controlla se è stata aperta una nuova barra. Ho bisogno di ottenere un segnale sul grafico orario sulla comparsa di una nuova barra con un ritardo di 5 minuti. Voglio ottenere il segnale a 0,05, 1,05, 2,05, ..........., 10,05, 11,05, ecc.


Come si può fare? È possibile modificare la funzione stessa?


Lo dichiari globalmente:

datetime = bdt_lastBarTime;

IN INIT:

bdt_lastBarTime = 0;

IN INIZIO:

if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

g_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Invece di Time[0]; potete marcare iTime() per ottenere una nuova barra per un timeframe diverso da quello corrente.

 
hoz:


Lo dichiari globalmente:

INIT:

IN INIZIO:

Potete marcare iTime() invece di Time[0]; per ottenere una nuova barra per un timeframe diverso da quello corrente.


L'unico problema è. I nomi delle variabili non corrispondono. Ahi, ahi. Si tratta di disattenzione o di abitudine.
 
Vinin:

Solo che qui c'è il problema. I nomi delle variabili non corrispondono. Oh, cielo. O disattenzione o abitudine

Questa è disattenzione. Correzione.

Voi dichiarate globalmente:

datetime = bdt_lastBarTime;

IN INIT:

bdt_lastBarTime = 0;

IN INIZIO:

if (bdt_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

bdt_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Potete marcare iTime() invece di Time[0]; per ottenere una nuova barra per un timeframe diverso da quello corrente.

 

a colpo d'occhio, solo specificamente per questo compito.

bool NewBar05()
{
static bool newbar;
if (Minute()==5 && !newbar) 
   {
   newbar=true;
   return true;
   } 
if (Minute()>5 && newbar)  newbar=false;
   return  false;
}
    
 
xxxKillxxx:

Compagno, mi scusi ancora, ma ho un problema.... Sono riuscito a controllare tutti i blocchi per chiudere senza errori o avvertimenti e non sto ottenendo alcuna sintassi, ma non sto ricevendo alcun segnale quando avvio il mio EA, i miei trade non si chiudono come previsto. Il problema è che non posso mettere il codice dell'EA, e per risolvere il problema bene molto necessario, se non ti dispiace spendere su di me ancora una volta il vostro tempo prezioso, per favore dimmi quali opzioni possono essere per affrontare il problema, se è importante, posso solo dire che l'EA è stato creato a forex generator 4.

Vorrei chiedervi di spiegare le ragioni (preferibilmente sulle dita e con la lingua, perché io faccio solo questo tipo di programmazione) Grazie in anticipo.


Il mio codice o parte del codice del tuo Expert Advisor chiude il profitto specificato dello 0,1% e oltre. Sul generatore di forex 4 sei riuscito a fare qualcosa per far sì che il capitale sia più alto del saldo?
 
Roger:

a colpo d'occhio, proprio per questo compito.


Grazie a tutti per il vostro aiuto.

La domanda era la seguente.

<C'è una funzione NewBar(sy, TF). Controlla se è stato aperto un nuovo bar. Ho bisogno di ottenere un segnale sul grafico orario sulla comparsa di una nuova barra con un ritardo di 5 minuti. Cioè, voglio ottenere un segnale a 0,05, 1,05, 2,05, ..........., 10,05, 11,05, ecc. >

Per chiarire la domanda. La funzione dovrebbe restituire vero ogni ora, ma con un ritardo di 5 minuti. Cioè quando la formazione della barra 1.05 è finita e appare la barra 2.05, la funzione restituisce vero quando appare quest'ultima. La funzione restituisce vero quando la barra appare a 1,10, 2,10, ecc.

Nell'immagine la linea gialla mostra che la barra successiva era vera.

Seguendo il tuo consiglio ho provato in questo modo ma non funziona.

bool isNewBar5 ()
{

    static int   LastBar = 0; 
    datetime      curbar = iTime (Symbol(), 60, 0) +300; 
    int                h = Hour();
    if (LastBar != curbar && h == h + 1 && Minute() == 5)
    {
        LastBar = curbar;
        return (true);
    }
    else
    {return (false);}
}
 
gince:

Salve.

La funzione NewBar(sy, TF) è disponibile. Controlla se si è aperta una nuova barra. Ho bisogno di ottenere un segnale di una nuova barra sul grafico orario con un ritardo di 5 minuti. Voglio ottenere il segnale a 0,05, 1,05, 2,05, ..........., 10,05, 11,05, ecc.


Come si può fare? Forse la funzione stessa può essere riscritta?


int bt=((TimeCurrent()-5*60)/3600)*3600;

Il valore di bt cambierà a 5 minuti di ogni ora. È possibile non moltiplicare per 3600 alla fine, sarà il numero della barra dall'inizio dell'epoca, questo è sufficiente per definire una nuova barra.