Kira27: Então, quer criar seis alças indicadoras no OnInit para receber dados de todos os prazos necessários?
Sim. Pode criar seis variáveis diferentes para armazenar as seis pegas, ou pode (esta é a opção preferida) criar uma matriz e armazenar seis pegas na matriz.
Eu escrevi assim, está tudo bem, mas complicado))) Quero concisão))) Alguma opção?
//+------------------------------------------------------------------+//| Fraktal_Time_Frame.mq5 |//| 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"//+------------------------------------------------------------------+//_____________________________________Массивы для фракталов____________________________________double FractalDown_W1[],FractalUP_W1[]; // одномерный динамический массив, так как в [] пустоdouble FractalDown_D1[],FractalUp_D1[]; // одномерный динамический массив, так как в [] пустоdouble FractalDown_H4[],FractalUp_H4[]; // одномерный динамический массив, так как в [] пустоdouble FractalDown_1H[],FractalUp_1H[]; // одномерный динамический массив, так как в [] пустоdouble FractalDown_30[],FractalUp_30[]; // одномерный динамический массив, так как в [] пустоdouble FractalDown_15[],FractalUp_15[]; // одномерный динамический массив, так как в [] пусто//____________________________________Переменные под хендлы____________________________________int Fractal_W1;
int Fractal_D1;
int Fractal_H4;
int Fractal_1H;
int Fractal_30;
int Fractal_15;
//_____________________________________________________________________________________________datetime Time_Mass_OLD[ 7 ]; //массивы для нранения времени открытия нулевого бараdatetime Time_Mass_NEW[ 7 ]; //ассивы для нранения времени открытия нулевого бара//+------------------------------------------------------------------+intOnInit ()
{
Fractal_W1= iFractals ( Symbol (), PERIOD_W1 );
Fractal_D1= iFractals ( Symbol (), PERIOD_D1 );
Fractal_H4= iFractals ( Symbol (), PERIOD_H4 );
Fractal_1H= iFractals ( Symbol (), PERIOD_H1 );
Fractal_30= iFractals ( Symbol (), PERIOD_M30 );
Fractal_15= iFractals ( Symbol (), PERIOD_M15 );
Time_Mass_OLD[ 1 ]= iTime ( NULL , PERIOD_W1 , 0 );
CopyBuffer (Fractal_W1, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_W1 ),FractalUP_W1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_W1, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_W1 ),FractalDown_W1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
Time_Mass_OLD[ 2 ]= iTime ( NULL , PERIOD_D1 , 0 );
CopyBuffer (Fractal_D1, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_D1 ),FractalUp_D1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_D1, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_D1 ),FractalDown_D1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
Time_Mass_OLD[ 3 ]= iTime ( NULL , PERIOD_H4 , 0 );
CopyBuffer (Fractal_H4, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_H4 ),FractalUp_H4); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_H4, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_H4 ),FractalDown_H4); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
Time_Mass_OLD[ 4 ]= iTime ( NULL , PERIOD_H1 , 0 );
CopyBuffer (Fractal_1H, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_H1 ),FractalUp_1H); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_1H, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_H1 ),FractalDown_1H); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
Time_Mass_OLD[ 5 ]= iTime ( NULL , PERIOD_M30 , 0 );
CopyBuffer (Fractal_30, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_M30 ),FractalUp_30); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_30, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_M30 ),FractalDown_30); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
Time_Mass_OLD[ 6 ]= iTime ( NULL , PERIOD_M15 , 0 );
CopyBuffer (Fractal_15, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_M15 ),FractalUp_15); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_15, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_M15 ),FractalDown_15); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях./* Alert("OnInit");
ArrayRemove(FractalDown_W1,0,WHOLE_ARRAY);
ArrayPrint(
FractalUP_W1, // выводимый массив
0, // количество десятичных знаков после запятой
NULL, // разделитель между значениями полей структуры
0, // индекс первого выводимого элемента
WHOLE_ARRAY, // количество выводимых элементов
ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_ALIGN
);
ArrayRemove(FractalUp_1H,0,WHOLE_ARRAY);
ArrayPrint(
FractalDown_W1, // выводимый массив
0, // количество десятичных знаков после запятой
NULL, // разделитель между значениями полей структуры
0, // индекс первого выводимого элемента
WHOLE_ARRAY, // количество выводимых элементов
ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_ALIGN
); *///------------------------------------------------------------------return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
Time_Mass_NEW[ 1 ]= iTime ( NULL , PERIOD_W1 , 0 );
Time_Mass_NEW[ 2 ]= iTime ( NULL , PERIOD_D1 , 0 );
Time_Mass_NEW[ 3 ]= iTime ( NULL , PERIOD_H4 , 0 );
Time_Mass_NEW[ 4 ]= iTime ( NULL , PERIOD_H1 , 0 );
Time_Mass_NEW[ 5 ]= iTime ( NULL , PERIOD_M30 , 0 );
Time_Mass_NEW[ 6 ]= iTime ( NULL , PERIOD_M15 , 0 );
for ( int tik = 1 ; tik <= 6 ; tik++)
{
if (Time_Mass_NEW[tik]!=Time_Mass_OLD[tik])
{
switch (tik)
{
case1 :
Time_Mass_OLD[tik]=Time_Mass_NEW[tik];
CopyBuffer (Fractal_W1, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_W1 ),FractalUP_W1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_W1, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_W1 ),FractalDown_W1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break ;
case2 :
Time_Mass_OLD[tik]=Time_Mass_NEW[tik];
CopyBuffer (Fractal_D1, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_D1 ),FractalUp_D1); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_D1, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_D1 ),FractalDown_D1); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break ;
case3 :
Time_Mass_OLD[tik]=Time_Mass_NEW[tik];
CopyBuffer (Fractal_H4, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_H4 ),FractalUp_H4); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_H4, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_H4 ),FractalDown_H4); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break ;
case4 :
Time_Mass_OLD[tik]=Time_Mass_NEW[tik];
CopyBuffer (Fractal_1H, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_H1 ),FractalUp_1H); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_1H, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_H1 ),FractalDown_1H); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break ;
case5 :
Time_Mass_OLD[tik]=Time_Mass_NEW[tik];
CopyBuffer (Fractal_30, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_M30 ),FractalUp_30); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_30, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_M30 ),FractalDown_30); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break ;
case6 :
Time_Mass_OLD[tik]=Time_Mass_NEW[tik];
CopyBuffer (Fractal_15, 0 , TimeCurrent (), Bars ( Symbol (), PERIOD_M15 ),FractalUp_15); // заполнение масива FractalUp[] верхними фракталами на дневном графикеCopyBuffer (Fractal_15, 1 , TimeCurrent (), Bars ( Symbol (), PERIOD_M15 ),FractalDown_15); // заполнение масива FractalUp[] нижними фракталами на дневном графике//--- индексация как в таймсерияхArraySetAsSeries (FractalUP_W1, true ); //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серииArraySetAsSeries (FractalDown_W1, true ); //Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
;
break ;
}
}
}
/* int n=0;
//----------------------------------------------------
//--- 1 далее используем оператор цикла for для поиска первого верхнего фрактала
int i=Bars(Symbol(),PERIOD_W1); //Колличество баров на H1 графике
for(n=0; n< i; n++)
{
//--- если непустое значение, прерываем цикл
if(FractalUP_W1[n]!=EMPTY_VALUE)
break;
}
//--- запишем ценовое значение первого фрактала в переменную UpFractal_1 из массива с индексом где обнаружился верхний фрактал
double UpFractal_1=FractalUP_W1[n];
Alert("UpFractal_1= ",UpFractal_1);
//---
ArrayPrint(
FractalUP_W1, // выводимый массив
0, // количество десятичных знаков после запятой
NULL, // разделитель между значениями полей структуры
0, // индекс первого выводимого элемента
WHOLE_ARRAY, // количество выводимых элементов
ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_ALIGN
);
ArrayPrint(
FractalDown_W1, // выводимый массив
0, // количество десятичных знаков после запятой
NULL, // разделитель между значениями полей структуры
0, // индекс первого выводимого элемента
WHOLE_ARRAY, // количество выводимых элементов
ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_ALIGN
); */
}
//+------------------------------------------------------------------+
Indicador MQL5
Os valores de equilíbrio e equidade são escritos apenas no elemento zero da matriz.
Mas quando eu corro o indicador, tais picos aparecem em arrays diferentes e em locais diferentes.
O código no init para todas as arrays é o mesmo:
Como removê-lo?
Indicador MQL5
Os valores de equilíbrio e equidade são escritos apenas no elemento zero da matriz.
Mas quando eu corro o indicador, tais picos aparecem em arrays diferentes e em locais diferentes.
O código no init para todas as arrays é o mesmo:
Como removê-lo?
NÃO DEVE escrever [0], DEVE considerar pré_calculado e zerar a barra anterior.
De facto, já existe um código deste tipo: Equilíbrio LifeHack Equ ilíbrio e LifeHack Equilíbrio 2Punho indicador em MQL5 DEVE SER CRIADO UMA VEZ!!! E tem de ser feito no OnInit()!!!
Então, quer criar 6 alças indicadoras no OnInit() para receber dados de todos os prazos necessários?
Não é necessário se precisar apenas de um dos seis. E não tem de ser criado no OnInit(), o principal não é criar uma pega em cada carraça.
Então, quer criar seis alças indicadoras no OnInit para receber dados de todos os prazos necessários?
Sim. Pode criar seis variáveis diferentes para armazenar as seis pegas, ou pode (esta é a opção preferida) criar uma matriz e armazenar seis pegas na matriz.
Estou subscrito ao sinal do Provedor de 0,02 lotes, mas o meu negócio é executado 0,01 por alguma razão?
As respostas às perguntas mais populares estão reunidas numaFAQ especialsobre o serviço de Sinais
A primeira coisa com que se deve familiarizar:
Diga-me o que há de errado com este código
Diga-me o que há de errado com este código.
---
P.S. Em geral, há muitas coisas erradas, com a mesma matriz, por exemplo.