Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 356

 
Nauris Zukas:

Grazie, ma allora dovrei anche scalare i dati (se ho capito bene). Sembra che scalare i dati sia l'unica soluzione.

Perché scalare qualcosa? Basta usare 2 buffer, mettere i valori positivi in uno e quelli negativi nell'altro. Se il calcolo produce solo valori positivi, puoi moltiplicarli per -1. Ma se il calcolo produce sia valori positivi che negativi, allora il mio suggerimento non va bene.

Poi si potrebbero fare istogrammi di diverse larghezze. Prima il buffer che viene visualizzato con un istogramma ampio viene riempito con il valore, e poi quello che viene visualizzato con un istogramma sottile viene riempito con il valore.

Questo produrrà un istogramma. Qui vengono utilizzati quattro buffer.


 
Alexey Viktorov:

Perché scalare qualcosa? Basta usare 2 buffer, mettere i valori positivi in uno e quelli negativi nell'altro. Se il calcolo produce solo valori positivi, puoi moltiplicarli per -1. Ma se il calcolo produce sia valori positivi che negativi, allora il mio suggerimento non va bene.

Poi possiamo fare istogrammi di diverse larghezze. Il primo buffer da riempire con il valore è quello visualizzato nell'istogramma largo, e poi quello visualizzato nell'istogramma sottile.

Questo produrrà un istogramma. Qui vengono utilizzati quattro buffer.


Grazie, ma non si adatta a questa variante perché i buffer con le linee saranno per esempio nell'intervallo da 1,19653 a 1,19674 e l'istogramma sarà da 0 a 250. Tic e spread in una finestra, ecco perché ho voluto fare un secondo asse Y.

 
Nauris Zukas:

Grazie, ma non funzionerà, perché il buffer con le linee sarà per esempio nell'intervallo da 1,19653 a 1,19674 e l'istogramma sarà da 0 a 250. Tic e spread in una finestra, ecco perché ho voluto fare un secondo asse Y.

Sono d'accordo, non si adatta. Ma!!! Cosa farà il ridimensionamento? Forse dividere i valori dell'istogramma per 100? O moltiplicare per 0,01...

 
Alexey Viktorov:

Sono d'accordo, non si adatta. Ma!!! Cosa farebbe il ridimensionamento? Che ne dite di dividere i valori dell'istogramma per 100? O moltiplicare per 0,01...

Finora il seguente concetto: prendiamo il valore max/min dai buffer lineari e facciamo lo spread massimo sotto questi valori, gli altri spread sono scalati sotto il massimo.

 
Artyom Trishkin:

Quindi il broker non sta permettendo l'autotrading per il tuo conto, dato che tutto è abilitato e l'EA non apre posizioni o piazza ordini.

Cosa mostra il log quando l'EA cerca di inviare una richiesta di trading al server?

Gli ordini vengono piazzati ma IsTradeAllowed() è 0. Come può essere?

 
Andrei:

Intende dire che permette il trading automatico? Questo è anche abilitato...

Ha senso chiamare l'helpdesk del broker

 
Andrei:

Gli ordini vengono piazzati ma IsTradeAllowed() è 0. Come è possibile?


il conto è competitivo?

Ci sono almeno quattro parametri da controllare:

ACCOUNT_TRADE_EXPERT
ACCOUNT_TRADE_ALLOWED
TERMINAL_TRADE_ALLOWED
IsTradeAllowed(_Symbol,TimeCurrent())
 

Potete dirmi per favore come scrivere il codice per confrontare il tick corrente con il tick precedente per lo strumento commerciale selezionato?

Ho bisogno di confrontare: se Tick (corrente) > Tick (precedente), allora procedere all'esecuzione di tali ticks, e viceversa, se Tick (corrente) < Tick (precedente), allora procedere al calcolo di ticks2.

Così, voglio calcolare quanti tick in ogni barra, sul grafico e timeframe selezionato, stanno aumentando il prezzo e quanti lo stanno diminuendo.

Per favore, consigliatemi! Sto scrivendo il mio primo indicatore di allenamento, e il mio primo programma nella mia vita :(

Ho fatto bene?

int Tick;

int Tick2;

int start()

se((Bid - Bid[1]) > 0)

{

Tick++;

ritorno;

}

else

{

Tick2++;

ritorno;

}

 
YarTrade:

Potete dirmi per favore come scrivere il codice per confrontare il tick corrente con il tick precedente per lo strumento commerciale selezionato?

Ho bisogno di confrontare: se Tick (corrente) > Tick (precedente), allora procedere all'esecuzione di tali ticks, e viceversa, se Tick (corrente) < Tick (precedente), allora procedere al calcolo di ticks2.

Così, voglio calcolare quanti tick in ogni barra, sul grafico e timeframe selezionato, stanno aumentando il prezzo e quanti lo stanno diminuendo.

Per favore, consigliatemi! Sto scrivendo il mio primo indicatore di allenamento, e anche il mio primo programma nella mia vita :(

Lo sto facendo bene?

Prova a scrivere Data, Ora, Offerta e risultati dei tuoi calcoli su ogni segno di spunta. Poi lo carichi su Excel e lo controlli. Non ha senso riconciliare ogni dozzina di linee del programma!

Ma guardate, avete il ritorno in ogni ramo dell'operatore condizionale, cioè viene sempre eseguito. Quindi lo togliamo dall'operatore condizionale:

int Tick=0, Tick2=0;       // Для вставки программы используйте кнопку SRC
double Bid1;

void OnInit()
{
  Bid1=Bid;
}

void start()   // Вместо start более модно писать OnTick
{
    if(Bid > Bid1) Tick++;                             
    else           Tick2++;
    Bid1=Bid;                          
}

Bid[1] - è così?

 
STARIJ:
// Вместо start более модно писать OnTick

:)