Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 279

 
Vocês podem me dar uma dica? Eu tenho um indicador bastante complicado, por exemplo, posso usar uma variável global do indicador para enviar um sinal ao consultor especializado para fazer um acordo? Ou devo desmontar o indicador até o osso e inseri-lo no código do Expert Advisor?
 
Você pode fazer isso, os homens não se importam).
 
oDin48:
Vocês podem me dar uma dica? Eu tenho um indicador bastante complicado, por exemplo, posso usar uma variável global do indicador para enviar um sinal ao consultor especializado para fazer um acordo? Ou devo desmontar o indicador por ossos e colá-lo no código do Expert Advisor?
E os caras podem aconselhar o uso do iCustom() para receber dados de buffers indicadores (se ele os atravessa).
 
Barbarian:
Eu fiz uma pergunta específica, não a saída :) Eu conheço a saída da minha situação, estou interessado - é o mesmo para mim sozinho ou não. Se eu sou o único, então procure o problema no navegador, se eu não sou o único, então eu não preciso procurar um problema - tudo funciona como antes.

O navegador não tem nada a ver com isso. O navegador só afeta o aspecto do recurso. A maneira como ele procura é irrelevante para o navegador.
 
Barbarian:
Eu sou o único que parou de procurar o mql4.com ou todos? Por exemplo, eu digito uma função de busca na Documentação, mas a resposta é que nada foi encontrado, embora tenha funcionado antes.


Sim, a busca não está funcionando, as pessoas têm perguntado. Eu o fiz novamente. Não há resultados. O navegador não tem nada a ver com isso. É apenas algo que foi eliminado.
 
Zhunko:

Tente chamar a função a partir daquela que não está carregada. Ele será carregado imediatamente.

O mecanismo é descrito aqui.


Com relação a este tópico, diz apenas que ao executar um programa mq4, a encadernação tardia é usada para importar funções. Explica-se que até que a função apropriada seja chamada da biblioteca apropriada, esta biblioteca não será carregada . Tudo está claro aqui.

Mas, mais uma vez, por que eu chamaria uma função no início da EA? Qual é o objetivo? Nunca chamei nenhuma função de bibliotecas, mas duas bibliotecas de alguma forma se carregam milagrosamente.

Aqui está o início da coruja:

#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 eu tenho:

1. O Includnik, que tem uma lista de variáveis utilizadas

2. O Includnik, onde as funções importadas são listadas.

3. A própria biblioteca com as funções.

Deixe-me explicar como o tenho com um exemplo, bibliotecas para trabalhar com instrumentos negociados.

1. Includente com variáveis 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. A própria 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. A lista de funções a serem importadas:

//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                              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

Acontece que ao importar bibliotecas:

#include <hoz_MakeListOfInstruments@ListOfFunc.mqh>

As funções devem ser carregadas e a própria biblioteca deve ser chamada, certo?

Eu o estruturei bem, não é mesmo?

 
Zhunko:

Claro que você está! Pensou que eu colocaria tudo isso lá fora? Como se eu estivesse apenas tentando impressioná-lo :-)

Então, por que castrar? Tudo vai funcionar. Até mesmo a classe para controlar o MT4. Simplesmente não haverá aulas.

A biblioteca (DLL) é um invólucro para métodos de classe. Você não precisa dele para usar a classe.

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

Fantasias novamente... A posição de uma criança maltratada. Você não me deu um brinquedo. Agora eu sou o mau da fita. Já lhe disse, não estou forçando. É mais fácil para mim não dar do que dar. É mais confortável. Menos responsabilidade. Tome-a pelo que ela é.

Mais uma razão:

Por que este nosso diálogo?


Oh, estou tão excitado. E você ficou excitado depois de declarar abertamente que eu não preciso dessas fontes. Não preciso deles, não vejo nenhum valor neles, eles são uma questão de grande orgulho para você, Vadimi, e isso é tudo. Lembro novamente - é engraçado como você se apega a eles... e carregando-os bem acima de sua cabeça como uma bandeira.
 
Zhunko:

Por que este nosso diálogo?


Que pergunta interessante. E você acha que eu preciso de suas fontes?

 
Zhunko:

Não me sinto ofendido por ninguém. Está tudo bem.

Dima continua me trazendo à tona... :-))

Repetidamente declarado - concordo com todas as suas fantasias a meu respeito. Mas ele não vai parar.

Todos têm direito a toda fantasia.


Isto é a coisa mais chocante - Vadim Junko acusará outros de fantasias. Na verdade é digno dos anais, mas nem todos estão no assunto e nem todos vão entender a piada. Ela não é apenas digna dos anais, ela é digna de ser esculpida em granito.

 
Boa noite, é possível usar mais de um Medgie em um EA?