[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 302

 
hoz:

Hmm. Supongo que no se puede utilizar una constante para el caso como una variable, de acuerdo con la documentación. Dice algún tipo de constante de destino, constante de carácter o expresión de carácter.

Sólo funciona si se pone una letra de tipo cadena, es decir, de 1 carácter (si es más de 1 carácter, el compilador jura) o un número.

Nada más.
Dice algunas constantes de destino, expresiones de carácter y constantes de carácter.

Sólo constantes enteras.
 
Ayúdenme a aconsejarme, hay una señal para abrir una posición de compra, al cabo de un tiempo hay otra señal o varias posiciones de compra, cada una de las cuales dura 1 vela ¿cómo hacer para que en el momento de cada señal se abra una nueva orden y sólo una, y que no haya packs sin cerrar las órdenes anteriores?
 
tommy27:
Por favor, aconsejar, hay una señal para abrir una posición de compra, algún tiempo después hay otra señal o varias señales para comprar, cada una de las cuales dura 1 vela ¿cómo hacer una nueva orden abierta durante cada una de esas señales y sólo una, y no paquetes sin cerrar las órdenes anteriores?
Comprueba cuántas barras hace que se abrió la última posición. Si es superior al valor especificado, se puede abrir una nueva posición.
 
artmedia70:
Comprueba cuántas barras hace que se abrió la última posición. Si es más que esto, se puede abrir una nueva posición.


Gracias
 

Estoy aprendiendo a trabajar con las bibliotecas. Estoy escribiendo un Asesor Experto, hay una función como esta:

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}

Lo puse en la inclusión, todo funciona como debería. Pero si se conecta a la biblioteca, hay un error al compilar el Asesor Experto:

'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 8)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 19)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 8)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 19)
4 ошибок, 0 предупреждений.

¿Por qué esta función no es visible en la biblioteca?

La biblioteca tiene este contenido y compila perfectamente:

//+-------------------------------------------------------------------------------------+
//|                                                                  Scalper_M1_lbr.mq4 |
//|                                                                                 hoz |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""
#property library

int i_fastMATF,
    i_fastMAPeriod,
    i_fastMAShift,
    i_fastMAMethod,
    i_fastMAApplied,
    i_fastMAIndex,
    i_slowMATF,
    i_slowMAPeriod,
    i_slowMAShift,
    i_slowMAMethod,
    i_slowMAApplied,
    i_slowMAIndex,
    i_filtrMATF,
    i_filtrMAPeriod,
    i_filtrMAShift,
    i_filtrMAMethod,
    i_filtrMAApplied,
    i_filtrMAIndex;
//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
 
Hola a todos. Realmente necesito algunas clases de programación. ¿Pueden decirme dónde puedo descargarlos sin más complicaciones? Sólo he encontrado estos: http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html Pero no me convienen, ya que son demasiado complicados.
 
popovagalina:
Hola a todos. Realmente necesito algunas clases de programación. ¿Pueden decirme dónde puedo descargarlos sin más complicaciones? Sólo he encontrado estos: http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html Pero no me convienen, ya que son demasiado complicados.
¿Por qué no es bueno el libro de texto de S. Kovalyov? Consulte lo anterior y la documentación y la asistencia técnica para ayudar. Buena suerte.
 

Hola.

¿Podría decirme si el operador OrdersTotal() cuenta realmente todas las órdenes abiertas o las que pertenecen al símbolo asignado al Asesor Experto?

Si es general, ¿cómo podemos calcular sólo EURUSD si hay órdenes abiertas para USDCHF, etc.?

Gracias.

 
ed3sss:

Hola.

¿Podría decirme si el operador OrdersTotal() cuenta realmente todas las órdenes abiertas o las que pertenecen al símbolo asignado al Asesor Experto?

Si es general, ¿cómo podemos calcular sólo EURUSD si hay órdenes abiertas para USDCHF, etc.?

Gracias.


Calculará todos ellos. Si quieres ser específico con un símbolo o algo más, puedes usar esta función:

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

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);
}
 
Ahora tengo una pregunta: las señales al búho provienen de 2 indicadores, la primera señal dura 1 barra y luego desaparece, y la segunda aparece en la misma barra o después de algunas barras. Cómo hacer que el búho recuerde la 1ª señal y espere a que aparezca la segunda sin importar cuántos compases después.