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).

[Excluído]  

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 :)