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

 
Snower: La linea gialla è il canale di prezzo che il prezzo dovrebbe sfondare, e che l'ordine si aprirebbe con una candela smiley face, e tutti quelli prima sarebbero ignorati

nel tuo pezzo di codice, il canale di prezzo channel_top e channel_bottom è definito sopra? Dov'è la definizione di una barra di spillo?

 
Vitaly Muzichenko:

Rispondi

Artyom, non hai letto attentamente: il TS deve aprirsi solo alla rottura di una pin bar, rispettivamente, se si prescrive una pin bar (corpo piccolo e ombre grandi), la condizione può essere soddisfatta

Vitaly, stavo rispondendo a questo:

...e ignorava tutte quelle precedenti...

Se tutti quelli che c'erano prima erano pin bar, allora come puoi ignorarli quando erano attuali, erano pin bar che attraversavano la linea?

 
Sergey Likho:

Come viene gestita la funzione iCustom in MT4? Si prega di rispondere a coloro che ne sono a conoscenza!


Nel tester di strategie, per esempio, un EA chiama l'indicatore ad ogni tick.

Quando la funzione viene chiamata, l'indicatore viene caricato nella memoria, ricalcola tutti i valori dalla barra zero a Bars e poi restituisce il valore all'offset richiesto.

Se richiedo il valore di 1 barra sul primo tick e il valore della seconda barra sul secondo tick, allora il mio Expert Advisor calcolerà l'indicatore due volte su tutta la storia?


Se l'Expert Advisor accede all'indicatore1, e ha iCustom all'indicatore2. Quante volte sarà ricalcolato l'indicatore2 quando si richiede il valore dell'indicatore1?


Forse, lo Strategy Tester e il terminale MT4 memorizzano i valori degli indicatori su ogni barra, in modo da non ricalcolarli alla richiesta ripetuta?

Tutto dipende dalla realizzazione dell'indicatore. Se il calcolo è corretto, allora l'indicatore calcola solo la barra corrente - le altre sono state calcolate a (rates_total-prev_calculate)>1

 

come fare la media di iMAOnArray su un array se ci sono valoriEMPTY_VALUE nell'array?

 
Максим Дмитриев:

come fare la media di iMAOnArray su un array se ci sono valoriEMPTY_VALUE nell'array?


Se almeno un valore nel campione di media èEMPTY_VALUE, allora anche il valore di iMAOnArray in quel punto èEMPTY_VALUE.

 

Buona giornata a tutti voi. Sto testando un EA. Non ho intenzione di commerciare con esso, ma solo di controllare una certa regolarità. L'EA apre un ordine su ogni minuto di candela e se l'ordine viene chiuso su uno SL, apre un altro ordine BUY al prezzo di chiusura su uno SL.


int start()                                             
{
if(Bid == iOpen(NULL,PERIOD_M1,0))
if ( G != Minute() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,Y10,123 );
G  =  Minute();
}
////*******   Если в списке закрытых ордеров есть ордер закрытый по СЛ - открыть другой ордер
int Счетф=0,  Номерф=OrdersHistoryTotal()-1;
for( ; Номерф>=0; Номерф--)
{
if(!OrderSelect(Номерф, SELECT_BY_POS, MODE_HISTORY)) continue;
if(OrderProfit()>=0) break;
Счетф++;
if(Счетф>0)
if(TimeCurrent()==OrderCloseTime())
OrderSend(Symbol(),OP_BUY,1,Ask,1,Bid-400*Point,Bid+200*Point,Y11,123 );
}
return;
}

Ilproblema è... Se diversi ordini vengono chiusi su un tick e l'ultimo ordine viene chiuso su un PI, l'ordine BUY di cui ho bisogno non viene aperto. Questo perché il programma pensa che l'ultimo ordine sia stato chiuso da un TP e non da un SL. Ecco un esempio di una tale situazione

13:38:15.859 2008.01.02 15:01:46 Tester: stop loss #232 a 1.46566 (1.46560 / 1.46562)

13:38:15.859 2008.01.02 15:01:46 Tester: stop loss #233 a 1.46566 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:01:46 Tester: take profit #302 a 1.46562 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:02:00 MACD Sample EURUSD,M1: aprire #347 vendere 0.10 EURUSD a 1.46570 sl: 1.46972 tp: 1.46372 ok
Potresti spiegare quale struttura linguistica dovrebbe essere usata per aprire un ordine BUY su un tick subito dopo che l'ordine SL è stato chiuso sullo stesso tick con l'ordine SL.

Grazie.

 

Ciao!

Mi sono già scervellato. Come faccio a controllare se c'è un certo prezzo nell'array doppio?

L'ho scritto così per il test:


double prmas[5] = {11,22,33,44,99};

ArrayBsearch(prmas,OrderOpenPrice(),WHOLE_ARRAY,0,MODE_ASCEND));


Lo script trova 11, 22, 33, 44 senza problemi (il terminale ha tali ordini). Tuttavia, se lo script elabora il prezzo di 45, per esempio, mostra ancora 3 (posizione del prezzo 44 nell'array).

Quello di cui ho davvero bisogno è un bool - se c'è un prezzo dell'ordine in elaborazione nell'array, dovrebbe restituire true, altrimenti dovrebbe restituire false. Ma non ho ancora trovato una tale funzione nella lingua.

 

Buon pomeriggio. Potete dirmi perché il file non viene creato e i dati non vengono scritti:

   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   string file_name=terminal_data_path+"\\MQL4\\Files\\VolC(Symbol(),Period())";
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
YarTrade: Buon pomeriggio. Potete dirmi perché il file non viene creato e i dati scritti in esso?

Esaminate attentamente la cartella Files!!! Scrivere sempre nella sandbox = cartella dei file . Provate in questo modo:

   string file_name=VolC(Symbol(),Period());  // А кто такой ВолК = VolC  ???
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
STARIJ:

Esaminate attentamente la cartella Files!!! Scrivere sempre nella sandbox = cartella dei file . Prova così:


VolC - Ho chiamato il file in quel modo. Non è necessario il nome del file?