Funciones útiles de KimIV - página 59

 
Lista actualizada de funciones
Archivos adjuntos:
f_kimiv_1.rar  12 kb
 

Igor, ¿podrías decirme si existe una función que determine el valor mínimo en pips para colocar una orden pendiente?

Gracias.

 
mozg писал(а) >>
Igor, ¿podrías decirme si existe una función que defina el valor mínimo en pips para colocar una orden pendiente?
MarketInfo(Symbol(), MODE_STOPLEVEL);
 

Hola Igor! ¿Podrías escribir una función que impida que el EA reproduzca la señal? Significa que el estado, después de añadir este bloque de código, debería ser así: comprar, vender, comprar, vender, comprar, vender.... etc...

 
Shniperson писал(а) >>

Hola Igor, ¿podrías escribir una función que impida que el EA reproduzca la señal? Es decir, el estado, después de añadir este bloque de código debería ser así... comprar, vender, comprar, vender, comprar, vender.... etc...

columpios...

//+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions() {
  double sl=0, tp=0;
  int    bs= GetTradeSignal();

  if ( bs>0) {
    if ( ExistPositions(NULL, OP_SELL, Magic)) ClosePositions(NULL, OP_SELL, Magic);
    if (! ExistPositions(NULL, OP_BUY, Magic)) {
      if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_BUY, Lots, sl, tp, Magic);
    }
  }
  if ( bs<0) {
    if ( ExistPositions(NULL, OP_BUY, Magic)) ClosePositions(NULL, OP_BUY, Magic);
    if (! ExistPositions(NULL, OP_SELL, Magic)) {
      if ( StopLoss  >0) sl=Bid+ StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Bid- TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_SELL, Lots, sl, tp, Magic);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal() {
  int bs=0;

  if ( условия для покупки) bs=1;
  if ( условия для продажи) bs=-1;

  return( bs);
}

ExistPositions()

CerrarPosiciones()

 

La función NormalizePrice().

Esta función devuelve el valor del precio normalizado. La normalización se realiza utilizando los valores de la función MarketInfo(MODE_TICKSIZE || MODE_DIGITS). La función NormalizePrice( ) toma los siguientes parámetros:

  • np - Valor normalizado del lote. Parámetro obligatorio.
  • sy - Nombre del instrumento comercial. NULL o "" - símbolo actual. Valor por defecto - "".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
  if ( sy=="" || sy=="0") sy=Symbol();
  double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
  int    di=MarketInfo(Symbol(), MODE_DIGITS);

  if ( ts>0) pp=NormalizeDouble( np/ ts, 0)* ts;
  else {
    if ( di>0) pp=NormalizeDouble( np* di, 0)/ di; else pp= np;
  }
  return( pp);
}

SZZ. Se adjunta un script para probar la función NormalizePrice().

Archivos adjuntos:
 

(Pregunta de novato).

Estimado KimIV He escrito una función:

GetExtremumZZPrice().


double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
¿Qué tipo de código se debe utilizar para almacenar los precios del último mínimo y máximo en 2 variables? ( mi mente está frita ;((())
 
WroC писал(а) >>
¿Qué tipo de código debe utilizarse para almacenar los precios del último mínimo y máximo en 2 variables?
void start() {
  double p1= GetExtremumZZPrice("", 0, 0);
  double p2= GetExtremumZZPrice("", 0, 1);

  if ( p1> p2) Comment("Последний максимум ", p1, "\n Последний минимум ", p2);
  else Comment("Последний максимум ", p2, "\n Последний минимум ", p1);
}
 

KimIV

Gracias.

 
¡Igor, hola!
En la medida de mis posibilidades he tratado de entender el material que has presentado. Para ser honesto, todavía no he utilizado asesores expertos o scripts, y no tengo ninguna experiencia práctica con ellos, pero necesito crear un script que me ayude a colocar un gran número de órdenes.
La tarea del script es facilitar la colocación de órdenes pendientes (principalmente Buy stop y Sell stop).
Es decir, los parámetros de la secuencia de comandos se establecen de la siguiente manera:
1. Nivel a partir del cual se colocan las órdenes (por ejemplo, EUR / USD Buy Stop a partir de 1,3000)
2. El tamaño de cada pedido (por ejemplo, 0,01).
Paso de colocación de órdenes (por ejemplo, 1 pip)
4. TP de cada orden (por ejemplo, 3 pips)
5. El número de órdenes pendientes (por ejemplo, 70) o el nivel hasta el que deben colocarse las órdenes pendientes (por ejemplo, hasta 1,3070).
Los parámetros de stop loss y trailing stop en el script son deseables, pero no necesarios...
Se supone que el script arranca el ordenador cada 3-4 horas, analiza la situación y decide establecer órdenes para romper el rango al alza (o a la baja), con un periodo de apertura de 1 pip, pero con un TP mínimo (3 pips). Así, en caso de un movimiento del precio hacia el lado necesario, estas órdenes comenzarán a abrirse y si se alcanza el precio necesario, se cerrarán por TP. Entonces es posible una variante cuando todas se cerrarán en un TP - si el movimiento del precio pasa todas las órdenes o una parte de las órdenes (6 unidades) estarán abiertas y serán "menos". En este caso se supone que debemos establecer la siguiente "escalera" de órdenes en sentido contrario con otros parámetros (tamaño de lote, paso, TP, número de órdenes) que le parezcan los mejores a un trader.
Al final de un día de negociación, las "posiciones opuestas" se cerrarán, dejando al operador con unas 6 órdenes dirigidas al alza (o a la baja).
¡Gracias de antemano por la respuesta experta!