[¡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 459

 
kara100 >>:

Здравствуйте, все! Подскажите, плз, как вытащить из индикатора +МР, сами значения уровней для использования в советнике?

Puedes intentar usar ObjectGet(). Observe la línea DrawVLine(onp + "hz", hz, Red, 1, STYLE_DOT, false);

 
Necron писал(а) >>

Puedes intentar usar ObjectGet(). Observe la línea DrawVLine(onp + "hz", hz, Red, 1, STYLE_DOT, false);

Gracias

 
Andrew_Filinsky >>:

Здравствуйте. Я начинающий трейдер, придумал торговую стратегию, написал советника, при его работе на демосчёте возникла следующая проблема:

Советник иногда зависает во время выполнения операции OrderSend(). Выглядит это так: в вечером запустил советник, утром обнаруживаю, что советник завис в 3 часа ночи. В логе присутствует сообщение "Выполнение команды началось ...", сообщения "... Выполнение команды закончилось" нет. Терминал MT4 работает, получение котировок происходит, котировки отображаются на графике инструмента, на котором работает советник, советник висит. Ситуация возникает неоднократно, после перезапуска терминала ошибка может повториться через несколько часов.

Вопросы:

В чём причина зависания советника? Как устранить зависание?

Вот фрагмент соответствующего кода:

Дополнительная информация: использую GPRS-модем, включён круглосуточно, обрывов связи с потерей коннекта в течение работы советника не наблюдается, программ для анализа сетевого трафика специально не устанавливал, работает только стандартный брандмауэр WinXP.

Поискал по форуму, подходящего описания такой проблемы, её причин и способов их устранения не нашёл.

( Такое ощущение, что проблема возникла на ровном месте. Вообще не представляю, как такие фундаментальные вещи могут не работать )

Intente ejecutar un script en bucle paralelo al EA que se actualice si hay un error con una frecuencia de 3000 deslizamientos (3 segundos).

Creo que el problema se puede resolver con una petición regular (independientemente de los ticks).

Se actualiza si hay una garrapata, pero si hay una garrapata ¿por qué se actualiza?

por lo que sólo un script en bucle puede ayudar.

int start()
{//+----------------------------------------------+
 while(!IsStopped())
   {if(!IsConnected())RefreshRates();
    Sleep(3000);
   }
return(0);
}//+----------------------------------------------+

Lo he escrito directamente en Mozilla sin comprobar si funciona).

 
Rover82 >>:

вот.

Compruebe, mi indicador no se muestra (hay un .csv requerido allí). La configuración de las etiquetas debe ser verdadera

Archivos adjuntos:
optlev_1.mq4  15 kb
 
Necron >>:

Проверьте, у меня не отображается индикатор (там .csv нужен какой-то). В настройках labels должно быть true

Necron, muchas gracias, funciona... Sí, sé que el propio indicador requiere datos externos....

 
¡¡¡Por favor, ayúdenme a cerrar una posición!!! Tengo 3 órdenes de COMPRA, sale una señal para cerrar una posición de COMPRA y la última orden que abrí está cerrada, pero necesito cerrar la primera (la más temprana) ¡Muchas gracias!
 

En MT4 hay dos ventanas abiertas horizontalmente (en diferentes marcos temporales) para cada par de divisas.

- ¿Hay alguna forma de enlazarlos? - Cuando pulso uno, el segundo sube junto con el primero.

(He oído que hay programas que permiten enlazar ventanas, pero no sé si funcionan con MT)

 
splxgf писал(а) >>

Es mejor cambiar a ADSL u otro tipo de conexión. No veo cómo se puede trabajar en gprs en absoluto.

El asesor a veces se cuelga durante OrderSend() ...

... Uso el módem GPRS, está encendido las 24 horas del día, no hay interrupciones de conexión con pérdida de conectividad durante el trabajo de EA, no he instalado ningún software para analizar el tráfico de la red, sólo el firewall estándar de WinXP.

[De hecho, 10MB de tráfico al día y 0,8 (¡sic!) kilobits por segundo, que es 50 veces menos que el ancho de banda de la clase 10 de gprs, es suficiente para trabajar en línea en seis de los principales pares de divisas. Es importante que no haya conexiones perdidas y que haya poco retraso en la recepción de un paquete hacia y desde el corredor. Desde el teléfono a través de GPRS el ancho de banda era suficiente, pero había interrupciones. Ahora a través del módem fijo GPRS/EDGE mi conexión es buena durante 24 horas sin interrupciones, el ancho de banda para el terminal MT4 es aún mejor. [Fin de la digresión lírica]

Encontré y arreglé el origen del problema experimentalmente. El origen era simplemente el cortafuegos de WinXP, que parecía haber interferido en la transferencia de datos desde el terminal MT al servidor DC y lo había distorsionado. Y lo que es interesante, las posiciones se abrieron, cerraron y modificaron manualmente, pero el script del Asesor Experto - puf. El problema de los cuelgues se solucionó tras añadir MetaTrader a la lista de excepciones del firewall de WinXP.

Gracias a todos, gracias por la posible ayuda.

 
Советник иногда зависает во время выполнения операции OrderSend().

Urain escribió :>>

Intente ejecutar un script en bucle paralelo al EA que refresca en caso de no compromiso con una frecuencia de 3000 deslizamientos (3 seg). Creo que el problema se puede resolver con una petición regular (independientemente de los ticks).

Gracias, ya he encontrado la causa del problema, y la solución. De hecho, la conexión no se ha ido a ninguna parte, se ha mantenido estable sin interrupciones durante varios días. El problema resultó ser causado por la actividad del firewall de WinXP, y se soluciona añadiendo MetaEditor a su lista de excepciones.

 
Buenas noches a todos. ¿Puede alguien decirme cómo cerrar una orden y seleccionar la primera orden y cerrarla?
while(true)                                  // Цикл закрытия орд.
     {
      if ( Tip==0 && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ", Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         
         Ans=OrderClose( Ticket, Lot,Bid,2);      // Закрытие Buy
         if ( Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ", Ticket);
            break;                              // Выход из цикла закр
           }
         if ( Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

¡¡¡POR FAVOR, AYUDA!!!