voidOnStart()
{
int Target=6; //Количество тайм-фреймовint Counter_UP=0; //Счетчик нахождения цены над МАint Counter_DOWN=0;
int MA = 200; //Период МАdouble bufer_MA[]; //Буфер для хендлаENUM_TIMEFRAMES frame1[10]; //Битная маска тайм-фреймов//___________________int битная маска ENUM Массив таймфреймов__________________________________________
frame1[1]=1;
frame1[2]=5;
frame1[3]=15;
frame1[4]=30;
frame1[5]=16385;
frame1[6]=16388;
frame1[7]=16408;
frame1[8]=32769;
frame1[9]=49153;
//____________________________________________________________________________________________________________int KollSymbols = SymbolsTotal(true); //Колл. символов в маркет вотчAlert("Колл.Инстр = ",KollSymbols);
//---int MA200; //Переменная для хендлаfor(int i=0; i<KollSymbols; i++) //Перебераем все символы из маркет вотч
{
string symbol = SymbolName(i,true); //Выбираем имя символа из маркет вотч// Alert("symbol = ",symbol,"i= ",i);for(int I=1; I<=Target; I++) //Перебераем таймфреймы
{
MA200 = iMA(symbol,frame1[I],MA,0,MODE_EMA,PRICE_MEDIAN); //хендл на выбранном таймеCopyBuffer(MA200,0,TimeCurrent(),5,bufer_MA); // заполнение масива bufer_MA хендлом MA200 выбранного таймаArraySetAsSeries(bufer_MA,true); //Разворачиваем массив как в тайм-серии//Alert("Символ - ",symbol,"i= ",i);// Alert("Simbol = ",symbol," bufer_MA[1] = ",bufer_MA[1]);if(iClose(symbol,frame1[I],1) > bufer_MA[1]) //Если цена 1 баре, на выбранном символе и тайме, БОЛЬШЕ цены скользяхи на 1 баре
{
//Alert("iClose= ",iClose(symbol,frame1[I],1), " bufer_MA[1]= ",bufer_MA[1]);
Counter_UP++;
if(Counter_UP==Target)
Alert("Инструмент для наблюдения в покупки - ",symbol);
ArrayFree(bufer_MA); //Очистка буфера индикатора
}
else
{
ArrayFree(bufer_MA); //Очистка буфера индикатора
}
IndicatorRelease(MA200); //Удаление хендла
}
Counter_UP=0;
Counter_DOWN=0;
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
Funziona bene, e la lista dei 22 strumenti. Ci mette circa 5 minuti, ma è strano: passa la maggior parte del tempo a scrivere gli handle nell'array. Risultati del profiling
Domanda: perché ci vuole così tanto tempo per copiare 5 valori da un handle a un array, anche se viene copiato 132 volte per 22 strumenti della lista, cioè per 273 strumenti avrei bisogno di copiare 1632 volte, e con il caricamento della cronologia per tutti gli strumenti sul disco rigido.
Kira27 #: Così, si è scoperto che la sceneggiatura
funziona bene. E la lista dei 22 strumenti impiega circa 5 minuti per essere elaborata. Questo è strano, però. Passa la maggior parte del tempo a scrivere l'handle nell'array. Risultato del profiling
Domanda: perché ci vuole così tanto tempo per copiare 5 valori da un handle a un array, mentre la copia viene eseguita 132 volte per 22 strumenti della lista, cioè per 273 strumenti avrei bisogno di copiare 1632 volte, inoltre, con il caricamento della cronologia per tutti gli strumenti sul mio disco rigido.
Se non mi sbaglio.
Sembra funzionare normalmente, se le citazioni sono state scaricate, non rallenta. Il primo avvio è molto lungo, apparentemente scarica le citazioni.
//+------------------------------------------------------------------+voidOnStart()
{
int Target = 6; //Количество тайм-фреймовint Counter_UP = 0; //Счетчик нахождения цены над МАint Counter_DOWN = 0;
int MA = 200; //Период МАdouble bufer_MA[]; //Буфер для хендлаint MA200[][9]; //Переменная для хендлаstring symbol[];
ENUM_TIMEFRAMES frame1[9]; //Битная маска тайм-фреймов//___________________int битная маска ENUM Массив таймфреймов__________________________________________
frame1[0] = 1;
frame1[1] = 5;
frame1[2] = 15;
frame1[3] = 30;
frame1[4] = 16385;
frame1[5] = 16388;
frame1[6] = 16408;
frame1[7] = 32769;
frame1[8] = 49153;
//____________________________________________________________________________________________________________int KollSymbols = SymbolsTotal(true); //Колл. символов в маркет вотчPrint("Колл.Инстр = ", KollSymbols);
int res = 0;
for(int i = 0; i < KollSymbols; i++)
{
for(int I = 0; I < 9; I++) //Перебераем таймфреймы
{
ArrayResize(MA200, i + 1);
ArrayResize(symbol, i + 1);
symbol[i] = SymbolName(i, true); //Выбираем имя символа из маркет вотч
MA200[i][I] = iMA(symbol[i], frame1[I], MA, 0, MODE_EMA, PRICE_MEDIAN); //хендл на выбранном таймеif(MA200[i][I] == INVALID_HANDLE)
PrintFormat("Инвалид хэндл, символ %s, тайм %d", symbol[i], frame1[I]);
res++;
}
}
Print("Создано хэндлов = " + (string)res);
//---for(int i = 0; i < KollSymbols; i++)
{
for(int I = 0; I < 9; I++) //Перебераем таймфреймы
{
int size = CopyBuffer(MA200[i][I], 0, 1, 1, bufer_MA); // заполнение масива bufer_MA хендлом MA200 выбранного таймаPrintFormat("Скопировано %d, символ %s, тайм %d", size, symbol[i], frame1[I]);
if(size > 0)
if(iClose(symbol[i], frame1[I], 1) > bufer_MA[0]) //Если цена 1 баре, на выбранном символе и тайме, БОЛЬШЕ цены скользяхи на 1 баре
{
Counter_UP++;
}
}
}
Print("Counter_UP = " + (string)Counter_UP);
}
//+------------------------------------------------------------------+
Il punto dello script è di passare attraverso ogni strumento da Market Watch su timeframe da 1min a 4H
Se dovessi fare una cosa del genere, creerei un array e ci memorizzerei i dati passati, aggiornando i dati attuali. Questo eviterebbe cicli pesanti e CopyBuffer. Tutto volerebbe.
Sembra funzionare bene, se le citazioni vengono scaricate, non rallenta. Il primo avvio richiede un tempo molto lungo, credo che scarichi le citazioni.
Grazie per il tuo feedback e la tua versione del programma, la proverò)! Mi chiedo solo perché non cancelli le maniglie prima di finire il programma o saranno cancellate automaticamente dopo che il programma è finito, ma la memoria non viene liberata secondo il task manager.
Se dovessi fare una cosa del genere, creerei un array e ci memorizzerei i dati passati, aggiornando i dati attuali. Questo eviterebbe loop pesanti e CopyBuffer. Tutto volerebbe.
Grazie per il tuo feedback e la tua versione, la sperimenterò)! Non capisco solo perché non si cancellano le maniglie prima di terminare il programma? Oppure vengono cancellate automaticamente alla fine del programma, anche se la RAM non viene liberata, a giudicare dal task manager.
Ho letto da qualche parte che le maniglie degli indicatori vengono automaticamente cancellate dopo un certo intervallo di tempo dopo la fine dello script. Ma non è esatto.
Saluti! Potreste per favore consigliarmi come, dopo avertestato un EA in MQL5, far uscire una qualsiasi delle mie statistiche in una finestra popup quando si passa il mouse sopra le frecce?
Potete dirmi perché la funzione OrderSend sulle criptovalute non funziona durante i test con il broker AMarkets. Non ho trovato alcun divieto di trading sulle criptovalute da parte del regolamento. O forse ho degli errori nel mio codice? GetLastError dà l'errore 4756
Funziona bene, e la lista dei 22 strumenti.
Ci mette circa 5 minuti, ma è strano: passa la maggior parte del tempo a scrivere gli handle nell'array. Risultati del profiling 
Domanda: perché ci vuole così tanto tempo per copiare 5 valori da un handle a un array, anche se viene copiato 132 volte per 22 strumenti della lista, cioè per 273 strumenti avrei bisogno di copiare 1632 volte, e con il caricamento della cronologia per tutti gli strumenti sul disco rigido.
sulla creazione e l'eliminazione di maniglie,
funziona, sono interessato al modo giusto, spero che gli sviluppatori me lo dicano.
È proprio quello che sto facendo, guarda il codice sopra, ci sono anche delle domande))
Così, si è scoperto che la sceneggiatura
funziona bene. E la lista dei 22 strumenti impiega circa 5 minuti per essere elaborata. Questo è strano, però. Passa la maggior parte del tempo a scrivere l'handle nell'array. Risultato del profiling
Domanda: perché ci vuole così tanto tempo per copiare 5 valori da un handle a un array, mentre la copia viene eseguita 132 volte per 22 strumenti della lista, cioè per 273 strumenti avrei bisogno di copiare 1632 volte, inoltre, con il caricamento della cronologia per tutti gli strumenti sul mio disco rigido.
Se non mi sbaglio.
Sembra funzionare normalmente, se le citazioni sono state scaricate, non rallenta. Il primo avvio è molto lungo, apparentemente scarica le citazioni.
Il punto dello script è di passare attraverso ogni strumento da Market Watch su timeframe da 1min a 4H
Se dovessi fare una cosa del genere, creerei un array e ci memorizzerei i dati passati, aggiornando i dati attuali. Questo eviterebbe cicli pesanti e CopyBuffer. Tutto volerebbe.
Se non mi sbaglio.
Sembra funzionare bene, se le citazioni vengono scaricate, non rallenta. Il primo avvio richiede un tempo molto lungo, credo che scarichi le citazioni.
Grazie per il tuo feedback e la tua versione del programma, la proverò)! Mi chiedo solo perché non cancelli le maniglie prima di finire il programma o saranno cancellate automaticamente dopo che il programma è finito, ma la memoria non viene liberata secondo il task manager.
Se dovessi fare una cosa del genere, creerei un array e ci memorizzerei i dati passati, aggiornando i dati attuali. Questo eviterebbe loop pesanti e CopyBuffer. Tutto volerebbe.
Grazie, ci penserò anche io)
Grazie per il tuo feedback e la tua versione, la sperimenterò)! Non capisco solo perché non si cancellano le maniglie prima di terminare il programma? Oppure vengono cancellate automaticamente alla fine del programma, anche se la RAM non viene liberata, a giudicare dal task manager.
Ho letto da qualche parte che le maniglie degli indicatori vengono automaticamente cancellate dopo un certo intervallo di tempo dopo la fine dello script. Ma non è esatto.
Ciao
il terminale ha uno strumento di regressione lineare
ci sono script che disegnano lo stesso canale con oggetti grafici
Ma solo la linea centrale è disegnata correttamente, le linee di deviazione sono disegnate ad una distanza errata da quella centrale
consigliare se qualcuno conosce la formula corretta per calcolare la deviazione, dovrebbe essere come nel terminale
o forse c'è una soluzione già pronta
GRAZIE
Ciao!
Potete dirmi perché la funzione OrderSend sulle criptovalute non funziona durante i test con il broker AMarkets. Non ho trovato alcun divieto di trading sulle criptovalute da parte del regolamento. O forse ho degli errori nel mio codice? GetLastError dà l'errore 4756