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

 
tim-time:

...adicione notificações PUSH ao SEUe-SignalOfTrade EA?

Feito... baixar do meu site...
 
KimIV:

Eu criei a função ErrorRU(), que retorna uma breve ou detalhada descrição russa de um erro por seu código. Ambos os erros retornados pelo servidor comercial e erros de execução dos programas MQL são detectados. Nem todos os erros, entretanto, têm uma descrição detalhada com recomendações "O que fazer", mas é assim que as coisas são.

Estou publicando a função no roteiro para testá-la.

Se alguém precisar de uma variação na forma de arquivo MQH, você pode obtê-la em meu website.


Saudações Igor. Obrigado por esta característica, é muito útil
 

Olá KimIV.

Você tem uma função maravilhosa i-Profit.mq4 em seu site.

Você poderia me dizer como extrair dados de equilíbrio dele?

// 0 - saldo atual

// 1 - equilíbrio no início do dia.

// 2 - equilíbrio no início da semana.

// 3 - balanço patrimonial no início do mês

// 4 - equilíbrio no início do trimestre

// 5 - equilíbrio no início do ano

// 6 - balanço a partir da data do usuário

 

A função ProfitByPrice().

Esta função é uma das minhas pequenas funções preditivas. Preditivos no sentido de que mostram o futuro, ou seja, respondem à pergunta: "O que acontecerá se algum evento acontecer? Esta função, por exemplo, retorna um lucro na moeda do depósito se as posições atuais forem fechadas ao preço passado como parâmetro.

  • op- Operação comercial, tipo de posição. Valores válidos: OP_BUY,OP_SELL ou-1. O valor padrão-1 significa qualquer operação comercial.
  • mn- Identificador de posição, MagicNumber. O valor padrão-1 significa qualquer identificador.
  • cp- Preço de fechamento previsto. Valor padrão0 significa o preço atual da Licitação.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
  double pr=0;
  double po=MarketInfo(Symbol(), MODE_POINT);
  double sp=MarketInfo(Symbol(), MODE_SPREAD);
  double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
  int    i, k=OrdersTotal();

  RefreshRates();
  if (cp<=0) cp=Bid;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(pr);
}

ZZY. Em anexo está um roteiro tradicional para testar a função.

ZZZY. Não há um sistema tradicional entre os parâmetros, pois o preço passado no outro parâmetro deve estar ligado a um instrumento comercial. Decidi não me preocupar muito com ele e ligá-lo ao símbolo atual.

Arquivos anexados:
 
Prezado Igor, obrigado por suas funções que facilitam nossos primeiros passos na programação! Você poderia me ajudar, eu preciso de uma função para fechar uma posição, mas sem me referir a outras funções, mas para ter Selecione, 3 tentativas e manipulação de erros! E no início eu prescreveria condições com funções de verificação sem Select de modo a não retardar o processo. Até agora tenho usadoum loop Selekt no iníciocom várias verificações, chamando a função de fechamento sem Selekt, que abranda quase duas vezes! O que você pode me aconselhar? Obrigado!
 

KimIV:

Precisamos estabelecer uma ordem pendente a um preço de liquidação, desde que não haja outras ordens ou posições dentro da distância desse preço. Você não parece ter essa função: a existência de uma ordem ou posição a uma distância de um determinado preço?

 
Acho que KimIV não olha aqui! :(
 
khorosh:

KimIV:

Precisamos estabelecer uma ordem pendente a um preço de liquidação, desde que não haja outras ordens ou posições dentro da distância desse preço. Você não parece ter tal característica: a existência de uma ordem ou posição a uma distância de um determinado preço?


Você pode desenhar algo semelhante a este...

atualização...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 24.06.2013                                                     |
//|  Описание : Возвращает флаг существования ордера или позиции               |
//|             около заданной цены.                                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    zp - заданная цена                                                      |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от цены    (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearPrice(double zp, string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;

  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
        }
      }
    }
  }
  return(False);
}

Em anexo um roteiro para testar a função ExistOPNearPrice()

Arquivos anexados:
 
borilunad:
Prezado Igor, obrigado por suas funções que facilitam nossos primeiros passos na programação! Você poderia me ajudar, eu preciso de uma função para fechar uma posição, mas sem referência a outras funções, mas para ter Seleção, 3 tentativas e manipulação de erros! E no início eu prescreveria condições com funções de verificação sem Select de modo a não retardar o processo. Até agora estou usandoum loop Selekt no iníciocom várias verificações, chamando a função de fechamento sem Selekt, que abranda quase duas vezes mais! O que você pode me aconselhar? Obrigado!
Não é ClosePosBySelect()?
 
artmedia70:
FecharPosBySelect() não é algo?
É isso, mas não isso, um monte de chamadas desnecessárias para outras funções com erros resultantes!