Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1056

 
ara66676:

Por favor, ajude-me, não consigo encontrar uma resposta para uma simples pergunta.

intTimeSeconds(,,,,,)Retorna o número de segundos transcorridos desde o início do minuto do tempo especificado.

Se eu inserir o tempo de abertura da barra na função

TimeSeconds(iTime(NULL,PERÍODO_M5,0))

como posso saber que ainda faltam 10 segundos para o fechamento do bar?

Subtrair o tempo decorrido do número de segundos no período.

PeriodSeconds(PERIOD_M5) - TimeSeconds(iTime(_Symbol, PERIOD_M5, 0));



 
AlexeyVik:

Porque você tem que ler a documentação até o fim. E há um exemplo nisso

Obrigado! No exemplo, este"ArrayResize" me confundiu a cabeça. :)

Na documentação, acho que estes parênteses "array[]" são desnecessários porque você pode entender pela própria palavra que se trata de um array. :)

int  ArrayInitialize( 
   int     array,     // инициализируемый массив 
   int     value        // значение, которое будет установлено 
   );
 
AlexeyVik:

Portanto, subtraia o tempo decorrido do número de segundos de um período.



Muito obrigado, tenho usado mql4 há cinco anos e não sabia que existia tal função, muito obrigado novamente ))

Infelizmente, isso não ajudou, no quinto dia este cheque não funciona...(

 
if(id==CHARTEVENT_MOUSE_MOVE)
                                       {
                                       // получ и преобраз координ мыши
                                       ChartXYToTimePrice(0,lparam,dparam,huin,timeVline,priceVline);
                                       // переместить нa них линию
                                       ObjectSet(stockname+"timeVline",OBJPROP_TIME1,timeVline);                                     
                                              
                                        } 
Esta peça é assim. em um gráfico real, onde o indicador é executado do zero, ele funciona como deveria.
Não consigo ver o que há de errado, mas se eu executar o indicador no testador, a linha não se move após o mouse.
também não sei o que faz a variável que chamei huin?
 
ara66676:

Muito obrigado, tenho usado mql4 há cinco anos e não sabia que existia tal função, muito obrigado novamente ))

Infelizmente, não ajudou, no quinto dia este cheque não funciona...(

Portanto, você deveria ter especificado... O princípio é o mesmo.

TimeCurrent() - (datetime) SeriesInfoInteger(_Symbol, PERIOD_M5, SERIES_LASTBAR_DATE);


Você também pode usar CopyTime()...


Não... Não é bem assim.

(datetime) SeriesInfoInteger(_Symbol, PERIOD_M5, SERIES_LASTBAR_DATE) + PeriodSeconds(PERIOD_M5) - TimeCurrent():
 

GURUS ME DIGA!!!! Porque é que uma ordem de venda não abre????

//+------------------------------------------------------------------+

//| ProjectName |

//| Copyright 2012, CompanyName |

//| http://www.companyname.net |

//+------------------------------------------------------------------+

#propriedade rigorosa

//+------------------------------------------------------------------+

//| Função de inicialização do especialista |

//+------------------------------------------------------------------+


entrada duplo L=0,01;

input int TakeProfit = 150;

input int StopLoss = 150;

input int Magic = 0;

//+------------------------------------------------------------------+

int b=0;

int s=0;

//+------------------------------------------------------------------+

int OnInit()

{

retorno(0);

}

//+------------------------------------------------------------------+

//| Função de carrapato de especialista |

//+------------------------------------------------------------------+

nulo OnTick()

{

//+------------------------------------------------------------------+

//| Abrir uma ordem de compra |||

//+------------------------------------------------------------------+

if(b==0)

{

b=Meu_Fun_b();

}

//+------------------------------------------------------------------+

//| Abrir uma ordem de venda |

//+------------------------------------------------------------------+

if(s==0)

{

double priceb=Meu_Fun_p();

Comentário ("O preço da ordem de compra", priceb);

if(priceb===Bid) /*NÃO EXECUTADO PORQUÊ*/.

{

s=Meu_Fun_s(priceb);/*NÃO EXECUTADO PORQUÊ*/

}

}

}

//+------------------------------------------------------------------+

//| função de desinicialização especializada |

//+------------------------------------------------------------------+

nulo OnDeinit(const int razão)

{


}

//+------------------------------------------------------------------+

//| Função personalizada para abrir o primeiro pedido (compra) |

//+------------------------------------------------------------------+

int My_Fun_b()

{

b=OrderSend(_Symbol,0,0.01,Ask,0,0",414,0,clrBlue);

retorno(b);

}

//+------------------------------------------------------------------+

//| Função definida pelo usuário para determinar o preço do primeiro pedido (compra) |

//+------------------------------------------------------------------+

duplo My_Fun_p()

{

duplo pb=0;

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==verdadeiro)

if(OrderMagicNumber()==414)

{

pb=OrderOpenPrice();

}

retorno(pb);

}

//+------------------------------------------------------------------+

//| Função personalizada para abrir primeiro pedido (venda) |

//+------------------------------------------------------------------+

int My_Fun_s(double priceb)

{

s=OrderSend(_Símbolo,1,0.01,priceb,0,0,",0,0,0,clrRed);

retorno(b);

}

//+------------------------------------------------------------------+


Arquivos anexados:
test.mq4  2 kb
 
AlexeyVik:

Bem, você deveria ter especificado... O princípio é o mesmo


Você também pode usar CopyTime()...


Não... É um pouco diferente.

Obrigado, funcionou. Variante correta:

(TimeCurrent() - (datatime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIE_LASTBAR_DATE))>290

Mais uma vez obrigado, agora podemos remover montanhas de código e usar esta linha!!! ))

 
ara66676:

Obrigado, funcionou. Variante correta :

(TimeCurrent() - (datatime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIE_LASTBAR_DATE))>290

Mais uma vez obrigado, agora podemos remover montanhas de código e usar esta linha!!! ))

Aparentemente, não importava se era o tempo decorrido desde a abertura do bar ou o tempo até o final do bar. Esta variante dará exatamente o tempo decorrido desde o início do bar e não o tempo até o final do bar.

E qual é o número 290? Por que precisamos verificar mais de 290?

 
AlexeyVik:

Aparentemente, não importava se era o tempo decorrido desde o início do bar ou o tempo até o final do bar. Esta opção daria exatamente o tempo decorrido desde o início do bar, não o tempo até o final do bar.

Qual é o número 290? Por que precisamos verificar mais de 290?

NESTE CASO, O NÚMERO 290 MOSTRA QUE PASSARAM MAIS DE 290 SEGUNDOS DESDE QUE O BAR FOI ABERTO. DESCULPE PELO TÍTULO, ELE ESTÁ PRESO ))))
 

Erro de Compilação (2): Magia - identificador não declarado

Por favor, ajude-me a corrigir

Bool CheckExists(int Type)
{
bool Resultado = Verdadeiro;
for(int i = 0; i < OrderTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS))
if(OrderType() == Tipo && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
if(OrderOpenTime() >= Tempo[0])
Resultado = Falso;
for(i = 0; i < OrderHistoryTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
if(OrderType() == Tipo &&& OrderOpenTime() >= Time[0]
&& OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
Resultado = Falso;
}

retorno(Resultado);
}