Funciones útiles de KimIV - página 119

 
M2012K:

Hola compañeros, todavía estoy aprendiendo los códigos, no consigo descifrar los entresijos y estoy en un pequeño dilema.

Según tengo entendido, hay que hacer una llamada a esta función para corregir los parámetros antes de hacer un pedido.

Hay una línea de este tipo para abrir un pedido:

if(buy == true && Open[0]>UpTr && Trade) {

buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,Digits),slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits), "T",Magic,0,MediumBlue);

¿es aquí donde hay que dirigirse? Y cómo hacerlo correctamente. ¿O este comando no necesitaCorrectingPrice()?

Gracias de antemano.

Antes de enviar una solicitud de operación al servidor, debería haber calculado los precios StopLoss y TakeProfit. Según veo, se almacenan en variables, respectivamente sl y tp .

Por lo tanto, inicie esta función, e inserte los nombres de sus variables en ella:

CorrectingPrice(Symbol(), OP_BUY, Ask, sl, tp);

Los corregirá por ti, si es necesario...

Y después de llamar a esta función, puede llamar a la función de posición abierta

 

Buenas tardes.

Utilizo la función PriceOpenNearPos () de KimIV. Me he dado cuenta de que A veces sepierdelaposiciónmás cercana y se utiliza otraposición. Así que hice código para una prueba donde se puede ver cómo posiciónmás cercana se pierde en el registro. Por favor, compruebeen por qué ocurre esto.

int    magic    = 665544;

bool flag = false;

 

int start()

  {

//----

if((PriceOpenNearPos(NULL, OP_BUY, magic) != 0

&& PriceOpenNearPos(NULL, OP_BUY, magic)- 0.1 <  Bid

&& PriceOpenNearPos(NULL, OP_BUY, magic)+ 0.1 > Bid))

flag = true;

else

flag = false;

 

Print("::::::::::::::::::::::::: flag = ",  flag );

Print("PriceOpenNearPos(NULL, OP_BUY, magic)= ", PriceOpenNearPos(NULL, OP_BUY, magic));

 

if(!flag)

OpenPosition(NULL, OP_BUY, 0.1,0,0,magic);  

//----

   return(0);

  }

Según las condiciones, las posiciones no deberían solaparse entre sí , pero cuando ejecuto el comprobador veo que las posiciones se solapan. (usdjpy 5m).

 
artmedia70:

Antes de enviar una solicitud de operación al servidor, debería haber calculado los precios StopLoss y TakeProfit. Según veo, se almacenan en variables, respectivamente sl y tp .

Así que ejecuta esta función, insertando los nombres de tus variables en ella:

Los ajustará por ti si es necesario...

Y después de llamar a esta función, se puede llamar a la función de apertura de la posición


Gracias, lo tengo. :)
 
abeiks:

Buenas tardes.

Utilizo la función PriceOpenNearPos () de KimIV. Me he dado cuenta de que A vecesse pierdelaposiciónmás cercana y se utiliza otraposición. Así que hice código para una prueba donde se puede ver cómo posiciónmás cercana se pierde en el registro. Por favor, compruebeen por qué ocurre esto.

Según las condiciones, las posiciones no deberían solaparse entre sí , pero cuando ejecuto el comprobador veo que las posiciones se solapan. (usdjpy 5m).


Comprobado... en el probador... Todo está bien. Muéstrame tú mismo cómo se pierden las posiciones. O explique con más detalle a qué llama usted exactamente posiciones perdedoras.

Adjunto mi Asesor Experto listo para probar con todas las funciones adicionales.

Archivos adjuntos:
 

Véase el apéndice. Según las condiciones, las posiciones no deberían solaparse entre sí, pero en el terminal podemos ver que las posiciones 3 y 9 se abren al mismo precio (también 4, 6, 8). Además miramos los archivos de registro y vemos que en algún momento la posición 98.179 se pierde y aparece 98.301. Por lo tanto, las posiciones se solapan.

 
abeiks:

Véase el apéndice. Según las condiciones, las posiciones no deberían solaparse entre sí, pero en el terminal podemos ver que las posiciones 3 y 9 se abren al mismo precio (también 4, 6, 8). Además miramos los archivos de registro y vemos que en algún momento la posición 98.179 se pierde y aparece 98.301. Por lo tanto, las posiciones se superponen.


Gracias por su código, los materiales proporcionados y su paciencia.

He arreglado la función. Aquí está la nueva versión:

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

  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 (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (pp<0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(oop);
}

Así es como funciona ahora... sin solapamientos

Archivos adjuntos:
 
KimIV:


Gracias por el código, los materiales proporcionados y la paciencia.

Se ha corregido la función. Aquí está la nueva versión:

Así es como funciona ahora... sin solapamientos


Gracias, todo funciona. :)
 
KimIV:


Se ha corregido la función. Aquí está la nueva versión:

Igor, ¿hay algún lugar donde se publiquen tus nuevas bibliotecas, con tus nuevas características o con algunas de tus características modificadas?

Es decir, bibliotecas actualizadas con las modificaciones y adiciones ya realizadas...

 
artmedia70:

Igor, ¿hay algún lugar donde se publiquen tus nuevas bibliotecas, con tus nuevas características o con las modificaciones de algunas de tus características?

Es decir, bibliotecas actualizadas con las modificaciones y adiciones ya realizadas...


Todavía no se han publicado... No he tenido tiempo... Pero de todos modos... Siempre los estoy retocando. Y he escrito 30 o más nuevos. Las cuelgo aquí tranquilamente cuando tengo tiempo y ganas)))

SZY. Puedo enviar todas las bibliotecas al correo electrónico, tal cual, pero si lo publica, es necesario preparar la descripción o al menos la lista y el propósito de las funciones para especificar...

 
KimIV:


Todavía no se han publicado... No he tenido tiempo... Pero de todos modos... Siempre estoy ajustando cosas en ellos. Y he escrito 30 o más nuevos. Las cuelgo aquí tranquilamente cuando tengo tiempo y ganas)))

ZS. Puedo enviar por correo electrónico todas las libras tal como están, pero si lo publicas, deberías preparar una descripción o al menos indicar la lista y el propósito de las funciones...

Oh... será interesante husmear :) Lo pondré en mi correo electrónico.
Razón de la queja: