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

 
zennon писал(а) >>
A função MovingInWL() apenas passa por todas as posições abertas, independentemente dos filtros sy,op,mn. Isto também é verdade para o exemplo anexo EA (página 55).

Andrei, obrigado! Corrigido...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()== sy || sy=="") && ( op<0 || OrderType()== op)) {
        if ( mn<0 || OrderMagicNumber()== mn) {
          po=MarketInfo(OrderSymbol(), MODE_POINT);
          if (OrderType()==OP_BUY) {
            if (OrderStopLoss()-OrderOpenPrice()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_BID);
              if ( pp-OrderOpenPrice()> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()+ LevelWLoss* po, -1);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_ASK);
              if (OrderOpenPrice()- pp> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()- LevelWLoss* po, -1);
              }
            }
          }
        }
      }
    }
  }
}
O e-MovingInWL2.mq4 também é fixo.
 

Boa tarde Igor!

Obrigado por dedicar tanto tempo ao fórum. Igor, você sabe de uma oportunidade de obter informações sobre pedidos de compra/venda recebidos - "profundidade de mercado".

 
Alex30 писал(а) >>
Igor, você sabe de uma oportunidade de obter informações sobre pedidos de compra/venda recebidos - "profundidade de mercado".

não

 
Pergunta para os experientes: qualquer um pode dizer porque meu indicador demo xMeterMTF.mq4 mostra tudo normal, e no real vazio do euro (seja por causa do fato de que em eur/usd- real é listado como eur/usddpro) se assim pode ser corrigido
Arquivos anexados:
xmetermtf.mq4  8 kb
xmeter.rar  34 kb
 

A função isTradeTimeString().

Esta função devolve a bandeira permitindo o comércio por tempo. Na verdade, ele realmente verifica se a hora atual do servidor comercial está localizada dentro de algum período de tempo. Se estiver dentro, a função isTradeTimeString() retorna verdadeiro, caso contrário, retorna falso. A peculiaridade desta função é a possibilidade de especificar o intervalo de tempo tanto dentro como fora de um dia. Isto será mostrado em detalhes nos exemplos de uso. A função isTradeTimeString() aceita os seguintes parâmetros opcionais:

  • TimeBegin - String no formato "HH:MM", define a hora de início do comércio. O valor padrão é "00:00".
  • TimeEnd - String no formato "HH:MM", especifica o tempo de fim de comércio. O valor padrão é "00:00".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    TimeBegin - время начала торговли         (ЧЧ:ММ)                       |
//|    TimeEnd   - время окончания торговли      (ЧЧ:ММ)                       |
//+----------------------------------------------------------------------------+
bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}
 

Exemplos de uso do isTradeTimeString().

  1. Período de tempo dentro de um dia. Horário atual do servidor comercial dentro de um período e que seja "07:50".
    if (isTradeTimeString("06:00", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Prazo dentro do dia. Horário atual do servidor comercial fora do segmento e que seja igual a "07:50".
    if (isTradeTimeString("12:00", "16:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. O espaço de tempo inclui a borda do dia. Tempo atual do servidor comercial dentro do segmento e que seja igual a "07:50".
    if (isTradeTimeString("21:15", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. O espaço de tempo inclui um limite de um dia. A hora atual do servidor comercial fora do segmento e que seja "07:50".
    if (isTradeTimeString("22:00", "05:30")) Message("Торгуем...");
    else Message("Отдыхаем...");

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

Arquivos anexados:
 
KimIV >> :

Igor, o indicador i-Sessions ocasionalmente tem falhas: áreas de sessões ainda não abertas aparecem e desaparecem...

 
DR12CED >> :

Igor, o indicador i-Sessions ocasionalmente tem falhas: áreas de sessões ainda não abertas aparecem e desaparecem...

Oops... Retiro o que disse... Também serão úteis em termos de espera de eventos... Perdoe-me... por favor...

 
KimIV >> :

A função isTradeTimeString().

Esta função devolve a bandeira permitindo o comércio por tempo. Na verdade, ele realmente verifica se a hora atual do servidor comercial está localizada dentro de algum período de tempo. Se estiver dentro, a função isTradeTimeString() retorna verdadeiro, caso contrário, retorna falso. A peculiaridade desta função é a possibilidade de especificar o intervalo de tempo tanto dentro como fora de um dia. Isto será mostrado em detalhes nos exemplos de uso. A função isTradeTimeString() aceita os seguintes parâmetros opcionais:

  • TimeBegin - String no formato "HH:MM", define a hora de início do comércio. O valor padrão é "00:00".
  • TimeEnd - String no formato "HH:MM", especifica o tempo de fim de comércio. Valor padrão - "00:00".

Também é possível definir variáveis para não serem "string", mas "int". A fim de pesquisar no testador?

>> Agradecemos antecipadamente.

 
vasilyt писал(а) >>
Você pode fazer variáveis para não serem "string", mas "int". Para poder pesquisar no testador?

Na página 76...