[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 191

 
solnce600:

Muchas gracias por su ayuda.

Pero abre operaciones en el probador en cada vela minuto. Información en este enlace http://clip2net.com/s/2T98Y

Quiero que abra una orden en la vela de 5 minutos, pero no en cada vela.

Y sólo si la vela actual de cinco minutos es > o = 30 puntos (desde el precio de apertura hasta su máximo)

Es decir, abrir una orden de mercado al trigésimo pip desde el precio de apertura del periodo cero=actual de cinco minutos.

Si la vela actual de cinco minutos está a menos de 30 pips del precio de apertura a su máximo, entonces no abra una orden de mercado.

Sólo tienes que soltar el EA en el gráfico de cinco minutos, será como has escrito.

O sustituir en cualquier lugar del código Open[0] por iOpen(Symbol (), PERIOD_M5, 0), entonces funcionará desde cualquier gráfico.

La segunda condición en su código es que el precio de cierre del período actual de cinco minutos >= precio de apertura de la orden.

No, Close[0] es el precio de cierre actual de la barra 0, es decir, sólo el precio actual. Podrías haber escrito simplemente Bid, el resultado es el mismo.


Es decir, no habrá muchas órdenes, he calculado en Excel, desde 1999 - un poco más de 3000 órdenes para el euro en ambas direcciones.

Pasamos al siguiente de cinco minutos y si éste, es decir, el actual de cinco minutos > o = 30 pips, abrimos al trigésimo pips, si es menor, pasamos al siguiente de cinco minutos... y así hasta el final del gráfico.

Pero la cosa es que, según una estimación aproximada, la mayoría de los planes de cinco minutos que > o = 30 pips tienen muchas más probabilidades de pasar de 15 pips que de ser cerrados por un stop de 30 pips.

Su condición es "sin órdenes abiertas".

Pero en mi sistema, se pueden formar dos periodos de cinco minutos con los parámetros descritos anteriormente de forma consecutiva y si la orden del periodo de cinco minutos anterior no se cierra, entonces no se abrirá ninguna orden en el segundo periodo de cinco minutos.

Necesito que se abra una orden en cada periodo de cinco minutos con los parámetros descritos anteriormente, independientemente de que haya órdenes en la operación o no.

Bien, entonces cambiemos la condición. Así que sale:

int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 if (OrdesTotal()==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (Bid>=Price)                       //если текущая цена доползла до цены открытия
       int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
beginner:
Me interesa el asesor, los objetos - ¿dibujo la vela yo mismo?

Puedes entender el principio:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Рисуем на чарте бары                                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fDraw_Bars (string fs_Pref,          // Префикс имени объекта
                 int fi_NUMPeriod,        // Индекс (номер) периода, на котором будет виден объект
                 bool fb_IsNullBar,       // флаг рисования 0-го бара
                 double ar_Price[][][4])  // Массив с ценами
{
    int      li_widht = 6;
    string   ls_Name;
    color    lc_color = Aqua;
    datetime ldt_Time;
//----
    //---- Определяем время текущей свечи (её место в истории)
    if (fb_IsNullBar) {ldt_Time = Time[0];}
    else {ldt_Time = Time[1];}
    //---- Рисуем свечу
    ls_Name = StringConcatenate (fs_Pref, "_Candle_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] < ar_Price[0][1][0]) {lc_color = Red;} else {if (ar_Price[0][1][3] == ar_Price[0][1][0]) {li_widht = 8;} else {lc_color = Blue;}}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][3], ar_Price[0][1][0], lc_color, li_widht, fi_NUMPeriod, "", 0, 10, "Arial", 0);
    //---- Рисуем тени свечи
    ls_Name = StringConcatenate (fs_Pref, "_Shadow_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] <= ar_Price[0][1][0]) {lc_color = Gold;} else {lc_color = DeepSkyBlue;}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][1], ar_Price[0][1][2], lc_color, 1, fi_NUMPeriod, "", 0, 10, "Arial", 0);
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
 
Diubakin:
¿Has mirado la prueba EA para la función en el probador? Cierra exactamente la pérdida máxima con el beneficio máximo sin importar cuántas órdenes haya: dos o veinte.
Por ahora la pregunta sobre la función queda abierta porque mañana pegaré algunas funciones más en su EA de prueba para hacer un experimento puro. Lo he observado en modo visual y casi todos los cierres dobles son los últimos, el anterior cierra en SL y TP, es decir, no tengo nada que elegir. He eliminado las paradas y las tomas para tener algo que elegir. ¡Mañana mostraré su Asesor Experto con todas las funciones adicionales y comentarios! Podrás comprobar por ti mismo cómo funciona. ¡Quiero que se demuestre que me he equivocado! Si tengo razón, ¡intentaré hacerlo lo mejor posible! ¡Hasta mañana!
 
alsu:

Simplemente deje su EA en un gráfico de cinco minutos, será como usted escribió.

O sustituya Open[0] por iOpen(Symbol (), PERIOD_M5, 0) en cualquier parte del código, entonces funcionará desde cualquier gráfico.

No, Close[0] es el precio de cierre actual de la barra 0, es decir, sólo el precio actual. Podrías simplemente escribir Bid, el resultado es el mismo.


Bien, entonces cambiemos la condición. Sale:




Muchas gracias por su ayuda. Está bien. Pero......

1. En unos cinco minutos, se abre más de un pedido.

2. Algunas órdenes se cierran sobre órdenes de stop cuyo precio es diferente al prescrito en el código.

He marcado los datos del pedido en el archivo adjunto.

 
alsu:

Sólo tienes que lanzar el Asesor Experto en el gráfico de cinco minutos, será como usted escribió.

O sustituya Open[0] por iOpen(Symbol (), PERIOD_M5, 0) en cualquier parte del código, entonces funcionará desde cualquier gráfico.

No, Close[0] es el precio de cierre actual de la barra 0, es decir, sólo el precio actual. Podrías simplemente escribir Bid, el resultado es el mismo.


Bien, entonces cambiemos la condición. Sale:




Muchas gracias por su ayuda. Está bien. Pero......

1. En unos cinco minutos, se abre más de un pedido.

2. algunas órdenes son cerradas por órdenes de stop cuyo precio es diferente al prescrito en el código.

Puede encontrarinformación sobrelos pedidos anteriores en este enlace

http://clip2net.com/s/2Tfym

 

Estoy copiando un programa con algunos cambios. el compilador me da un error: '(' - definición de función inesperada F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

¿qué significa?

- Intenté eliminar esta parte del programa - también dice lo siguiente.

- he intentado dejar esta parte sin modificar - el resultado es el mismo (mismo error)

en el programa nativo compilado con éxito.

 
TarasBY:

El principio se puede entender:



Gracias.
 
lopuh:

Estoy copiando un programa con algunos cambios. el compilador me da el error: '(' - definición de función inesperada F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

¿qué significa?

- Intenté eliminar esta parte del programa - también dice lo siguiente.

- he intentado dejar esta parte sin modificar - el resultado es el mismo (mismo error)

en el programa nativo compilado con éxito.

Por aquí

El error sugiere que está definiendo una función dentro de otra función. Todas las funciones deben ser definidas globalmente

 

Necesito ayuda.

Buscando alguna función o script que sepa hacer una captura de pantalla en algún momento, como por ejemplo al abrir/cerrar una pose.

Cuando no tengo que hacerlo, me he encontrado con uno de vez en cuando, pero ahora no lo encuentro.

¡AYUDA!
 
DhP:

Necesito ayuda.

Busco alguna función o script que sepa hacer una captura de pantalla en algún momento, como por ejemplo al abrir/cerrar una pose.

Cuando no tengo que hacerlo, me he encontrado con uno de vez en cuando, pero ahora no lo encuentro.

¡AYUDA!
Hay un Asesor Experto por Igor Kim que hace una captura de pantalla en un intervalo determinado