Os extremos diários, e o que você está encontrando são essencialmente extremos, os baixos (ou altos) têm distâncias bastante longas em relação ao preço atual. A diferença entre o mínimo e o máximo de 132 dias na UE é de mais de 12300 pips. Preço a partir do mínimo próximo de 2000, a partir do máximo de 800.
intArrayCopyRates( MqlRates&rate_array[],// array of MqlRates passed by reference stringsymbol=NULL,// a ferramenta intprazo=0// prazo );
Copia os dados das barras do gráfico especificado em uma matriz bidimensional do formulário Double RateInfo[][6] e retorna o número de barras copiadas.
Ao utilizar a segunda forma de chamada, os dados são na verdade copiados em array dest_array[][], o array em si é automaticamente realocado para corresponder ao tamanho do período (mesmo que o array tenha sido declarado estático).
A primeira dimensão da matriz contém o número de barras. A segunda dimensão tem 6 elementos com os valores:
0 - tempo (tempo), 1 - preço aberto (aberto), 2 - preço mais baixo (baixo), 3 - preço mais alto (alto), 4 - preço fechado (fechado),
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
intArrayCopyRates( MqlRates&rate_array[],// array of MqlRates passed by reference stringsymbol=NULL,// a ferramenta intprazo=0// prazo );
Copia os dados das barras do gráfico especificado em uma matriz bidimensional do formulário Double RateInfo[][6] e retorna o número de barras copiadas.
Ao utilizar a segunda forma de chamada, os dados são na verdade copiados em array dest_array[][], o array em si é automaticamente realocado para corresponder ao tamanho do período (mesmo que o array tenha sido declarado estático).
A primeira dimensão da matriz contém o número de barras. A segunda dimensão tem 6 elementos com os valores:
0 - tempo (tempo), 1 - preço aberto (aberto), 2 - preço mais baixo (baixo), 3 - preço mais alto (alto), 4 - preço fechado (fechado),
E onde o valor retornado do tipo int-type é salvo? Você passou todos os dados para a função, mas não conseguiu nada com isso.
#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));
}
Devemos tentar evitar ciclos desnecessários. Temos muitas citações chegando, e você tem que fazer as entradas certas na hora certa, para que não tenha que escavar a história e desperdiçar recursos do computador.
nível duplo Min_D_Level ; // nível D do Min D mais próximo
Ou está me faltando algo?
Sim, você não entendeu nada. Deve ser assim:
Количество_баров=ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
Os extremos diários, e o que você está encontrando são essencialmente extremos, os baixos (ou altos) têm distâncias bastante longas em relação ao preço atual. A diferença entre o mínimo e o máximo de 132 dias na UE é de mais de 12300 pips. Preço a partir do mínimo próximo de 2000, a partir do máximo de 800.
Eu também não entendo.
Desculpe, vou tentar explicar amanhã cansado hoje
AUDUSD não é assim para mim
O que ele copia e volta para onde?
O que está sendo copiado para onde e para quem?
Para onde ele copia e volta?
intArrayCopyRates(
MqlRates&rate_array[],// array of MqlRates passed by reference
stringsymbol=NULL,// a ferramenta
intprazo=0// prazo
);
Copia os dados das barras do gráfico especificado em uma matriz bidimensional do formulário Double RateInfo[][6] e retorna o número de barras copiadas.
intArrayCopyRates(
void&dest_array[][],// array passed by reference
stringsymbol=NULL,// ferramenta
intprazo=0// prazo
);
Parâmetros
ArrayCopyRatesAo utilizar a segunda forma de chamada, os dados são na verdade copiados em array dest_array[][], o array em si é automaticamente realocado para corresponder ao tamanho do período (mesmo que o array tenha sido declarado estático).
A primeira dimensão da matriz contém o número de barras. A segunda dimensão tem 6 elementos com os valores:
0 - tempo (tempo),
1 - preço aberto (aberto),
2 - preço mais baixo (baixo),
3 - preço mais alto (alto),
4 - preço fechado (fechado),
intArrayCopyRates(
MqlRates&rate_array[],// array of MqlRates passed by reference
stringsymbol=NULL,// a ferramenta
intprazo=0// prazo
);
Copia os dados das barras do gráfico especificado em uma matriz bidimensional do formulário Double RateInfo[][6] e retorna o número de barras copiadas.
intArrayCopyRates(
void&dest_array[][],// array passed by reference
stringsymbol=NULL,// ferramenta
intprazo=0// prazo
);
Parâmetros
ArrayCopyRatesAo utilizar a segunda forma de chamada, os dados são na verdade copiados em array dest_array[][], o array em si é automaticamente realocado para corresponder ao tamanho do período (mesmo que o array tenha sido declarado estático).
A primeira dimensão da matriz contém o número de barras. A segunda dimensão tem 6 elementos com os valores:
0 - tempo (tempo),
1 - preço aberto (aberto),
2 - preço mais baixo (baixo),
3 - preço mais alto (alto),
4 - preço fechado (fechado),
E onde o valor retornado do tipo int-type é salvo? Você passou todos os dados para a função, mas não conseguiu nada com isso.
Onde é salvo o valor de retorno do tipo int? Você passou todos os dados para a função, mas não tirou nada de lá.
Min_D_Level = iLow(_Symbol,PERIOD_D1,i); break;Parece estar armazenado aqui
nível duplo Min_D_Level ; // nível D mínimo mínimo
ou eu não entendo algo?
E onde o valor retornado do tipo int é salvo?
???
Eu estou realmente fazendo um brainstorming.
É possível fazê-lo de uma maneira mais simples?
Como você (você) cometeu um erro aqui, a maneira correta de fazer isso seria este exemplo de código, etc.
Já faz um tempo que estou aqui sentado:
Devemos tentar evitar ciclos desnecessários. Temos muitas citações chegando, e você tem que fazer as entradas certas na hora certa, para que não tenha que escavar a história e desperdiçar recursos do computador.Mais ou menos assim
nível duplo Min_D_Level ; // nível D do Min D mais próximo
Ou está me faltando algo?
Sim, você não entendeu nada. Deve ser assim:
E então...
Sim, há algo que você não entende. É assim que tem que ser:
E então...
Muito obrigado!
Muito obrigado por isso também!!!
Seja muito bem-vindo.
3.47 Vou para a cama.
Eu vou digerir tudo amanhã e se eu tiver alguma pergunta, eu avisarei você!
Muito obrigado a todos!!!