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

 
Urain:

MathRand debe ser inicializado con MathSrand() antes de su uso,

y recomiendo pasar TimeLocal() como parámetro de MathSrand().

La inicialización se requiere una vez, luego para 32768 consultas MathRand() no se detecta,

Después puedes reiniciarlo si quieres una nueva secuencia, de lo contrario ocurre lo mismo.

Por supuesto, se puede inicializar cada paso, pero es necesario controlar el parámetro de inicialización para cambiar,

Por lo demás, es la misma secuencia.


Eso es lo que hago. ¿Qué es timelockal?

Tengo el mismo conjunto en la misma historia.

 
ALGUIEN ME DA UNA PISTA... TERCERA VEZ que escribo y nadie me contesta...AccountEquity() UNA BARRA ARRIBA (en una barra pasada) ¿CÓMO SE ESCRIBE?
 
vlad123:


Eso es lo que hago. ¿Qué es timelockal?

Tengo el mismo conjunto en la misma historia.


Ejemplos del libro de texto:

datetime TimeLocal()

La función devuelve la hora local del ordenador como el número de segundos transcurridos desde las 00:00 del 1 de enero de 1970.
Nota: cuando se prueba, la hora local se simula y coincide con la última hora conocida del servidor simulada.

Ejemplo:

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0;i<10;i++ )Print("произвольная величина ", MathRand());

 
sllawa3:
PODRÍA ALGUIEN ACONSEJARME, POR FAVOR. ...AccountEquity() UNA BARRA ARRIBA (en una barra pasada) ¿CÓMO ESCRIBIR?

Respuesta: de ninguna manera.
AccountEquity() devuelve la cantidad de capital, y no depende del número de barras.
No se pueden conocer sus valores anteriores simplemente retrocediendo en el historial de barras.
Su valor depende del número de operaciones abiertas/cerradas, rentables/con pérdidas.
Para registrar la "historia de la equidad", cree un array estático y registre en él el valor de AccountEquity(), por ejemplo, en cada apertura de barra.
Por lo tanto, tendríamos que desplazarnos por la matriz para obtener el historial de cambios en la equidad.

 
sllawa3:
QUE ALGUIEN ME DÉ UNA PISTA... AccountEquity() UNA BARRA POR ENCIMA (en una barra pasada) ¿CÓMO ESCRIBIR?

Parece que tenemos que almacenarlo en cada nueva barra en una variable, por ejemplo de esta manera:

1. almacenar el valor inicial de la equidad en la función init() en una variable, digamos EquAkk=AccountEquity();

2. comprobar la aparición de una nueva barra (no en init por supuesto), si es así, entonces
{
LastEqu=EquAkk ; // almacenar el valor de equidad pasado (requerido por nosotros) en la variable
EquAkk=AccountEquity(); // registrar el nuevo valor de equidad (para el próximo valor "pasado")
}

Así, la variable LastEqu almacenará el valor de equidad para la barra pasada, y su valor se sobrescribirá de nuevo cuando se abra la siguiente barra...

... Lo escribí por mi cuenta, no lo revisé y ya me quedé dormido, así que no me patees mucho...
Creo que he expresado la idea ....

 
ToLik_SRGV:

Respuesta: de ninguna manera.
AccountEquity() devuelve la cantidad de capital, y no depende del número de barras.
No se pueden conocer sus valores anteriores simplemente retrocediendo en el historial de barras.
Su valor depende del número de operaciones abiertas/cerradas, rentables/con pérdidas.
Para registrar la "historia de la equidad", cree un array estático y registre en él el valor de AccountEquity(), por ejemplo, en cada apertura de barra.
De este modo, sería posible obtener el historial de cambios en la equidad desplazándose por la matriz.



POR LO QUE, TODAVÍA PUEDE
 
sllawa3:
POR LO QUE, TODAVÍA PUEDE


Bueno, yo escribí lo mismo pero sugerí usar un array en lugar de una variable.

Para registrar la "historia de la equidad", es necesario, por ejemplo, crear una matriz estática y registrar en ella el valor de AccountEquity(), por ejemplo, en la apertura de cada barra.
En consecuencia, el historial de los cambios en la equidad debe obtenerse desplazándose por la matriz.

 
Chicos, no consigo saber cómo poner las flechas en el gráfico, una en la barra más alta de los últimos 80 días y la otra en la barra más baja de los mismos 80 días. He creado este código, pero está lanzando flechas en grupos... Necesito una flecha en el mínimo y el máximo de cada barra para los últimos 80 días, luego para los siguientes 80 días, etc. ¿Puedes darme una pista?
//====================================================================================
   int      NBars,MostHiBar, MostLoBar;
   double   MostHiPrice,MostLoPrice;
   datetime TMostHiBar,TMostLoBar;
   
//-----------------------------------------------------------------
   NBars       = 80;
   MostHiBar   = iHighest(NULL,PERIOD_D1,MODE_HIGH,NBars,0);      // Номер "максимального" бара
   MostLoBar   = iLowest (NULL,PERIOD_D1,MODE_LOW, NBars,0);      // Номер "минимального" бара
   MostHiPrice = iHigh   (NULL,PERIOD_D1,MostHiBar);              // Цена  "максимального" бара
   MostLoPrice = iLow    (NULL,PERIOD_D1,MostLoBar);              // Цена  "минимального" бара
   
   TMostHiBar  = iTime   (NULL,PERIOD_D1,MostHiBar);              // Время открытия "максимального" бара
   TMostLoBar  = iTime   (NULL,PERIOD_D1,MostLoBar);              // Время открытия "минимального" бара

   Comment (
            "\n", 
            "Наибольшая цена за ", NBars, " дней = ", MostHiPrice, "\n",
            "Наименьшая цена за ", NBars, " дней = ", MostLoPrice, "\n",
            "Время наибольш. бара = ", Time[MostHiBar], "\n",
            "Время наименьш. бара = ", Time[MostLoBar]   // сюда пробовал и TMostLoBar вставлять - пофигу...           
           );
           
   SetArrow(241, MediumSpringGreen, "", Time[MostHiBar], High[MostHiBar], 0);
   SetArrow(242, OrangeRed, "", Time[MostLoBar], Low[MostLoBar], 0);
//====================================================================================
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) 
{
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//====================================================================================
 
¿Podríais decirme si es posible abrir una posición en MT mediante un stop? Por ejemplo, poner un stop detrás del soporte/copr. y si rompe, el stop abre una posición.
 
Craft:
¿Podríais decirme si es posible abrir una posición en un stop en MT? Por ejemplo, poner un stop detrás del soporte/sopr. y si penetra, el stop abre una posición.

Claro que sí. Sólo que no se llama stop sino orden pendiente. Abra su terminal. Pulsa F1 en él. En la ventana que aparece abra Contenido - Comercio - Tipo de pedido.