Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 279

 
¿Pueden decirme un consejo? Tengo un indicador bastante complicado, por ejemplo, ¿puedo utilizar una variable global del indicador para enviar una señal al Asesor Experto para realizar una operación? ¿O debo desmontar el indicador hasta el hueso e insertarlo en el código del Asesor Experto?
 
Puedes hacerlo, a los hombres no les importa).
 
oDin48:
¿Pueden decirme un consejo? Tengo un indicador bastante complicado, por ejemplo, ¿puedo utilizar una variable global del indicador para enviar una señal al Asesor Experto para realizar una operación? ¿O debo desmontar el indicador por huesos y pegarlo en el código del Asesor Experto?
Y los chicos pueden aconsejar el uso de iCustom() para recibir los datos de los buffers de los indicadores (si dibuja a través de ellos).
 
Barbarian:
Hice una pregunta concreta, no la salida :) conozco la salida de mi situación, me interesa - es lo mismo para mí solo o no. Si soy el único, entonces busca el problema en el navegador, si no soy el único, entonces no necesito buscar un problema - todo funciona como antes.

El navegador no tiene nada que ver. El navegador sólo afecta al aspecto del recurso. La forma de buscar es irrelevante para el navegador.
 
Barbarian:
¿Soy el único que ha dejado de buscar mql4.com o todos? Por ejemplo, escribo en una función de búsqueda desde Documentación, pero la respuesta es que no se encontró nada, aunque antes funcionaba.


Sí, la búsqueda no funciona, la gente ha preguntado. Lo hice de nuevo. No hay resultados. El navegador no tiene nada que ver. Es sólo algo que se ha eliminado.
 
Zhunko:

Intenta llamar a la función desde la que no está cargada. Se cargará enseguida.

El mecanismo se describe aquí.


Con respecto a este tema, sólo dice que cuando se ejecuta un programa mq4, se utiliza el late binding para importar funciones. Se explica que hasta que no se llame a la función adecuada desde la biblioteca correspondiente, ésta no se cargará . Aquí todo está claro.

Pero, de nuevo, ¿por qué iba a llamar a una función al principio del EA? ¿Qué sentido tiene? Nunca he llamado a ninguna función de las bibliotecas, pero 2 bibliotecas de alguna manera milagrosa se cargan.

Aquí está el principio del búho:

#property copyright "hoz"
#property link      ""

#include <hoz_Base@Include.mqh>
#include <hoz_Base@ListOfFunc.mqh>
#include <hoz_MakeListOfInstruments@Include.mqh>
#include <hoz_MakeListOfInstruments@ListOfFunc.mqh>

Cada biblioteca que tengo:

1. el Includnik, que tiene una lista de variables utilizadas

2. el Includnik, donde se enumeran las funciones importadas.

3. La propia biblioteca con las funciones.

Permítanme explicar cómo lo tengo con un ejemplo, las bibliotecas para trabajar con instrumentos negociados.

1. Includnik con variables declaradas:

//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                                 hoz_MakeListOfInstruments@Include.mqh |
//|                                                                                                                                   hoz |
//|                                                                                                                                       |
//+---------------------------------------------------------------------------------------------------------------------------------------+

#property copyright "hoz"
#property link      ""

//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                       ЗАГОЛОВОЧНЫЙ ФАЙЛ ДЛЯ БИБЛИОТЕКИ hoz_MakeListOfInstruments@library.                             |
//+---------------------------------------------------------------------------------------------------------------------------------------+

// =====================================================  Внешние параметры библиотеки  ==================================================+
extern string Make_List_Of_Symbols = " ______ Make List Of Symbols ______ ";
extern string i_ListOfWorkingSymbol = "";           // Список рабочих инструментов
extern string i_BASECurrencyList = "USD,EUR,JPY,CHF,GBP,CAD,AUD";
extern string i_BADCurrencyList = "NZD";
extern int    i_MAXSpread = 50;                     // MAX spread
//+=======================================================================================================================================+
//                                                          ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ                                                         |
//+=======================================================================================================================================+
string bs_LibName = "hoz_MakeListOfInstruments@Library";
int    bi_CntOfSMB;                  // Количество рабочих инструментов
string bsa_WorkingSMB[];             // Массив рабочих инструментов

2. La propia biblioteca:

//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                                 hoz_MakeListOfInstruments@Library.mq4 |
//|                                                                                                                                   hoz |
//|                                                                                                                                       |
//+---------------------------------------------------------------------------------------------------------------------------------------+

#property copyright "hoz"
#property link      ""
#property library

//+=======================================================================================================================================+
//|                                           БИБЛИОТЕКА СОЗДАНИЯ СПИСКА ТОРГУЕМЫХ ИНСТРУМЕНТОВ                                           |
//+=======================================================================================================================================+
// ================================================== Включения и импорт внешних модулей =================================================+
#include <hoz_Base@Include.mqh>
#include <hoz_MakeListOfInstruments@Include.mqh>
#import "hoz_Base@Library@ex4"
    string fCreat_StrFromArray (string fsa_Array[], string fs_Delimiter = ",");
    int fGet_StrArrayFromLine (string fs_List, string& fsa_OUT[], string fs_Delimiter = ",");
    void fInitializeArray_STR (string& fsa_Array[], string fs_Value = "");
#import
//+---
#import "hoz_LoggingToAnyWere@library.ex4"
    void fPrint (string fs_Text);
#import
//+---
#import "hoz_HandlingWithErrorS@library.ex4"
    string fErrorToString (int fi_Error);
#import
//+=======================================================================================================================================+
//===================================================   Перечень функций библиотеки   ====================================================|
//+=======================================================================================================================================+
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| 0.0 Инициализация модуля.                                                                                                             |
//+---  Функции модуля. ------------------------------------------------------------------------------------------------------------------+
//| 1.1 Создаём список рабочих инструментов и заносим их в массив.                                                                        |
//| 1.2 Функция возвращает список доступных символов.                                                                                     |
//| 1.3 Проверяем на котируемость у ДЦ введённых символов.                                                                                      |
//| 1.4 Проверка переданных в функцию внешних параметров.                                                                                 |
//+---------------------------------------------------------------------------------------------------------------------------------------+

//+=======================================================================================================================================+
//|                                                      ИНИЦИАЛИЗАЦИЯ МОДУЛЯ.                                                            |
//+=======================================================================================================================================+
void fInitListOfInstrumentsMaking()
{
    //---- Создаём список рабочих инструментов и заносим их в массив
    bi_CntOfSMB = fCreat_WorkingSymbolsArray (bsa_WorkingSMB, i_ListOfWorkingSymbol, i_BASECurrencyList, i_BADCurrencyList, i_MAXSpread);
    //---- Заново создаём список рабочих инструментов
    bs_SymbolList = fCreat_StrFromArray (bsa_WorkingSMB, ",");
    Print (bi_CntOfSMB, " : ", bs_SymbolList);
    //---- Производим проверку передаваемых в библиотеку значений
    if (!fCheck_ExternParameters())
    {
        Alert ("Проверьте параметры библиотеки hoz_MakeListOfInstruments !!!");
        return;
    }
    //---- Контролируем возможные ошибки
         fPrint (StringConcatenate ("fCheck_ExternParameters => ", fErrorToString (bi_Err)));
//----
}
/*
           ДРУГИЕ ФУНКЦИИ...
*/
// 1.4 Проверка переданных в функцию внешних параметров. ==================================================================================
bool fCheck_ExternParameters()
{
    bi_Err = -1;
//----
    if (i_MAXSpread < 0)
    {
        Print ("Поставьте MAX_Spread >= 0 !!!");
        return (false);
    }
    //---- Контролируем возможные ошибки
         fPrint (StringConcatenate ("fCheck_ExternParameters => ", fErrorToString (bi_Err)));
//----
     return (true);
}

3. La lista de funciones a importar:

//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                              hoz_MakeListOfInstruments@ListOfFunc.mqh |
//|                                                                                                                                   hoz |
//|                                                                                                                                       |
//+---------------------------------------------------------------------------------------------------------------------------------------+

#property copyright "hoz"
#property link      ""

//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Список функций библиотеки hoz_MakeListOfInstruments@Library.ex4                                                                       |
//+---------------------------------------------------------------------------------------------------------------------------------------+
#import "hoz_MakeListOfInstruments@Library.ex4"
    void fInitListOfInstrumentsMaking();
    int  fCreat_WorkingSymbolsArray (string& fsa_SMB[], string fs_ListOfWorkingSymbol, string fs_BaseCurrency, string fs_BadCurrency, int fi_MAXspread = 0, string fs_Delimiter = ",");
    int  fListOfSymbols (string& fs_Symbols[], bool fb_Looking);
    int  fCheck_PresenceSMBInMarket (string& fsa_WorkingSMB[]);
    bool fCheck_ExternParameters();
#import

Resulta que al importar bibliotecas

#include <hoz_MakeListOfInstruments@ListOfFunc.mqh>

Hay que cargar las funciones y llamar a la propia biblioteca, ¿no?

Lo he estructurado bien, ¿no?

 
Zhunko:

¡Claro que sí! ¿Pensé en ponerlo todo ahí fuera? Como si tratara de impresionarte :-)

Entonces, ¿por qué castrar? Todo funcionará. Incluso la clase para controlar MT4. Simplemente no habrá clases.

La biblioteca (DLL) es una envoltura para los métodos de la clase. No es necesario para utilizar la clase.

====================

Fantasías de nuevo... La posición de un niño maltratado. No me has dado un juguete. Ahora yo soy el malo. Ya te he dicho que no me impongo. Para mí es más fácil no dar que dar. Es más cómodo. Menos responsabilidad. Tómalo como lo que es.

Con más razón:

¿Por qué este diálogo nuestro?


Oh, estoy tan excitada. Y te encendiste después de declarar abiertamente que no necesito estas fuentes. No los necesito, no veo ningún valor en ellos, son una cuestión de gran orgullo para ti, Vadimi, y eso es todo. Te lo vuelvo a recordar: es curioso que te aferres a ellos... y llevarlos en alto sobre tu cabeza como un estandarte.
 
Zhunko:

¿Por qué este diálogo nuestro?


Qué pregunta tan interesante. ¿Y crees que necesito tus fuentes?

 
Zhunko:

No me ofende nadie. No pasa nada.

Dima sigue sacándome a la luz... :-))

Repetidas veces - Estoy de acuerdo con todas sus fantasías sobre mí. Pero no se detendrá.

Todo el mundo tiene derecho a todas las fantasías.


Esto es lo más chocante: Vadim Junko acusará a otros de fantasías. En realidad es digno de los anales, pero no todo el mundo está en el tema y no todo el mundo entenderá la broma. No sólo digno de los anales, digno de ser cincelado en granito.

 
Buenas noches, ¿es posible utilizar más de un Medgie en un EA?
Razón de la queja: