Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1776 1...176917701771177217731774177517761777177817791780178117821783...1954 Nuevo comentario законопослушный гражданин 2021.11.30 16:08 #17751 MakarFX #:Tiene la condición de abrir dos a la vez si no hay ninguna abierta. ¿Qué es eso? double GetLotSize() { double Ls=0; for(int pos=OrdersTotal()-1;pos>=0;pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();} } } } return Ls; } Esta cosa cuenta el lote actual. Este parámetro se establece en los ajustes: LotControl respectivamente, cuando: GetLotSize()>LotControl - Necesito que abra vOrderOpenSell() en la señal bSignalBuy(). Sí, sé que ambas órdenes se abren por la condición. Lo escribí así al principio. Pero, ¿cómo hago para que vOrderOpenBuy() no se abra? [¡AVISO CERRADO!] Cualquier pregunta [ARCHIVO] Cualquier pregunta de Preguntas de los principiantes законопослушный гражданин 2021.11.30 16:11 #17752 Mihail Matkovskij #:Si el robot ya ha entrado en el mercado en una dirección, no vuelve a entrar en la misma dirección. ¿Es así como funciona su algoritmo de entrada? Si se cumple esta condición, se activa Después de Y también cuando hay una señal de venta. Entonces, la razón para entrar en la dirección opuesta es porque la condición se dispara Sí. Eso es lo que necesito. PERO tiene que detener/excluir una entrada de avance por esta condición: GetLotSize()>LotControl Tretyakov Rostyslav 2021.11.30 16:16 #17753 Kedrov #:¡Gracias, Makar, por meterte conmigo! Aquí tienes una captura de pantalla. Sí, has hecho un lío) Ahora, en cada carpeta, una por una, renombre las carpetas Expertos a _Expertos e Indicadores a _Indicadores. Renombrado en una carpeta - iniciar el terminal, si no ayudó - renombrar de nuevo y pasar a la siguiente carpeta. P.D. La primera vez que el terminal arranque será un poco más largo de lo habitual. Librerías: Easy Canvas Errores, fallos, preguntas Ideas para los expertos Tretyakov Rostyslav 2021.11.30 16:19 #17754 законопослушный гражданин #:esta cosa cuenta el tamaño actual del lote este parámetro se establece en los ajustes: LotControl respectivamente, cuando: GetLotSize()>LotControl - Necesito que vOrderOpenSell() ocurra al recibir la señal bSignalBuy(). Sí, sé que ambas órdenes se abren por la condición. Lo escribí así al principio. Pero, ¿cómo hago para que vOrderOpenBuy() no se abra? if((bSignalBuy() == true)&&(GetLotSize()>LotControl)) vOrderOpenSell(); else if(bSignalBuy() == true) vOrderOpenBuy(); Tretyakov Rostyslav 2021.11.30 16:29 #17755 законопослушный гражданин #:Sí. Eso es lo que necesito. PERO es necesario detener/excluir la entrada de la delantera por esta condición: Estoy confundido por esta condición // Если нет открытых ордеров, то входим в условие if(CountOrders()==0) { con esta condición GetLotSize()=0 законопослушный гражданин 2021.11.30 16:31 #17756 MakarFX #: Gracias. Corregido. Lo pensaré. законопослушный гражданин 2021.11.30 16:44 #17757 MakarFX #:Estoy confundido por esta condición Con esa condición. parece que tienes razón. Sí: if((bSignalBuy() == true)&&(GetLotSize()>LotControl)) vOrderOpenSell(); else if(bSignalBuy() == true) vOrderOpenBuy(); no reacciona en absoluto a la condición (GetLotSize()>LotControl) Tretyakov Rostyslav 2021.11.30 16:53 #17758 законопослушный гражданин #:parece que tienes razón. Sí: no reacciona en absoluto a la condición (GetLotSize()>LotControl) GetLotSize() debe tomarse del último cerrado, entonces en // Если нет открытых ордеров, то входим в условие if(CountOrders()==0) { (GetLotSize()>LotControl) funcionará законопослушный гражданин 2021.11.30 16:55 #17759 MakarFX #:GetLotSize() debe tomarse de la última cerrada, entonces en (GetLotSize()>LotControl) funcionará Muchas gracias. Mihail Matkovskij 2021.11.30 17:28 #17760 законопослушный гражданин #:Sí. Eso es lo que necesito. PERO al hacer esto, necesita detener/excluir la entrada hacia adelante por esta condición: if (bSignalBuy()) { if (GetLotSize() > LotControl) vOrderOpenSell(); else vOrderOpenBuy(); } double GetLotSize() { double Ls=0; datetime last = 0, openTime; for (int pos=OrdersTotal()-1;pos>=0;pos--) { if (OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY || OrderType() == OP_SELL) { if ((openTime = OrderOpenTime()) > last) { last = openTime; Ls = OrderLots(); } } } } } return Ls; } 1...176917701771177217731774177517761777177817791780178117821783...1954 Nuevo comentario
Tiene la condición de abrir dos a la vez si no hay ninguna abierta.
¿Qué es eso?
Esta cosa cuenta el lote actual.
Este parámetro se establece en los ajustes: LotControl
respectivamente, cuando: GetLotSize()>LotControl - Necesito que abra vOrderOpenSell() en la señal bSignalBuy().
Sí, sé que ambas órdenes se abren por la condición. Lo escribí así al principio. Pero, ¿cómo hago para que vOrderOpenBuy() no se abra?
Si el robot ya ha entrado en el mercado en una dirección, no vuelve a entrar en la misma dirección. ¿Es así como funciona su algoritmo de entrada?
Si se cumple esta condición, se activa
Después de
Y también cuando hay una señal de venta.
Entonces, la razón para entrar en la dirección opuesta es porque la condición se dispara
Sí. Eso es lo que necesito. PERO tiene que detener/excluir una entrada de avance por esta condición:
¡Gracias, Makar, por meterte conmigo!
Aquí tienes una captura de pantalla.
Sí, has hecho un lío)
Ahora, en cada carpeta, una por una, renombre las carpetas Expertos a _Expertos e Indicadores a _Indicadores.
Renombrado en una carpeta - iniciar el terminal, si no ayudó - renombrar de nuevo y pasar a la siguiente carpeta.
P.D. La primera vez que el terminal arranque será un poco más largo de lo habitual.
esta cosa cuenta el tamaño actual del lote
este parámetro se establece en los ajustes: LotControl
respectivamente, cuando: GetLotSize()>LotControl - Necesito que vOrderOpenSell() ocurra al recibir la señal bSignalBuy().
Sí, sé que ambas órdenes se abren por la condición. Lo escribí así al principio. Pero, ¿cómo hago para que vOrderOpenBuy() no se abra?
Sí. Eso es lo que necesito. PERO es necesario detener/excluir la entrada de la delantera por esta condición:
Estoy confundido por esta condición
con esta condición
Gracias. Corregido. Lo pensaré.
Estoy confundido por esta condición
Con esa condición.
parece que tienes razón.
Sí:
no reacciona en absoluto a la condición (GetLotSize()>LotControl)
parece que tienes razón.
Sí:
no reacciona en absoluto a la condición (GetLotSize()>LotControl)
GetLotSize() debe tomarse del último cerrado, entonces en
(GetLotSize()>LotControl) funcionaráGetLotSize() debe tomarse de la última cerrada, entonces en
(GetLotSize()>LotControl) funcionaráMuchas gracias.
Sí. Eso es lo que necesito. PERO al hacer esto, necesita detener/excluir la entrada hacia adelante por esta condición: