Características úteis da KimIV - página 81

 
KimIV >> :

Na página 76...

Obrigado

 

A função isTradeTimeInt().

Esta função retorna uma bandeira para permitir o comércio cronometrado. O valor retornado é verdadeiro ou falso. A função isTradeTimeInt() é semelhante à função isTradeTimeString() pelo princípio do reconhecimento do intervalo de tempo, ou seja, a hora de início da negociação pode ser tanto maior (intervalo de tempo dentro de um dia) quanto menor (intervalo de tempo em dias diferentes). A função isTradeTimeInt() aceita os seguintes parâmetros opcionais:

  • hb - Número, especifica o horário de início do comércio. O valor padrão é 0.
  • mb - Um número, especifica a ata de início do comércio. Valor padrão - 0.
  • um número para especificar o horário de término do comércio. O valor padrão - 0.
  • me - Um número para especificar os minutos do horário de término do comércio. Valor padrão - 0.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ hb+":"+ mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ he+":"+ me);
  hc=TimeHour(TimeCurrent());
  if ( db>= de) {
    if ( hc>= he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>= db && TimeCurrent()<= de) return( True);
  else return( False);
}
 

Exemplos de como usar o isTradeTimeInt().

  1. Período de tempo dentro de um dia. Horário atual do servidor comercial dentro de um período e que seja "08:30".
    if (isTradeTimeInt(6, 0, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Prazo dentro do dia. Horário atual do servidor comercial fora do segmento e que seja igual a "08:30".
    if (isTradeTimeInt(12, 0, 16, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. O espaço de tempo inclui o limite do dia. Horário atual do servidor comercial dentro do segmento e que seja igual a "08:30".
    if (isTradeTimeInt(21, 15, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. O espaço de tempo inclui o limite do dia. Horário atual do servidor comercial fora do segmento e que seja "08:30".
    if (isTradeTimeInt(22, 0, 5, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");

SZY. anexado um roteiro para testar a função isTradeTimeInt().

Arquivos anexados:
 

Lista atualizada de características com breves descrições e links...

Arquivos anexados:
f_kimiv.rar  12 kb
 
KimIV >> :

A função isCloseLastPosByStop().

Esta função retorna uma bandeira para fechar a última posição por meio de uma parada. A bandeira está hasteada - Verdade - StopLoss foi acionada. Bandeira arriada - Falsa - a posição foi fechada por outro motivo. Uma seleção mais precisa das posições a serem levadas em conta é definida por parâmetros externos:


Olá

Tentar usar sua função para meus próprios fins. Pequeno assessor especializado de trabalho. Só vende e fecha, uma posição. Às vezes, ele pega vários degraus de parada em uma fila. Quero mudar as condições de venda após a primeira parada, o Expert Advisor abre posições, mas não as fecha. Por favor, diga-me o que estou fazendo de errado ?

..........................................................

if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 0)
{
if ( (StochK_0<StochD_1) && (StochD_1 > 80) ) // 1ª Venda Lentamente
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green); // venda

OrderSelect(0, SELECT_BY_POS);

se (OrderSelect(0, SELECT_BY_POS)==verdadeiro )
Imprimir("SELECT_BY_POS");
senão
Print("failed to select error : ",GetLastError()));
RefreshRates();
if((StochK_0<30)&& (StochD_1 < 30))
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}
senão
if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 1)
{
if ((StochK_0<StochD_1) && (StochK_0 < 60) && (StochD_1 < 60) )

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,0, "My EXP", MagicNamber,0,Green); //

...........................

 
KoZaNOStra писал(а) >>
O especialista abre posições, mas não as fecha.

Imprimir as variáveis StochK_0 e StochD_1. Talvez eles aceitem valores que não se enquadram em suas condições de fechamento.

 

para KimIV

Olá, você poderia ajudar a converter este indicador de agrupamento em uma função com o mesmo desenho e + retorno dos valores da taxa de mudança de par (canto superior direito) por parâmetro de entrada - Nome do par. Agradeço antecipadamente.

P.S..... Há uma semana que estou lutando

Arquivos anexados:
cc_240.mq4  13 kb
 
existe alguma função para exibir notícias na janela aberta de um par de moedas
 
E como expressamos no código que no início de qualquer hora, no primeiro segundo abrimos duas posições dirigidas de forma diferente, e no último segundo da hora fechamos a ordem falhada?
 
VAM_ писал(а) >>
E como expressamos no código que no início de qualquer hora, no primeiro segundo abrimos duas posições dirigidas de forma diferente, e no último segundo da hora fechamos a ordem falhada?

E se não houver um, primeiro e último segundo?