[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 207

 
DemanRap: Así que la semirrecta que va de un punto a otro sólo continúa hacia el lado derecho de la gráfica, pero ¿cómo puedo hacer que continúe hacia el lado izquierdo?
¿No puedes dibujar un rayo hacia la izquierda, o quieres una línea recta en lugar de un rayo?
 
Quiero que mi robot sea capaz de rastrear dónde estaría este rayo en los datos históricos. Por ejemplo, quiero comprobar lo cerca que estarían de él otros fractales, no sólo los 2 fractales en los que lo construí originalmente.
 
Sí. Así que mi objetivo es conseguir una línea recta.
 
DemanRap: Sí. Así que mi objetivo es conseguir una línea recta.

datetime time1 = …;
double price1 = …;

datetime time2 = …;
double price2 = …;

datetime timeDifference =  time2 – time1;  // добавить
double priceDifference = price2 – price1;  // добавить

ObjectCreate("trend_line1", OBJ_TREND, 0, time1, price1, time2, price2);
ObjectCreate("trend_line2", OBJ_TREND, 0, time1, price1, time1 - timeDifference, price1 - priceDifference); // добавить

Para obtener una línea recta, intente añadir las líneas resaltadas

 
Muchas gracias, pero resultó ser mucho más sencillo. Sólo dibujé otro rayo y cambié el tiempo1, el precio1 y el tiempo2 el precio2 en él. pero me llevó un día entero averiguarlo)))
 
Aleksander:

¿qué pasa con ellos? - global a nivel de terminal?

almacenan algún tiempo en el archivo de variables :-) fecha de acceso, nombre y valor de tipo double


La pregunta sobre las variables GV es la siguiente... En el libro de S.K. sobre MQL4, en el capítulo "GlobalVariables" en la sección "Properties of GV-Variables" está escrito: "Una variable GV sólo puede ser de tipo double". A continuación, en la sección "Function GlobalVariableDel()", hay un ejemplo de experto globalvar.mq4 con el siguiente contenido:

//--------------------------------------------------------------------
// globalvar.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int    Experts;                                 // Колич. экспертов
double Depo=10000.0,                            // Заданный депозит
       Persent=30,                              // Заданный процент     
       Money;                                   // Искомые средства
string Quantity="GV_Quantity";                  // Имя GV-переменной
//--------------------------------------------------------------------
int init()                                      // Спец. функция init
  {
   Experts=GlobalVariableGet(Quantity);         // Получим тек. знач.
   Experts=Experts+1;                           // Колич. экспертов
   GlobalVariableSet(Quantity, Experts);        // Новое значение
   Money=Depo*Persent/100/Experts;              // Средства для эксп.
   Alert("Для эксперта в окне ", Symbol()," выделено ",Money);
   return;                                      // Выход из init()
  }
//--------------------------------------------------------------------
int start()                                     // Спец. функция start
  {
   int New_Experts= GlobalVariableGet(Quantity);// Новое колич. эксп.
   if (Experts!=New_Experts)                    // Если изменилось
     {
      Experts=New_Experts;                      // Теперь текущ. такое
      Money=Depo*Persent/100/Experts;           // Новое знач. средств 
      Alert("Новое значение для эксперта ",Symbol(),": ",Money);
     }
   /*
   ...
   Здесь долен быть указан основной код эксперта,
   в котором используется значение переменной Money
   ...
   */
   return;                                      // Выход из start()
  }
//--------------------------------------------------------------------
int deinit()                                    // Спец. ф-ия deinit
  {
   if (Experts ==1)                             // Если эксперт один..
      GlobalVariableDel(Quantity);              //..удаляем GV-перемен
   else                                         // А иначе..
      GlobalVariableSet(Quantity, Experts-1);   //..уменьшаем на 1
   Alert("Эксперт выгружен из окна ",Symbol()); // Сообщ. о выгрузке
   return;                                      // Выход из deinit()
  }
//--------------------------------------------------------------------

Pregunta: ¿por qué en este ejemplo las variables GV Experto y Nuevo_Experto son de tipo int. aunque, como se ha dicho antes, estas variables deberían ser de tipo double?

 

Buenas tardes, ¿podríais decirme qué puede fallar en el EA?

//+------------------------------------------------------------------+
//|                                                           iB.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

int MagicNumber = 1981;
//-----------------------------------------
extern double  Percent        = 0.8;
extern double  Lots           = 0.1;

bool Accept()
  {
   bool TradeOpen;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) TradeOpen=false;
            else TradeOpen=True;
         if (OrderType() == OP_BUY)
            {if (OrderStopLoss() < (Low[1] * Point)) 
                  OrderModify(OrderTicket(),OrderOpenPrice(),(Low[1] * Point),0,0,Green);}
         if (OrderType() == OP_SELL) 
            {if (OrderStopLoss() > (High[1] * Point)) 
                  OrderModify(OrderTicket(),OrderOpenPrice(),(High[1] * Point),0,0,Red);}
        }
     }

   return(TradeOpen);
  }
//-------------------------------------------------------------------+
int start()
  {
//----
   if (Accept())
   {
      if(High[1]<High[2] && Low[1]>Low[2])   
         if ((High[1]-Low[1])/(High[2]-Low[2])<Percent)
       {
         OrderSend(Symbol(), OP_BUYSTOP, Lots, High[1], 3, Low[2], 0, "iB", MagicNumber, 0, Green);
         OrderSend(Symbol(), OP_SELLSTOP, Lots, Low[1], 3, High[2], 0, "iB", MagicNumber, 0, Red);
       }
   }
   return(0);
  }
//+------------------------------------------------------------------+
Compila sin problemas, sin errores, pero no comercia. He intentado comentar diferentes bloques de código, pero no he encontrado el culpable. No he notado ningún problema de lógica.
 
He olvidado mi contraseña en mi antigua cuenta de demostración. ¿Dónde puedo encontrarlo?
 
MikeM:
He olvidado mi contraseña en mi antigua cuenta de demostración. ¿Dónde puedo encontrarlo?


No lo tienes en ningún sitio, si no te encargaste de guardarlo tú mismo -lo comprobé con el equipo de soporte de una de las empresas de corretaje-.

Tienes que comprobar tu correo electrónico: cuando abres una cuenta te envían todos sus parámetros, incluidas las contraseñas...

 
7777877:

Buenas tardes. Intenté "sentir la diferencia" y esto es lo que me salió... Es decir, podemos (con un poco de estiramiento) definir REALMENTE una variable GV de la siguiente manera. Una variable GV es una "caja" en la que se puede almacenar una variable de cualquier tipo (excepto una cadena, porque una variable GV es de tipo doble solamente, mientras que la regla de encasillamiento no permite la reducción de tipo, es decir, no se puede hacer una cadena un doble). Y esta variable, que insertaremos en una GV-variable, "tomará la forma de esta caja" (es decir, se fundirá de tipo fuente a tipo doble)... De todos modos, ¿qué te parece esto?

Gracias de antemano por la respuesta.
Has acertado. Además, cuando sacamos un valor de la caja, es de tipo double, pero si damos una orden para escribir el resultado en una variable de tipo int, el compilador tomará automáticamente todos los pasos necesarios para poner el valor en la nueva caja.