Com relação ao ArrayCopyRates, Alexey disse corretamente. Está escrito na ajuda:
Portanto, você tem que escrevê-lo:
Mas não é um código econômico.
Sim, não vale a pena arrastar todas as métricas de 6 bar se você só precisa de uma. Baixo.
E não vale a pena ir fundo em uma escala (TF). Após um trimestre você pode ir para semanas, depois meses, e 132 meses, ou seja, 11 anos.
Em geral a idéia é que não adianta contar com todo o gráfico, a quantidade de dados históricos é essencialmente aleatória, pode ser a partir do ano 70 ou a partir do ano 2000, em diferentes instrumentos diferentes fornecedores de dados têm dados diferentes, e a lógica é sempre melhor quando é a mesma para todos os casos.
A idéia é que só precisamos destas barras históricas:
O resto pode ser descartado da matriz. É quando seria econômico.
Foi assim que foi desenhado. A idéia ainda não foi manifestada pelo TopekStarter)
Precisamos encontrar os extremos significativos para a TC e compará-los. Há muitos Lows idênticos à distância. Muitas vezes, o Aberto e o Fechado em uma vela são iguais, e o que dizer sobre os preços mínimos do dia a uma distância considerável.
Sim, não adianta arrastar todos os seis indicadores da barra se você só precisa de um. Baixo.
E não vale a pena ir fundo em uma escala (TF). Após um trimestre você pode ir para semanas, depois meses, e 132 meses, ou seja, 11 anos.
Em geral, a idéia de que não adianta contar com o gráfico inteiro, a quantidade de dados históricos é essencialmente aleatória, pode ser do ano 70, e pode ser do ano 2000, diferentes fornecedores de dados têm dados diferentes sobre diferentes instrumentos, e a lógica é sempre melhor quando é a mesma para todos os casos.
Vou tentar ser mais específico.
1. isto não é uma idéia, mas uma experiência de 5 anos em comércio que decidi automatizar (ou seja, não é bom sentar-se no monitor o tempo todo, você o entende com anos).
2. Usamos estas linhas para formar um sinal de quebra falsa, e funciona (você só precisa saber como aplicá-las), você pode não produzí-las no futuro.
3. Em 2020, em 10 de fevereiro, pela primeira vez notei esta imprecisão, que vocês acham desnecessária de uma história tão distante.
Observe onde está Min_D e pode ser uma vez por ano ou até mesmo 10 anos (como acontece ).
Além disso, você vê o desenvolvimento de eventos 12000 pontos a menos (acho que não é aceitável perder tal movimento) Neste caso, a saída para além da matriz e não me deixou perder esta oportunidade.
É assim que funciona até hoje e em geral não causou nenhum problema
Mas agora é hora de seguir em frente e estudar MQL4
4. Quanto ao carregamento ou seja lá o que for (uma vez por dia às 24h00 pode ser recalculado e 10 vezes não negocio na sexta-feira depois das 20h00, e nos dias úteis das 23h00 às 15h00) me deixo contar.
5. A idéia ainda não foi manifestada TopikStarter.
Se você ler desde o início do post, nem tudo está claro a partir do meio.
1. baixo_D1 e alto_D1 (D1 último dia), Min_D e Max_D (a história mais próxima, esta é a disponível para o símbolo) Min_D < Low_D1 eMax_D > High_D1
2. baixo_W1 e alto_W1 (além disso, é semelhante ao descrito acima apenas por semanas)
3. baixo_MN1 e alto_MN1 (o mês é relativamente semelhante)
Vim por conselhos sobre como consertá-lo, talvez algo que eu não saiba (como carregar algum arquivo de história, ou a matriz em si não suporta, ou talvez 16 gig de aperitivo não seja suficiente, essa é a questão, etc.)
no momento é apenas Alerta quando a linha não muda de valor .
//+------------------------------------------------------------------+//| Test_Level.mq4 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strictdouble Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1double Low_D1_Level; // Возвращает значение минимальной цены бара D1double Min_D_Level ; // ближайшей минимальный D уровеньdatetime Time_Day;
int A_C_R; // возвращает количество скопированных баров D1//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
Level();
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
On_Timer();
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Функция Level //+------------------------------------------------------------------+void Level()
{
A_C_R = ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
Low_D1_Level = iLow (_Symbol,PERIOD_D1,1); // Возвращает значение минимальной цены бара D1//--- Min_D_Leve //for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++) // или так то ошибки нет и линия не перерисовывается for(int i = 1; ;i++) // а так выход за массив
{
Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
if(Bar_data_D1 [i][2]>=0)
{
if( Bar_data_D1 [i][2] < Low_D1_Level)
{
Min_D_Level = Bar_data_D1 [i][2];break;
}
}
}
//+-------------------------Low_D1_Level----------------------------+ if(ObjectFind("Low_D1")!=Low_D1_Level)
{
ObjectDelete("Low_D1");
if(ObjectFind("Low_D1")!=0)
{
ObjectCreate("Low_D1",OBJ_HLINE, 0, Time[0],Low_D1_Level);
ObjectSet("Low_D1", OBJPROP_COLOR, clrMaroon);
ObjectSet("Low_D1", OBJPROP_WIDTH, 1);
}
}
if(ObjectFind("Low_D1_label")!=Low_D1_Level)
{
ObjectDelete("Low_D1_label");
if(ObjectFind("Low_D1_label") != 0)
{
ObjectCreate("Low_D1_label", OBJ_TEXT, 0, Time[13], Low_D1_Level);
ObjectSetText("Low_D1_label", "Low_D1: " + DoubleToStr(Low_D1_Level,_Digits), 8,"Verdana", Brown);
}
}
//+-------------------------Min_D_Level----------------------------+ if(ObjectFind("Min_D")!= Min_D_Level)
{
ObjectDelete("Min_D");
if(ObjectFind("Min_D")!=0)
{
ObjectCreate("Min_D",OBJ_HLINE, 0, Time[0],Min_D_Level);
ObjectSet("Min_D", OBJPROP_COLOR, clrMaroon);
ObjectSet("Min_D", OBJPROP_WIDTH, 1);
}
}
if(ObjectFind("Min_D_label")!=Min_D_Level)
{
ObjectDelete("Min_D_label");
if(ObjectFind("Min_D_label") != 0)
{
ObjectCreate("Min_D_label", OBJ_TEXT, 0, Time[30], Min_D_Level);
ObjectSetText("Min_D_label", "Min_D: " + DoubleToStr(Min_D_Level,_Digits), 8,"Verdana", Brown);
}
}
}
//+------------------------------------------------------------------+//| функция удаление всех объектов созданных советником//+------------------------------------------------------------------+void DestroyObject()
{
int tot=ObjectsTotal();
for( int i=tot; i>=0; i--)
{
if(ObjectName(i)=="Low_MN1"){ObjectDelete(0,"Low_MN1");Print("<< Объект Low_MN удалён >>");}
if(ObjectName(i)=="Low_MN1_label"){ObjectDelete(0,"Low_MN1_label");Print("<< Объект Low_MN1_label удалён >>");}
if(ObjectName(i)=="Min_D"){ObjectDelete(0,"Min_D");Print("<< Объект Min_D удалён >>");}
if(ObjectName(i)=="Min_D_label"){ObjectDelete(0,"Min_D_label");Print("<< Объект Min_D_label удалён >>");}
}
}
//+-------------------------------------------------------------------------+ // функция Timer //+-------------------------------------------------------------------------+void On_Timer()
{
if(Day()!= Time_Day)
{
Level();
Time_Day = Day();
}
}
Com relação ao ArrayCopyRates, Alexey disse corretamente. Está escrito na ajuda:
Portanto, você tem que escrevê-lo:
Mas não é um código econômico.
Sim, não vale a pena arrastar todas as métricas de 6 bar se você só precisa de uma. Baixo.
E não vale a pena ir fundo em uma escala (TF). Após um trimestre você pode ir para semanas, depois meses, e 132 meses, ou seja, 11 anos.
Em geral a idéia é que não adianta contar com todo o gráfico, a quantidade de dados históricos é essencialmente aleatória, pode ser a partir do ano 70 ou a partir do ano 2000, em diferentes instrumentos diferentes fornecedores de dados têm dados diferentes, e a lógica é sempre melhor quando é a mesma para todos os casos.
Valery, você diz exatamente isso!
A idéia é que só precisamos destas barras históricas:
O resto pode ser descartado da matriz. É quando seria econômico.
Valery, você diz exatamente isso!
A idéia é que só precisamos destas barras históricas:
O resto pode ser descartado da matriz. É quando seria econômico.
Foi assim que foi desenhado. A idéia ainda não foi manifestada pelo TopekStarter)
Precisamos encontrar os extremos significativos para a TC e compará-los. Há muitos Lows idênticos à distância. Muitas vezes, o Aberto e o Fechado em uma vela são iguais, e o que dizer sobre os preços mínimos do dia a uma distância considerável.
Percebeu-se um erro nos ciclos. E mudou a comparação para ontem ao invés do dia atual. Tente
Saudações a todos!!!
Esteve fora em negócios.
O processo está em pleno andamento.
Testado !
O resultado é este.
Parou o testador passou pelo histórico manualmente. O valor Max_D deve ser tirado daqui.
Eu não entendo o que está errado. É uma linha de mínimos.
Só para o caso de copiar o código novamente, eu o mudei periodicamente lá, talvez você tenha uma versão antiga.
Sim, não adianta arrastar todos os seis indicadores da barra se você só precisa de um. Baixo.
E não vale a pena ir fundo em uma escala (TF). Após um trimestre você pode ir para semanas, depois meses, e 132 meses, ou seja, 11 anos.
Em geral, a idéia de que não adianta contar com o gráfico inteiro, a quantidade de dados históricos é essencialmente aleatória, pode ser do ano 70, e pode ser do ano 2000, diferentes fornecedores de dados têm dados diferentes sobre diferentes instrumentos, e a lógica é sempre melhor quando é a mesma para todos os casos.
Vou tentar ser mais específico.
1. isto não é uma idéia, mas uma experiência de 5 anos em comércio que decidi automatizar (ou seja, não é bom sentar-se no monitor o tempo todo, você o entende com anos).
2. Usamos estas linhas para formar um sinal de quebra falsa, e funciona (você só precisa saber como aplicá-las), você pode não produzí-las no futuro.
3. Em 2020, em 10 de fevereiro, pela primeira vez notei esta imprecisão, que vocês acham desnecessária de uma história tão distante.
Observe onde está Min_D e pode ser uma vez por ano ou até mesmo 10 anos (como acontece ).
Além disso, você vê o desenvolvimento de eventos 12000 pontos a menos (acho que não é aceitável perder tal movimento) Neste caso, a saída para além da matriz e não me deixou perder esta oportunidade.
É assim que funciona até hoje e em geral não causou nenhum problema
Mas agora é hora de seguir em frente e estudar MQL4
4. Quanto ao carregamento ou seja lá o que for (uma vez por dia às 24h00 pode ser recalculado e 10 vezes não negocio na sexta-feira depois das 20h00, e nos dias úteis das 23h00 às 15h00) me deixo contar.
5. A idéia ainda não foi manifestada TopikStarter.
Se você ler desde o início do post, nem tudo está claro a partir do meio.
1. baixo_D1 e alto_D1 (D1 último dia), Min_D e Max_D (a história mais próxima, esta é a disponível para o símbolo) Min_D < Low_D1 eMax_D > High_D1
2. baixo_W1 e alto_W1 (além disso, é semelhante ao descrito acima apenas por semanas)
3. baixo_MN1 e alto_MN1 (o mês é relativamente semelhante)
No código a para // leia a descrição
Vim por conselhos sobre como consertá-lo, talvez algo que eu não saiba (como carregar algum arquivo de história, ou a matriz em si não suporta, ou talvez 16 gig de aperitivo não seja suficiente, essa é a questão, etc.)
no momento é apenas Alerta quando a linha não muda de valor .
Eu não entendo o que está errado. É uma linha de mínimos.
Só para o caso de copiar o código novamente, eu o mudei periodicamente, talvez você tenha uma versão antiga.
Está bem. Vou tentar novamente.