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

 
KimIV >> :

não foi... escrito...

A função ClosePosBySortLots().

Esta função fecha posições na ordem de classificação por tamanho de lote. Ou seja, usando esta função, você pode fechar posições em ordem ascendente ou descendente de lotes de tamanhos. Função ClosePosBySortLots() aceita os seguintes parâmetros opcionais:

  • sy - Nome do instrumento comercial. "" - qualquer instrumento, NULL - instrumento atual. O valor padrão é "".
  • op - Tipo de operação comercial. Valores válidos -1 - qualquer posição, OP_BUY - comprar, OP_SELL - vender. O valor padrão é -1.
  • mn - MagicNumber, identificador único de operação comercial. Valor por default -1 - qualquer número mágico.
  • sd - Direção da classificação do tamanho do lote. Valores válidos MODE_ASCEND - ascendente, MODE_DESCEND - descendente. O valor padrão é MODE_DESCEND.

SZY. anexado um script para testar a função ClosePosBySortLots().

Muito obrigado, Igor. Rezarei por você:-)

 

Privat

rsi

Obrigado pelos exemplos!

Por favor, decifrar isto se não for difícil:

var=Close[0]
O que ele faz?
 

er... pare aqui... Sinto muito... apagar... A criatividade é sempre bem-vinda!

e pegue o link para as funções do arquivo anexo...

Arquivos anexados:
f_kimiv.rar  12 kb
 
WroC писал(а) >>

Por favor, decodifique isto se não for difícil:

var=Fechar[0]

O que você quer comer com ele?

Variável chamada var é atribuída ao valor do nível de preço do fechamento atual da barra (número zero). Mas como a barra atual ainda não está pronta, fechar[0] é o mesmo que a Licitação, ou seja, o preço atual.

 

KimIV


E eu continuei tentando de alguma forma usar a informação de mercado, que se revela ainda mais simples ....

 
if ( ExistPositions(NULL, OP_BUY, Magic)) {
 po= PriceOpenLastPos(NULL, OP_BUY, Magic);
 if (! ExistOrders (NULL, OP_SELLSTOP, Magic+1)
 && ! ExistPositions(NULL, OP_SELL , Magic+1)) {
 pp= po- offSet*Point;
 if ( StopLoss>0) sl= pp+ StopLoss*Point; else sl=0;
 if ( TakeProfit>0) tp= pp- TakeProfit*Point; else tp=0;
 SetOrder(NULL, OP_SELLSTOP, ll, pp, sl, tp, Magic+3);

Boa tarde.
Igor, você tem uma função para implementar táticas de bloqueio?
Na página 45 você deu um exemplo que poderia ser usado para isto.

Mas tal abordagem limita o número de pedidos abertos a 1.
Se olharmos o exemplo, pareceria assim
LockStep=20 da posição aberta
LockStopLoss=10
1500 - aberto Buy\1480 - aberto selltop

1470 - aberto buy\1450 - aberto selltop

1460 - fechado selltop 1450\open selltop 1450
1490 - fechado selltop 1480\opensalestop 1450
a função dada abrirá dois pedidos selltop 1450

P.S. Muito obrigado por seu trabalho. Na verdade, há muitas informações e é muito útil, eu tomei a maior parte delas a bordo.



 
demsan писал(а) >>
Igor, você tem uma função para implementar táticas de bloqueio?

Não, não há nenhuma função separada. Portanto, você tem que combinar os existentes e talvez adicionar alguns de seus próprios. Aconselho a organizar a seguinte conexão: um par Buy/SellStop - um mágico. Próximo par - próximo mágico e assim por diante.

 

A função StringLower().

Esta função converte um fio em minúscula. Todos os caracteres SIGNIFICANTES (grandes) tornam-se letras minúsculas (pequenas). A função StringLower() aceita apenas um parâmetro obrigatório - a string de entrada.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в нижнем регистре                            |
//+----------------------------------------------------------------------------+
string StringLower(string s) {
  int c, i, k=StringLen( s), n;
  for ( i=0; i< k; i++) {
    n=0;
    c=StringGetChar( s, i);
    if ( c>64 && c<91) n= c+32;     // A-Z -> a-z
    if ( c>191 && c<224) n= c+32;   // А-Я -> а-я
    if ( c==168) n=184;            //  Ё  ->  ё
    if ( n>0) s=StringSetChar( s, i, n);
  }
  return( s);
}

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

Arquivos anexados:
 

A função StringUpper().

Esta função converte a corda para maiúsculas. Todos os caracteres em minúsculas (pequenos) tornam-se maiúsculas (grandes). A função StringUpper() aceita apenas um parâmetro obrigatório - a string de entrada.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в ВЕРХНЕМ регистре                           |
//+----------------------------------------------------------------------------+
string StringUpper(string s) {
  int c, i, k=StringLen( s), n;
  for ( i=0; i< k; i++) {
    n=0;
    c=StringGetChar( s, i);
    if ( c>96 && c<123) n= c-32;    // a-z -> A-Z
    if ( c>223 && c<256) n= c-32;   // а-я -> А-Я
    if ( c==184) n=168;            //  ё  ->  Ё
    if ( n>0) s=StringSetChar( s, i, n);
  }
  return( s);
}

ZS. Anexado um roteiro para testar o StringUpper().

Arquivos anexados:
 

A função StringToArrayDouble().

Esta função divide a cadeia em números reais, e cada número é adicionado à matriz como um elemento separado. Como muitos números reais aparecem na seqüência, o mesmo número de elementos será adicionado à matriz. Um ponto-e-vírgula é reconhecido como um separador. A função StringToArrayDouble() retorna o número de elementos da matriz, e toma os seguintes parâmetros obrigatórios:

  • st - Uma seqüência de números reais separados por ponto-e-vírgula.
  • ad - Matriz de números reais.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.10.2008                                                     |
//|  Описание : Перенос вещественных чисел из строки в массив                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    st - строка вещественных чисел через точку с запятой                    |
//|    ad - массив вещественных чисел                                          |
//+----------------------------------------------------------------------------+
//|  Возврат:                                                                  |
//|    Количество элементов в массиве                                          |
//+----------------------------------------------------------------------------+
int StringToArrayDouble(string st, double& ad[]) {
  int    i=0, np;
  string stp;

  ArrayResize( ad, 0);
  while (StringLen( st)>0) {
    np=StringFind( st, ";");
    if ( np<0) {
      stp= st;
      st="";
    } else {
      stp=StringSubstr( st, 0, np);
      st=StringSubstr( st, np+1);
    }
    i++;
    ArrayResize( ad, i);
    ad[ i-1]=StrToDouble( stp);
  }
  return(ArraySize( ad));
}

ZS. Anexado um roteiro para testar a função StringToArrayDouble().

Arquivos anexados: