Funciones útiles de KimIV - página 45

 

Un ejemplo de uso de la función GetPriceDiffInPoint().

Supongamos que necesitamos calcular el valor en pips y la dirección del movimiento de la tasa entre la segunda y la primera barra del gráfico actual. Supongamos que el gráfico actual es el EURUSD H1. Llama a la función GetPriceDiffInPoint() con los parámetros por defecto:

Message(GetPriceDiffInPoint());

Aquí está el resultado:


La función GetPriceDiffInPoint() ha devuelto -23 puntos. Analicemos cómo se obtuvo. Para ello vamos a trazar líneas verticales a través de las barras horarias 2, 1 y 0:


Cambiemos a un marco de tiempo más pequeño, por ejemplo, M5 y marquemos el intervalo de las barras 2 y 1 con un solo rectángulo en él:

Ahora podemos ver claramente que los primeros en el intervalo resaltado fueron dos máximos iguales de 1,4283, y sólo después de ellos, en la mitad de la segunda hora fue el mínimo de 1,4260. Por lo tanto, concluimos que durante las últimas dos horas el EURUSD disminuyó y el valor de esta disminución fue (1,4283 - 1,4260) / 0,0001 = 23 pips.


P.D. Se adjunta el script para probar la función GetPriceDiffInPoint().

Archivos adjuntos:
 

Impresionante selección, no hay una función para cerrar una orden (compra o venta) en el primer cierre exitoso de una barra en cualquier TF...

 

¿Puedo preguntar qué comprobaciones se hacen antes de abrir los pedidos?

Si se recogen en una función separada, por favor, dame un enlace. Si no, se puede dar una lista.

 
SK. писал (а) >>
¿Puedo preguntar qué comprobaciones se hacen antes de abrir los pedidos?

Sergei, no sé si tu pregunta es para mí o no.

 
KimIV писал (а) >>

...

Las funciones de apertura, cierre y modificación al tratar los errores utilizan el comando Sleep. He investigado un poco y recomiendo sustituirlo por uno de estos. La cuestión es que el valor del retraso es una recomendación, y no tiene por qué ser estrictamente este valor. A menudo, puede realizar acciones con una orden de inmediato (sin demora). Pero si tiene una recotización, entonces no me gusta que BC pueda calcular cuándo y qué tipo de operación voy a realizar.

int start()
  {
//----
   Sleep_RND(20000);  
//----
   return(0);
  }
//+------------------------------------------------------------------+
void Sleep_RND(int _Pausa)
  {
   MathSrand(TimeLocal());
   MathRand();
   Sleep(MathRound(_Pausa*MathRand()/32767+_Pausa/5));
   return;
  }
 
KimIV писал (а) >>

Sergei, no sé si tu pregunta es para mí o no.

Sí, Igor, es una pregunta para ti.

La cuestión es ésta. He mirado la función de apertura, no hay controles allí. Aparentemente se concentran en alguna otra función. Si tienes una función de este tipo, por favor, dame el enlace. Si no ve dicha función, puede escribir una lista de comprobaciones aquí mismo. Puedes hacerlo lentamente.

 

No, Sergei, no hago más comprobaciones. O mejor dicho, lo hago, pero no los pongo en funciones separadas. Es decir, puse algunos de ellos... Cielos, te daré un ejemplo:

extern int StopLoss=30;
extern int TakeProfit=50;

double ll=GetSizeLot();
double po, pp, sl, tp;
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);
  }
}

¿Qué vemos aquí?

1. Calculamos el lote a negociar.

2. Si hay una posición de compra con un número mágico especificado, su precio abierto se define po.

Si no hay una orden SellStop y la posición de venta con un Magik por una unidad mayor que el especificado, establecemos la orden SellStop al precio por puntos offSet menor que el precio de apertura de la posición de compra.

4. En el intervalo realizamos el cálculo de los niveles de precios sl y tp.

 
KimIV писал (а) >>

4. Entre medias, calcula los niveles de precios sl y tp.

Eso es lo que quiero decir. Hay que tener en cuenta las limitaciones existentes, que, por lo general, cambian constantemente.

¿Existe alguna función que analice todas las restricciones posibles?

Lo mismo para la modificación.

--

(Tengo 16 funciones - 3 para cada orden buena (OP,SL,TP) y 2 para cada orden de mercado (SL,TP),

y luego algunos más analizando combinaciones de permisos).

 
SK. писал (а) >>
¿Existe alguna función que analice todo tipo de restricciones?
Todavía no... de alguna manera no tuve que hacerlo. Pero gracias a ti, he pensado en ello y he sentido que debía hacerlo. >> Gracias.
 

Función GetTypePrice()

Devuelve el nombre del tipo de precio. La función sólo acepta un parámetro opcional. Valores válidos: PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED. El valor por defecto es 0 - PRICE_CLOSE.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование типа цены.                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    Applied_Price - тип цены                                                |
//+----------------------------------------------------------------------------+
string GetTypePrice(int Applied_Price=0) {
  switch (Applied_Price) {
    case PRICE_CLOSE   : return("Close");
    case PRICE_OPEN    : return("Open");
    case PRICE_HIGH    : return("High");
    case PRICE_LOW     : return("Low");
    case PRICE_MEDIAN  : return("Median");
    case PRICE_TYPICAL : return("Typical");
    case PRICE_WEIGHTED: return("Weighted");
    default            : return("Unknown Type Price");
  }
}
Esta función es útil para comentar o registrar el trabajo de los indicadores, scripts y Asesores Expertos, en particular, para mostrar las explicaciones de los valores de las constantes de precio.
Razón de la queja: