Creo que tu diagnóstico está muerto. Supongo que escribir datos en archivos .CSV separados no es mejor que tener archivos DLL separados. Otra idea sería tener un valor de parámetro booleano que actúe como un semáforo y si está configurado como ocupado, otro EA está bloqueado. Una vez que el primer EA haya finalizado, se reiniciará y el otro podría acceder a la DLL. MT4 no es realmente bueno en el manejo de eventos, pero supongo que podría haber alguna manera de implementar esto también. Todo depende de la frecuencia con la que se llame el código DLL (como para cada nueva barra o nuevo tick o una vez por activación) y la probabilidad de acceso múltiple.