Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1197

 
Alexey Viktorov:

Para exibição no provador? Sim. Crie um modelo com todos os indicadores necessários e guarde-o com o nome da EA ou nome do testador e o teste será aberto com estas definições.

Nos gráficos de contas reais e de demonstração.

 

Saudações!

Alguém sabe como contactar Maxim Gutman?

Comerciante, criador de um sistema de comércio automatizado

 
odyn:

Nos gráficos de contas reais e de demonstração.

Aqui está o MACD, por exemplo

Todos os outros são os mesmos.

 

Boa tarde, por favor aconselhe-me ou atire-me um link para ver

Preciso de seleccionar entre as posições em aberto aquelas que têm uma vida útil superior a um determinado período.

Como posso comparar correctamente a hora de abertura de uma posição com a hora actual?

Atirei esta função, o que fazer a seguir não consigo pensar (pouca experiência), como comparar o tempo?

//+------------------------------------------------------------------+
bool Selected_Positions_Time_Life(datetime time_life, int &array_base[][observations])
{
int n = 0;
int size = ArrayRange(array_base,0);

for(int i=0; i<size; i++)
{
   int index  = Arr_Position[i][0];
   int ticket = m_position.SelectByIndex(index);
   datetime tl = m_position.Time();
   datetime tc = TimeCurrent();
 //Вот тут наверное нужно сравнить tl и tc 
 //и если разница превышает time_life, то это наша позиция
}

return(n>0);
}
//+------------------------------------------------------------------+
 
Sergey Voytsekhovsky:

Boa tarde, por favor aconselhe-me ou atire-me um link para ver

Preciso de seleccionar entre as posições em aberto aquelas que têm uma vida útil superior a um determinado período.

Como posso comparar correctamente a hora de abertura de uma posição com a hora actual?

Nomeei esta função, mas não faço ideia do que fazer a seguir (falta de experiência), como posso comparar os tempos?

No laço, seleccione uma posição e obtenha o seu bilhete.

ulong posTicket = PositionGetTicket(i);

A seguir, obter a hora de abertura da posição

PositionGetInteger(POSITION_TIME)
e comparar com o tempo de referência ±.
 
Alexey Viktorov:

Seleccionar uma posição no laço e obter um bilhete para ele

Depois obter o tempo de abertura da posição

E comparar com o tempo de referência ±.

Apenas este procedimento de comparação vomita por favor, com a posição do bilhete, hora de abertura e hora do servidor, acho que descobri, não posso comparar. Dei uma vista de olhos ao comentário, apenas recebo datas.

 
Sergey Voytsekhovsky:

Este é exactamente o procedimento de comparação, por favor, com o bilhete de posição, a hora de abertura e a hora do servidor acho que descobri, não posso comparar. Dei uma vista de olhos ao comentário, apenas recebo as datas.

Assim, compara-se as datas. Mas há que considerar a discrepância. É melhor comparar a diferença entre a hora de abertura e a hora de referência com um desvio admissível.

fabs(время_позиции - эталонное_время) < допустимого_отклонения // например 600 секунд
 
Alexey Viktorov:

Portanto, compare as datas. Mas há que considerar a discrepância. É melhor comparar a diferença entre o tempo de abertura e o tempo de referência com um desvio de tolerância.

Alexey Viktorov:

Portanto, compare as datas. Mas há que considerar a discrepância. É melhor comparar a diferença entre a hora de abertura e a hora de referência com a tolerância.

Roger que, obrigado, vou tentar assim que estiver no meu computador (de momento estou no meu telemóvel).

 

Boa tarde.

Quero ordenar as linhas verticais por tempo no gráfico. Escrevi um pequeno guião. Mas o resultado não é o que eu quero.

Por favor aconselhem-me o que estou a fazer mal.

void OnStart()
{
int      vlines            = 0;
string   vlines_name[];
string   vlines_name_sort[];
datetime tm[];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   if(vlines < 20 * 2)
   {
      Print("вертикальных линий меньше необходимиого. (",vlines," < ",20 * 2,")");
      return;
   }
   ArrayResize(vlines_name,vlines);
   ArrayResize(vlines_name_sort,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      vlines_name[i] = ObjectName(ChartID(),i,0,OBJ_VLINE);
   }
   ArrayPrint(vlines_name);
   
   for(int i = 0, n = 0; i < 9000; i++)
   {
      ArrayFree(tm);
      CopyTime(Symbol(),Period(),i,1,tm);
      
      for(int a = 0; a < vlines - 1; a++)
      {
         datetime tml = (datetime)ObjectGetInteger(ChartID(),vlines_name[a],OBJPROP_TIME);
         if(tml == tm[0])
         {
            vlines_name_sort[n++] = vlines_name[a];
            break;
         }
      }
   }
   ArrayPrint(vlines_name_sort);
}

