[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 234

 
sergeev:

Lo probé. No se congeló.


dio el error 129 en OrderClose.

Poner RefreshRates delante.

Cerrado sin error


Sí, yo hice lo mismo, pero a veces deja de funcionar (y no el terminal en sí, sino el EA)

 
doon:
¿Puedes explicar por qué este código a veces se congela en un lugar y tienes que reiniciar el terminal para reanudarlo?


Se le ha preguntado directamente: ¿En qué línea se congela?

Su código abre y cierra inmediatamente la misma orden y está muy bien documentado, por lo que debería ser inmediatamente visible en las Alertas a qué línea ha llegado el código. ¿O es sólo una parte del código?

 
Roger:


Se le ha preguntado directamente: ¿En qué línea se congela?

Su código abre e inmediatamente cierra la misma orden y está muy bien documentado, por lo que debería poder ver inmediatamente en la Alerta a qué línea ha llegado el código. ¿O es sólo una parte del código?


No, todo esto es un código. Y se detiene en las líneas de apertura y cierre de pedidos (pero no siempre).

 
Sustituya la oferta y la demanda en el código por MarketInfo(Symbol(),MODE_ASK) y MarketInfo(Symbol(),MODE_BID), debería funcionar
 

De esto:

OrderSend(Symbol (), OP_BUY, 1, Ask, 10,0,0, "dsgdsf", 0, 0, CLR_NONE);

En esto:

OrderSend(Symbol (), OP_BUY, 1, MarketInfo(Symbol(),MODE_ASK), 10,0,0, "dsgdsf", 0, 0, CLR_NONE);
?
 

No, todavía se cuelga.

Después de 4 minutos de espera, resultó ser el error 128(El tiempo de espera de la transacción ha expirado).

¿Tal vez esto ayude?

 

Estimados colegas, todavía soy un completo "tonto"en la programación MQL, empecé a estudiar este tema hace muy poco. Pero ya he empezado a escribir mi primer EA, o al menos lo he intentado.

En la página 182 de este tema he expuesto los criterios de negociación que debe seguir este AE. Por favor, vea lo que dice (último puesto de la página). Llevo tres semanas luchando y todavía no puedo escribir aquí la parte del código responsable de los criterios de negociación. He leídoel capítulo del tutorial dedicado a este tema, pero no me ayudó en este caso concreto.

He escrito docenas de variantes de esta parte del código durante mis batallas de programación, pero ninguna de ellas funciona correctamente. Obviamente no tengo suficientes conocimientos, no puedo dominarMQL tan rápidamente .De todos modos, aquí está una de las variantes de código que funciona, al menos aproximadamente, como yo quiero.

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM >= 80 && StochS >= 80 && High[1] >= EnvUp && SAR < Open[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM <= 20 && StochS <= 20 && Low[1] <= EnvDn && SAR > Open[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}


Sé que el código está todo torcido e inclinado, y en general las posiciones de la bahía y la venta están mezcladas. Pero esta es la única variante del código, cuando el Estocástico y la Envolvente operan juntos, sin ignorarse mutuamente. Al mismo tiempo, las señales parabólicas no se tienen en cuenta en el comercio por alguna razón. De todas formas, por favor, no me regañes mucho por semejante "pataleta", soy muy consciente de que el código no es correcto.

Por favor, ayúdenme a arreglar el código de mi Asesor Experto. Me está costando mucho trabajo. He implementado estrategias más fáciles (Mooving + Momentum; Mooving +RSI), pero esta funciona. Por favor, ayuda. Por favor, reescriba todas las líneas erróneas para hacer que mi EA opere según esas reglas, que he descritoen la página 182. Realmente lo necesito.

P.S.: No puedo escribir todo el código, porque he utilizado plantillas MQL ya hechas .

 
doon:

No, todavía se cuelga.

Después de 4 minutos de espera, resultó ser el error 128(El tiempo de espera de la transacción ha expirado).

¿Tal vez esto ayude?


Maldita sea, cambia el centro de negociación ya - está claro sin ningún tipo de pistas que si las órdenes de comercio en el mismo código a continuación, pasar normalmente y luego se cuelga, significa que el servidor está muriendo. El pedido salió y no volvió hasta pasados 4 minutos. ¿Realmente vas a realizar operaciones reales en este servidor? Cruce su corazón y cambie varias veces de casa de corretaje. ¿Alguien te ha enseñado a usar un ordenador? No es una máquina de escribir ni una videoconsola: requiere conocimientos. Se trata de un estudio y un trabajo minucioso. Si tuvieras un conocimiento básico de la línea de comandos, de cómo abrir archivos y, al menos, un conocimiento básico de cómo funciona una red informática, harías diferentes preguntas y estarías encantado de recibir ayuda. Todo lo que necesita ahora es hacer un ping al servidor de su empresa de corretaje y comparar el tiempo de respuesta con el tiempo de respuesta del servidor de otras empresas de corretaje. Si dedicaras unos 30 minutos entenderías qué es qué. Si hubiera tratado de esbozar la interacción del Asesor Experto y el servidor, podríamos incluso estimar con MQL4 la rapidez con la que el servidor de su empresa de corretaje ejecuta las órdenes de comercio.

No hay palabras. ¿Cómo puedes tratar con tanta negligencia el proceso de tu propio trabajo?

 

daytrader19:

Por favor, reescriba las líneas erróneas para que el EA opere según las reglas que describíen la página 182.

Nota.

1) La condición "línea1[1]>línea2[1]" no es suficiente para la señal "cruce de dos líneas". Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) La parabólica no debe compararse con la Apertura, sino con el Alto y el Bajo, y ten en cuenta que la calculas en la barra cero y tomas la Apertura[1] de la primera barra.

 
doon:

No, todavía se cuelga.

Después de 4 minutos de espera, resultó ser el error 128(El tiempo de espera de la transacción ha expirado).

¿Tal vez esto ayude?


También puede ocurrir con un internet malo, por ejemplo, al descargar demasiado un torrent. Pero no podrá comprobarlo hasta el lunes.