Gli estremi giornalieri, e quelli che trovate sono essenzialmente estremi, i minimi (o i massimi) hanno una distanza abbastanza lunga dal prezzo attuale. La differenza tra il minimo e il massimo di 132 giorni sull'eu è più di 12300 pip. Prezzo dal minimo più vicino di 2000, dal massimo di 800.
Non lo capisco nemmeno io.
Mi dispiace, cercherò di spiegare domani stanco oggi
intArrayCopyRates( MqlRates&rates_array[],// array di MqlRates passato per riferimento stringasymbol=NULL,// lo strumento inttimeframe=0// timeframe );
Copia i dati delle barre del grafico specificato in un array bidimensionale della forma double RateInfo[][6] e restituisce il numero di barre copiate.
Quando si usa la seconda forma di chiamata, i dati vengono effettivamente copiati nell'array dest_array[][], l'array stesso viene automaticamente riallocato per corrispondere alla dimensione del timeframe (anche se l'array è stato dichiarato statico).
La prima dimensione della matrice contiene il numero di barre. La seconda dimensione ha 6 elementi con i valori:
0 - tempo (time), 1 - prezzo aperto (open), 2 - prezzo più basso (low), 3 - prezzo più alto (high), 4 - prezzo di chiusura (close),
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
intArrayCopyRates( MqlRates&rates_array[],// array di MqlRates passato per riferimento stringasymbol=NULL,// lo strumento inttimeframe=0// timeframe );
Copia i dati delle barre del grafico specificato in un array bidimensionale della forma double RateInfo[][6] e restituisce il numero di barre copiate.
Quando si usa la seconda forma di chiamata, i dati vengono effettivamente copiati nell'array dest_array[][], l'array stesso viene automaticamente riallocato per corrispondere alla dimensione del timeframe (anche se l'array è stato dichiarato statico).
La prima dimensione della matrice contiene il numero di barre. La seconda dimensione ha 6 elementi con i valori:
0 - tempo (time), 1 - prezzo aperto (open), 2 - prezzo più basso (low), 3 - prezzo più alto (high), 4 - prezzo di chiusura (close),
E dove viene salvato il valore restituito dell'int-type? Hai passato tutti i dati alla funzione, ma non hai ottenuto nulla da essa.
#property version"1.00"#property strict//символ и таймфрейм текущего графикаstring symbol;
ENUM_TIMEFRAMES frame;
datetime time;
struct BarData
{
struct Elem
{
int number; //порядковый номер периода (дня, месяца или года)double high; //максимум периодаdouble low; //минимум периодаdatetime time_high; //время максимумаdatetime time_low; //время минимума
} Arr[]; //массив периодаint index; //текущий индекс массиваdouble max; //последнее максимальное значение периодаdouble min; //последнее минимальное значение периодаdatetime time_max; //время максимумаdatetime time_min; //время минимума//при создании структуры указываем, что массив пустой
BarData(){index=-1;}
//функция записывает текущие экстремумыvoid WriteBar(int eNumber, string eSymbol, ENUM_TIMEFRAMES eFrame, datetime eTime)
{
int eShift=iBarShift(eSymbol,eFrame,eTime);
double eHigh=iHigh(eSymbol,eFrame,eShift);
double eLow=iLow(eSymbol,eFrame,eShift);
//если элементов ещё нет или период сменилсяif(index<0 || eNumber!=Arr[index].number)
{
ArrayResize(Arr,++index+1);
Arr[index].number=eNumber;
Arr[index].high=eHigh;
Arr[index].low=eLow;
Arr[index].time_high=eTime;
Arr[index].time_low=eTime;
}
//если произошло обновление текущего максимумаif(eHigh-Arr[index].high>0)
{
Arr[index].high=eHigh;
Arr[index].time_high=eTime;
}
//если произошло обновление текущего минимумаif(Arr[index].low-eLow>0)
{
Arr[index].low=eLow;
Arr[index].time_low=eTime;
}
//если произошло обновление предыдущего максимумаif(eHigh-max>0)
{
for(int i=index+1; i>=0; i--)
{
if(Arr[index].high-eHigh>0)
{
max=Arr[index].high;
time_max=Arr[index].time_high;
break;
}
}
}
//если произошло обновление предыдущего минимумаif(min-eLow>0)
{
for(int i=index+1; i>=0; i--)
{
if(eLow-Arr[index].low>0)
{
min=Arr[index].low;
time_min=Arr[index].time_low;
break;
}
}
}
}
} day, month, year;
intOnInit()
{
symbol=Symbol();
frame=(ENUM_TIMEFRAMES)Period();
return(INIT_SUCCEEDED);
}
voidOnTick()
{
//текущее время закрытого бара
time=iTime(symbol,frame,1);
MqlDateTime date;
TimeToStruct(time,date);
//делаем записи каждого периода
day.WriteBar(date.day,symbol,frame,time);
month.WriteBar(date.mon,symbol,frame,time);
year.WriteBar(date.year,symbol,frame,time);
//теперь имеем значения Comment(TimeToString(day.time_max)+" : "+DoubleToString(day.max)+" : "+DoubleToString(day.Arr[day.index].high)+"\n"+TimeToString(day.time_min)+" : "+DoubleToString(day.Arr[day.index].low)+" : "+DoubleToString(day.min));
}
Dovremmo cercare di evitare cicli inutili. Abbiamo un sacco di citazioni in arrivo, e devi fare le voci giuste al volo, in modo da non dover scavare nella storia e sprecare risorse del computer.
double Min_D_Level ; //il livello D min più vicino
O mi sfugge qualcosa?
Sì, lei non capisce qualcosa. Dovrebbe andare così:
Количество_баров=ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
Gli estremi giornalieri, e quelli che trovate sono essenzialmente estremi, i minimi (o i massimi) hanno una distanza abbastanza lunga dal prezzo attuale. La differenza tra il minimo e il massimo di 132 giorni sull'eu è più di 12300 pip. Prezzo dal minimo più vicino di 2000, dal massimo di 800.
Non lo capisco nemmeno io.
Mi dispiace, cercherò di spiegare domani stanco oggi
AUDUSD non è così per me
Cosa copia e dove ritorna?
Cosa viene copiato dove e a chi?
In cosa si copia e in cosa ritorna?
intArrayCopyRates(
MqlRates&rates_array[],// array di MqlRates passato per riferimento
stringasymbol=NULL,// lo strumento
inttimeframe=0// timeframe
);
Copia i dati delle barre del grafico specificato in un array bidimensionale della forma double RateInfo[][6] e restituisce il numero di barre copiate.
intArrayCopyRates(
void&dest_array[][],// array passato per riferimento
stringasymbol=NULL,// strumento
inttimeframe=0// timeframe
);
Parametri
ArrayCopyRatesQuando si usa la seconda forma di chiamata, i dati vengono effettivamente copiati nell'array dest_array[][], l'array stesso viene automaticamente riallocato per corrispondere alla dimensione del timeframe (anche se l'array è stato dichiarato statico).
La prima dimensione della matrice contiene il numero di barre. La seconda dimensione ha 6 elementi con i valori:
0 - tempo (time),
1 - prezzo aperto (open),
2 - prezzo più basso (low),
3 - prezzo più alto (high),
4 - prezzo di chiusura (close),
intArrayCopyRates(
MqlRates&rates_array[],// array di MqlRates passato per riferimento
stringasymbol=NULL,// lo strumento
inttimeframe=0// timeframe
);
Copia i dati delle barre del grafico specificato in un array bidimensionale della forma double RateInfo[][6] e restituisce il numero di barre copiate.
intArrayCopyRates(
void&dest_array[][],// array passato per riferimento
stringasymbol=NULL,// strumento
inttimeframe=0// timeframe
);
Parametri
ArrayCopyRatesQuando si usa la seconda forma di chiamata, i dati vengono effettivamente copiati nell'array dest_array[][], l'array stesso viene automaticamente riallocato per corrispondere alla dimensione del timeframe (anche se l'array è stato dichiarato statico).
La prima dimensione della matrice contiene il numero di barre. La seconda dimensione ha 6 elementi con i valori:
0 - tempo (time),
1 - prezzo aperto (open),
2 - prezzo più basso (low),
3 - prezzo più alto (high),
4 - prezzo di chiusura (close),
E dove viene salvato il valore restituito dell'int-type? Hai passato tutti i dati alla funzione, ma non hai ottenuto nulla da essa.
Dove viene salvato il valore di ritorno del tipo int? Hai passato tutti i dati nella funzione, ma non ne hai ricavato nulla.
Min_D_Level = iLow(_Symbol,PERIOD_D1,i); break;Sembra essere memorizzato qui
double Min_D_Level ; //il livello D minimo più vicino
o non capisco qualcosa?
E dove viene salvato il valore restituito di tipo int?
???
Sto davvero facendo un brainstorming.
È possibile farlo in modo più semplice?
Come se tu (tu) avessi fatto un errore qui, il modo giusto di farlo è questo esempio di codice, ecc.
È stato seduto qui per un po':
Dovremmo cercare di evitare cicli inutili. Abbiamo un sacco di citazioni in arrivo, e devi fare le voci giuste al volo, in modo da non dover scavare nella storia e sprecare risorse del computer.Più o meno così
double Min_D_Level ; //il livello D min più vicino
O mi sfugge qualcosa?
Sì, lei non capisce qualcosa. Dovrebbe andare così:
E poi...
Sì, c'è qualcosa che non capisci. È così che deve essere:
E poi...
Grazie mille!
Grazie mille anche per questo!!!
Non c'è di che.
3.47 Vado a letto.
Digerirò tutto domani e se avrò delle domande te lo farò sapere!
Grazie mille a tutti!!!