O resultado:

(GBPUSD,H6)     [ 0] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"  "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
(GBPUSD,H6)     [10] "H6 Vertical Line 28756" "H6 Vertical Line 29445" "H6 Vertical Line 30340" "H6 Vertical Line 31840" "H6 Vertical Line 32885"
(GBPUSD,H6)     [15] "H6 Vertical Line 33779" "H6 Vertical Line 34048" "H6 Vertical Line 38532" "H6 Vertical Line 38756" "H6 Vertical Line 39075"
(GBPUSD,H6)     [20] "H6 Vertical Line 39458" "H6 Vertical Line 39649" "H6 Vertical Line 40385" "H6 Vertical Line 41116" "H6 Vertical Line 4150" 
(GBPUSD,H6)     [25] "H6 Vertical Line 41900" "H6 Vertical Line 42820" "H6 Vertical Line 43071" "H6 Vertical Line 46245" "H6 Vertical Line 48196"
(GBPUSD,H6)     [30] "H6 Vertical Line 50258" "H6 Vertical Line 50374" "H6 Vertical Line 55171" "H6 Vertical Line 56003" "H6 Vertical Line 56400"
(GBPUSD,H6)     [35] "H6 Vertical Line 57565" "H6 Vertical Line 59075" "H6 Vertical Line 59881" "H6 Vertical Line 59969" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 63540" "H6 Vertical Line 63904" "H6 Vertical Line 64359" "H6 Vertical Line 64420" "H6 Vertical Line 65200"
(GBPUSD,H6)     [45] "H6 Vertical Line 6695"  "H6 Vertical Line 7743"  "H6 Vertical Line 8707"  "H6 Vertical Line 9491"  "H6 Vertical Line 9662" 

(GBPUSD,H6)     [ 0] "H6 Vertical Line 46245" "H6 Vertical Line 39075" "H6 Vertical Line 40385" "H6 Vertical Line 55171" "H6 Vertical Line 31840"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 63904" "H6 Vertical Line 6695"  "H6 Vertical Line 59075" "H6 Vertical Line 28358" "H6 Vertical Line 10884"
(GBPUSD,H6)     [10] "H6 Vertical Line 38532" "H6 Vertical Line 29445" "H6 Vertical Line 23365" "H6 Vertical Line 64420" "H6 Vertical Line 7743" 
(GBPUSD,H6)     [15] "H6 Vertical Line 30340" "H6 Vertical Line 39649" "H6 Vertical Line 38756" "H6 Vertical Line 34048" "H6 Vertical Line 42820"
(GBPUSD,H6)     [20] "H6 Vertical Line 64359" "H6 Vertical Line 50374" "H6 Vertical Line 14306" "H6 Vertical Line 48196" "H6 Vertical Line 57565"
(GBPUSD,H6)     [25] "H6 Vertical Line 20277" "H6 Vertical Line 41116" "H6 Vertical Line 12743" "H6 Vertical Line 50258" "H6 Vertical Line 41900"
(GBPUSD,H6)     [30] "H6 Vertical Line 17907" "H6 Vertical Line 4150"  "H6 Vertical Line 59881" "H6 Vertical Line 56400" "H6 Vertical Line 10771"
(GBPUSD,H6)     [35] "H6 Vertical Line 63540" "H6 Vertical Line 65200" "H6 Vertical Line 9491"  "H6 Vertical Line 16501" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 32885" "H6 Vertical Line 1371"  "H6 Vertical Line 33779" null                     null                    
(GBPUSD,H6)     [45] null                     null                     null                     null                     null                    
 
Сергей Таболин:

Boa tarde.

Quero ordenar as linhas verticais por tempo no gráfico. Escrevi um pequeno guião. Mas o resultado não é o que eu quero.

Por favor aconselhem-me o que estou a fazer mal.

O resultado:

Logicamente, primeiro é necessário recolher todas as linhas de uma matriz, eu faria imediatamente a estrutura bidimensional, bem, ou matriz, na primeira dimensão adicionar um tempo de criação, na segunda - o nome da linha.

No laço para uma corrida, preencher o laço, fora do laço depois de preencher o laço é classificado pela primeira dimensão, ou seja, o tempo.

O resultado é impresso no segundo laço.

Como resultado, temos 2 ciclos e uma classificação entre eles.

É tudo, se bem entendi o problema :)

Razão: