Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 730
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
barre[]
ChiamatoBars, il compilatore lo sta rimproverando al cielo. Avete testato questo design, o avete solo supposto che dovrebbe funzionare, o sto facendo qualcosa di sbagliato?
Sì, errore mio. Dare un nome. In generale, l'idea è di dare nomi espressivi alle variabili, poi non sarà necessario creare variabili aggiuntive, la cui esistenza non è sempre giustificata.
La ragione non è per esprimere qualcosa, ma per abbreviare il codice quando si lavora con loro:
E il resto allo stesso modo, altrimenti la lunghezza delle linee aumenta
Grazie a tutti per i chiarimenti!
Non l'ho chiamato per esprimere qualcosa, ma per ridurre il codice quando si lavora con loro:
E il resto allo stesso modo, altrimenti la lunghezza delle linee aumenta
Grazie a tutti per i chiarimenti!
Se volete ridurre il codice al minimo, fate riferimento direttamente all'array di dati
//| test09.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
MqlRates bars[]; // массив для хранения данных цен OHLC
int start_bar=0; // с какого бара копируем
int count_bar=4; // сколько баров копируем
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
ArraySetAsSeries(bars, true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(CopyRates(Symbol(),PERIOD_CURRENT, start_bar, count_bar, bars)<count_bar) return;
if(bars[1].open<bars[1].close && bars[2].close>bars[3].close && bars[1].close>bars[2].close)
{
}
}
//+------------------------------------------------------------------+
Buon pomeriggio!
Dove e come cancellare correttamente gli ordini piazzati e le posizioni aperte quando si scarica (cancella) un Expert Advisor? Se non è difficile, per favore condividi un esempio.
Grazie.
Uno degli EAs sta avendo qualche strano nonsenso. Testa l'EA normalmente, cliccando su "Run single test" ne esegue solo uno, la prima volta. Poi, quando cliccate sul singolo test o cliccate su qualsiasi linea nell'Ottimizzazione, questo viene mostrato nel Journal:
2017.02.08 13:31:05.165 Tester non può ottenere input per il passaggio 4234087422336
2017.02.08 13:31:34.829 Tester non può ottenere input per il passaggio 4076312468706
2017.02.08 13:31:47.973 Tester non può ottenere input per il passaggio 1004506640527
Gli altri EA si comportano normalmente. Cosa potrebbe essere?
Signori, registrando un'enorme matrice 10000*10000
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
Come pensi che questo algoritmo sia efficiente in termini di velocità?
Perché quando la matrice è 1000*1000 la velocità è di pochi secondi, quando aumenta a 10000*10000 il sistema si alza
Signori, registrando un'enorme matrice 10000*10000
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
Come pensi che questo algoritmo sia efficiente in termini di velocità?
Perché quando la matrice è 1000*1000 la velocità è di pochi secondi, quando aumenta a 10000*10000 il sistema si alza
C'è confusione?
Come è possibile ottenere una tale matrice se non sono ammessi più di quattro matrici dimensionali?
Non c'è confusione?
10000 x 10000 non è una matrice bidimensionale?
e tutto il resto...
Come è possibile ottenere una tale matrice se non sono ammessi più di quattro matrici dimensionali?
C'è confusione?