[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 171

 

Hay un indicador, Sanyok es el autor.

Marca el nivel de un fractal formado en una barra con un volumen mayor que el volumen medio de las 3 últimas barras anteriores al fractal.

¿Cómo cargarlo en un EA?

Lo estoy intentando:

h=NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits);

l=NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_LOWER, 1),Digits);

no funciona.

Archivos adjuntos:
vfractals.mq4  4 kb
 
NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits); 1. MODE_UPPER y MODE_LOWER significa que se toman los valores del primer y segundo búfer de indicadores (se tiene el cero y el primero) 2. El número 1 significa que se toma el valor del [1]-ésimo elemento (en la última barra)
 
ilunga:
NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits); 1. MODE_UPPER y MODE_LOWER significa que se toman los valores del primer y segundo búfer de indicadores (se tiene el cero y el primero) 2. El número 1 significa que se toma el valor del [1]º elemento (en la barra anterior).

Gracias.
 

Mover.

Pavel447 02.03.2011 10:57
¿Cómo está usted?
¿Si tiene un Asesor Experto (o script) que automáticamente establece SL, TP, Trailing Stop, y transfiere a BU en la toma de beneficios ...?
Gracias de antemano).

 
Mover.
dimeon 02.03.2011 11:41
sammi61:

Ayúdame a añadir un lote dinámico al código de un EA, para que el lote aumente con el aumento del depósito, o como un porcentaje del depósito?
Si el lote es 0, el lote automático está activado, si es un valor, el lote es fijo
Archivos adjuntos:
FiboWave_v1_1lavtolot.mq4 (9.26 KB) eliminado
 
artmedia70:
Las matrices pueden utilizarse en muchos casos y para muchas tareas diferentes. ¿Cuál es el ejemplo correcto?
  if (Cls_B[i]||Cls_S[i]) LotCt=NormalizeLot(OrderLots()/(4-i)); 
¿cómo se escribe [i]? Parece que si lo declaro como una variable..., da un error de compilación. No entiendo... Pide un valor entero, pero un array también puede declararse como una variable...
 

100yan:
как прописать [i] ?

Pide un valor entero, pero un array también puede ser declarado como una variable...

Sé más específico.

un array es una variable con el mismo nombre pero con un número diferente

 
100yan:
¿cómo se escribe [i]? Parece que si lo declaro como una variable..., da un error de compilación. No entiendo... Pide un valor entero, pero un array también puede declararse como una variable ?
Cualquier construcción entre paréntesis [] debe tener el tipo de datos int.
 

¿Puedes decirme qué significa esta basura en los registros? ¿Cómo puedo evitarlo? El Asesor Experto opera con este indicador, después de un error la operación se congela hasta que se reinicie el terminal porque al reiniciar el Asesor Experto puede volver a bloquearse.

22:39:53 +ZigZag_Niveles CLJ1,M5: uninit razón 3
22:39:53 Zigzag CLJ1,M5: uninit razón 1

22:39:53 Zigzag CLJ1,M5: eliminado

¿Tal vez sea porque estoy utilizando el terminal en un servidor remoto y en mi propio ordenador al mismo tiempo?

 
todem:

Hola a todos. Tengo una pregunta: en esta función para dos posiciones (compra y venta) establezco el stop-loss de manera que para la venta SL=compra abierta+18 pips, y viceversa para la compra:

бла-бла-бла...

Los precios de apertura de las posiciones opuestas se obtienen de la función:

бла-бла-бла...

Conocemos la función ModifyOrder como una función estándar de KIMIW, la utilizamos para establecer los stoplosses calculados...

La pregunta es, el EA establece stoplosses sólo para una venta y no para una compra, ¿quién lo cree?


void SimpleLock(string sy="", int mn=-1) {
  double po, pp, ops1=0, ops2=0, opb;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<=k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        po=MarketInfo(OrderSymbol(), MODE_POINT);
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_SELL) {
            opb=OrderStopLoss();                            // Значение стопа позиции до модификации = (0???)
            ops2=NormalizeDouble(OrderPrice(OP_BUY),Digits);
            if (ops2>0 && opb!=0) {
                ModifyOrder(-1, ops2+18*po, -1);
              }
            
          }
          if (OrderType()==OP_BUY) {
            opb=OrderStopLoss();
            ops1=NormalizeDouble(OrderPrice(OP_SELL),Digits);
            if (ops1>0 && opb!=0) {
                ModifyOrder(-1, ops1-18*po, -1);
              }
            
          }
        }
      }
    }
  }
}

Si no se establece el tope, no se llama a la modificación...

Si no se establece el stop-loss por mucho tiempo, no llamará a la modificación..:

double OrderPrice(int type) {
   double price;
   int i, k=OrdersTotal();
      
      for (i=0; i<k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==type) {
            price=OrderOpenPrice();  // Значение цены открытия в списке ордеров терминала позиции с типом type и индексом i
            }
         }
      }
   return(price);  // Возвращает цену открытия последней в списке ордеров позиции с типом type и индексом не более k-1
}

¿Está seguro de que se devuelve el precio de apertura de la orden requerida?

Razón de la queja: