Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 151

 
Forexman77:
¿Pueden decirme cómo establecer un stop en el máximo o en el mínimo de la barra en la que está abierta la operación?

Si es alto, entonces Alto[ ] en lugar de parada, si es bajo Bajo[ ], pero tenga en cuenta dos cosas.


1.Se trata de la dispersión y la distancia hasta el tope fijada por el concesionario.

2. No se puede colocar un stop correctamente en la barra que se está formando. Es decir, High[0]. Y sólo en los bares anteriores. Es decir, alto[1], etc.

 
satorifx:

Buenas tardes.

Me pueden decir cómo enlazar programáticamente 2 sistemas de coordenadas en un gráfico: (X,Y) y (tiempo,precio)? Necesita una etiqueta con coordenadas (X,Y) que siempre estará en el precio mínimo del gráfico.

artmedia70:
Hay diferencias. ¿En el gráfico en general, es decir, en todo el historial disponible en el terminal, o en el gráfico visible (dentro de la pantalla del monitor)?


Exactamente en el gráfico visible dentro de la pantalla del monitor

 
satorifx:

Exactamente en el gráfico visible dentro de la pantalla del monitor

Poner este script en el gráfico:

//+------------------------------------------------------------------+
//|                                       sc_LowestPricePerChart.mq4 |
//|                               Copyright 2013, Artyom A. Trishkin |
//|                          artmedia70@gmail.com, Skype: Artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Artyom A. Trishkin"
#property link      "artmedia70@gmail.com, Skype: Artmedia70"
//+------------------------------------------------------------------+
//|           script program start function                                    |
//+------------------------------------------------------------------+
int start() {
   int count=WindowBarsPerChart();                             // количество видимых баров 
   int LowestBar=iLowest(Symbol(),Period(),MODE_LOW,count,0);  // бар с минимальной ценой
   double LowestPricePerChart=Low[LowestBar];                  // минимальная цена из видимых баров
   SetArrow(5, Yellow, "sc_LowestPricePerChart_LowestPrice", Time[LowestBar], LowestPricePerChart, 1);
   return(0);
}
//+------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) {
   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);
}
//+------------------------------------------------------------------+

Haga lo mismo para el máximo

 
artmedia70:

Poner este script en el gráfico:

Haga lo mismo para el máximo


La cuestión es que el objeto FLECHA tiene coordenadas (tiempo, precio) pero no coordenadas (x,y). Si extiende la ventana del indicador en la parte inferior de la pantalla, el objeto se moverá junto con la ventana, pero al mismo tiempo, las coordenadas (x,y) del objeto en la ventana cambiarán y no se podrán calcular porque no hay conexión entre los dos sistemas de coordenadas. En principio, se podría utilizar un objeto TEXTO o cualquier otro objeto en lugar de un objetoFLECHA , pero esto no resuelve el problema.
 
satorifx:
La cuestión es que el objeto FLECHA tiene coordenadas (tiempo, precio), pero no coordenadas (x,y). Si ampliamos la ventana del indicador en la parte inferior de la pantalla, el objeto se moverá junto con la ventana, pero al mismo tiempo las coordenadas (x,y) del objeto en la ventana cambiarán y no se podrán calcular porque no hay conexión entre los dos sistemas de coordenadas. En principio, se podría utilizar un objeto TEXTO o cualquier otro objeto en lugar de un objeto FLECHA , pero esto no resuelve el problema.

Bueno, entonces ata el blanco al caliente. Se le ha enseñado a conocer el precio mínimo en barras visibles, y se le ha enseñado a marcarlo en el gráfico.

El resto es una oscura ilusión tuya ;)

 
Sepulca:



No sé muy bien a qué se refiere. Si no había ningún archivo (no se abrió) o hubo un error de lectura. Habría dado un mensaje, pero no hay noticias...
 
El código debe ser escrito de tal manera, que en la barra, en la que se abre la operación, hay una salida de la posición, si se forma un pico, en la siguiente barra inmediatamente después de la barra con un pico, pero las señales en las barras, después de lo cual se abre la operación, donde se produjo un pico, se ignoran. No hay ningún problema con el código que describe el pico. La dificultad es cómo decirle al programa que la señal para utilizar sólo la barra en la que se abrió el comercio.
 
Forexman77:
Necesito escribir el código para que en la barra donde se abre la operación se salga de la posición si se forma un pico en la siguiente barra inmediatamente posterior a la barra con el pico, pero se ignoren las señales de las barras posteriores a la barra donde se abre la operación, donde se produjo el pico. No hay ningún problema con el código que describe el pico. La dificultad estriba en cómo indicar al programa que sólo se utilice para la señal la barra en la que está abierta la operación.
La operación tiene una hora de apertura OrderOpenTime(); Hay una función que muestra el número de barra por tiempo iBarShift(); Usa esta barra como "... usamos sólo la barra en la que la operación está abierta para la señal...".
 
artmedia70:
La operación tiene una hora de apertura OrderOpenTime(); Y hay una función que te mostrará el número de barra por tiempo iBarShift(); Esta es la barra y la utilizamos como "... que para la señal que utilizamos, sólo la barra en la que la operación está abierta...".

Gracias, lo investigaré.
 
Zolotai:

No sé muy bien a qué se refiere. Si no había ningún archivo (no se abrió) o hubo un error al leer. Recibirías un mensaje, pero no recibes ninguna noticia...

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");// Abrir archivo.

Si FILE_WRITE no se combina con FILE_READ, se abrirá un archivo de longitud cero. Incluso si había datos en el archivo antes de que se abriera, se destruirán.
Si desea añadir datos a un archivo existente, debe abrirlo utilizando la combinación FILE_READ | FILE_WRITE..
Si FILE_READ no se combina con FILE_WRITE, el archivo sólo se abrirá si el archivo ya existe. Si el archivo no existe, se puede crear utilizando el modo FILE_WRITE.