Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1377

 
Michail_David:

Eu mesmo não entendi, Alexey, onde ele desenterrou este par de moedas ))))

Acontece... Pensei numa coisa, escrevi sobre outra... A mesma coisa eu mesmo.........)))

 
Alexey Viktorov:

Qualquer um dos esquis é ruim... Não encontro nenhuma menção a este par nos postos de Michail_David ... Em todos os lugares diz USDJPY

Via errada )))) Eu ;) Eu entendi errado.

Mas na verdade - o par é um fio e nenhuma vírgula invertida deve ser colocada nele.

@Michail_David

for(int i = SymbolsTotal(in_market_watch) - 1; i >= 0; i--)
   {
      if(StringFind(SymbolName(i,in_market_watch),vlt) >= 0)

vlt - o par que você está procurando (ou um pouco dele :)))

 
Сергей Таболин:

Via errada )))) Eu ;) Eu entendi errado.

Mas em essência - um par é um fio e nenhuma vírgula invertida deve ser colocada nele.

@Michail_David

vlt - par procurado (ou parte dele :)))

Sergey, obrigado. Eu entendo a idéia.

 

Olá. Por favor, informe.

1. Uma EA comercializará uma série de pedidos (compra-venda-compra-venda-venda-...). A série terminará com o pedido que fechou com lucro. Como implementá-la?

2. O próximo problema. A primeira série ainda não foi concluída (não tivemos uma ordem de lucro), e a segunda já foi iniciada. Como "dividi-los" para o Expert Advisor?

Obrigado.

 
Forallf:

Olá. Por favor, informe.

1. Uma EA comercializará uma série de pedidos (compra-venda-compra-venda-venda-...). A série terminará com o pedido que fechou com lucro. Como implementá-la?

2. O próximo problema. A primeira série ainda não foi concluída (não tivemos uma ordem de lucro), e a segunda foi iniciada. Como "dividi-los" para o Expert Advisor?

Obrigado.

1 A condição é muito vaga para ajudar...

2 Usar diferentes "magiks".

 

Boa tarde a todos. Continuando a serrar a Grail MachineJ. Eu tenho que refazer o código com um viés para o uso de funções, porque estou farto de percorrer uma tonelada de código. Quero mover as funções para separar os arquivos. Criei a função de obter sinal por indicador no arquivo da EA para julgamento e funciona bem.

Meu robô até abre negócios. Mas se eu criar um arquivo de plugin SIGNALS_INDIKATOR. Eu o conecto em meu Expert Advisor desta forma.

//+------------------------------------------------------------------+
//|                                           TREND+_V_1.0 |
//|                                                    ДАНЯ ГАГАРКИН |
//|                                     https://vk.com/danila_mastep |
//+------------------------------------------------------------------+
#property copyright "ДАНЯ ГАГАРКИН"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
#property strict
//НАЧАЛО ВХОДНЫХ ПЕРЕМЕННЫХ И ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ------------------------------------------------------------------------------------------+
int intBars;// ПЕРЕМЕННАЯ ДЛЯ ОПЕРДЕЛЕНИЯ КОЛИЧЕСТВА БАРОВ, ЧТОБЫ ОПРЕДЕЛИТЬ ПОЯВЛЕНИЕ НОВОГО



#include <TREND+\SIGNALS_INDIKATOR.mqh> 
// А НИЖЕ ПОШЛИ ЕНУМЫ И ЭКСТЕРН ПЕРЕМЕННЫЕ




Também escrevo minha função para obter sinais através deste tipo de anexo, mas esta função não mostra minhas variáveis externas que eu passei facilmente para a própria EA. A função de obter o valor do indicador na minha EA é assim.

//НАЧАЛО ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+
double f_ao_sell()
{ double ao_sell = iCustom(Symbol(),PeriodForWork, //Таймфрейм на котором искать дивергенции

"1)SEARCH_DIVERGENCE",
Params, // Параметры транслирования сигналов
ModeSignalsCTS, // транслировать сигналы в cts?
LifetimeOfSignal, //Время жизни сигнала в баарх рабочего тф
CTS_Name, // имя для cts 
Div_Params, // параметры поиска дивергенции
PeriodForWork, // Таймфрейм на котором искать дивергенции

SearchAccuracy, // Режим поиска совпадений
NumBarAccuracy, // количество баров не точности поиска пиков
KoeffDistanceBetween,// коэффициент разницы между экстремумами
WidthChartLine, // толщина линий на графике цены

WidthIndicatorstLine,// толщина линий в окне индикаторов
ShiftArrow, // смещение значков
AO_Params,  // Параметры АО
UseAO,  // Искать дивергенции на АО
ColorUpperAO,  // цвет верхних линий дивергенций АО
ColorLowerAO, // цвет нижних линий дивергенций АО
Stoch_Params, // параметры стохастик
UseStoch, // искать дивергенции на стохастик
ModeLineSTO, // ИСКАТЬ ДИВЕРГЕНЦИИ ПО ЛИНИИ STOCHASTIC:
Period_K, // период %К стохастик
Period_D, // период %Д стохастик
Slowing, // замедление стохастик
AppledPriceSTO, // цены расчёта стохастик
MethodMAStoch, // метод МА стохастик
UpperLevelSTO, // верхний уровень стохастик
LowerLewelSTO, // нижний уровень стохастик
ColorUpperSTO, // цвет верхних линий дивергенций стохастик
ColorLowerSTO, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ STOCHASTIC

RSI_Params, // ПАРАМЕТРЫ RSI
UseRSI, // ИСКАТЬ ДИВЕРГЕНЦИИ НА  RSI?
PeriodRSI, // ПЕРИОД RSI
AppledPriceRSI, // ПРИМЕНИТЬ К
UpperLevelRSI, // ВЕРХНИЙ УРОВЕНЬ RSI
LowerLewelRSI, // НИЖНИЙ УРОВЕНЬ RSI
ColorUpperRSI, // ЦВЕТ ВЕРХНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ RSI
ColorLowerRSI, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ RSI
MACD_Params, // ПАРАМЕТРЫ MACD
UseMACD, //  ИСКАТЬ ДИВЕРГЕНЦИИ НА  MACD
ModeLineMACD, //  ИСКАТЬ ДИВЕРГЕНЦИИ ПО ЛИНИИ MACD:
FastEMA_MACD, // БЫСТРОЕ EMA MACD
SlowEMA_MACD, // МЕДЛЕННОЕ EMA MACD
PeriodSignalMACD, // ПЕРИОД СИГНАЛЬНОЙ SMA MACD
AppledPriceMACD, // ПРИМЕНИТЬ К:
ColorUpperMACD, // ЦВЕТ ВЕРХНИХ  ЛИНИЙ ДИВЕРГЕНЦИЙ MACD
ColorLowerMACD, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ MACD
Notifications_Params, // ПАРАМЕТРЫ ОПОВЕЩЕНИЙ 
UseAlerts, // ОПОВЕЩАТЬ В ТЕРМИНАЛЕ О СИГНАЛЕ 
UseMail, // ОПОВЕЩАТЬ НА E-MAIL О СИГНАЛЕ 
UsePush, // ОПОВЕЩАТЬ О СИГНАЛЕ НА МОБИЛЬНЫЙ 
2, //ВТОРОЙ БУФЕР- АО СЕЛЛ
0 // СИГНАЛ НА НУЛЕВОЙ СВЕЧЕ ИЗ-ЗА ОСОБЕННОСТЕЙ ИНДИКАТОРА
);

return(ao_sell);



}//КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+

Se esta função estiver no arquivo EA abaixo do tick e do temporizador, as variáveis que são declaradas como externs são claramente visíveis nesta função. Mas se eu copiar e colar completamente esta função em um arquivo de inclusão, as variáveis externas não são visíveis na função.

A questão é: o que devo fazer para que as variáveis externas sejam visíveis nas funções do arquivo include, assim como essas variáveis são visíveis nas funções EA, que escrevo abaixo do temporizador?

 
DanilaMactep:

Boa tarde a todos. Continuando a serrar a Grail MachineJ. Tenho que refazer o código com foco no uso de funções, porque estou cansado de percorrer uma tonelada de código. Quero mover as funções para separar os arquivos. Criei a função de obter sinal por indicador no arquivo da EA para julgamento e funciona bem.

Meu robô até abre negócios. Mas se eu criar um arquivo de plugin SIGNALS_INDIKATOR. Eu o conecto em meu Expert Advisor desta forma.


Também escrevo minha função para obter sinais através deste tipo de anexo, mas esta função não mostra minhas variáveis externas que eu passei facilmente para a própria EA. A função de obter o valor do indicador na minha EA é assim.

Se esta função estiver no arquivo EA abaixo do tick e do temporizador, as variáveis que são declaradas como externs são claramente visíveis nesta função. Mas se eu copiar e colar completamente esta função em um arquivo de inclusão, as variáveis externas não são visíveis na função.

A questão é: o que devo fazer para que as variáveis externas sejam visíveis nas funções do arquivo include, assim como essas variáveis são visíveis nas funções EA, que escrevo abaixo do temporizador?

variáveis externas - quais são elas?
 
MakarFX:
variáveis externas - quais são elas?

Vou inserir um pedaço de código com eles.


//+------------------------------------------------------------------+
//|                                           TREND+DIVERGENCE_V_1.0 |
//|                                                    ДАНЯ ГАГАРКИН |
//|                                     https://vk.com/danila_mastep |
//+------------------------------------------------------------------+
#property copyright "ДАНЯ ГАГАРКИН"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
#property strict
//НАЧАЛО ВХОДНЫХ ПЕРЕМЕННЫХ И ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ------------------------------------------------------------------------------------------+
int intBars;// ПЕРЕМЕННАЯ ДЛЯ ОПЕРДЕЛЕНИЯ КОЛИЧЕСТВА БАРОВ, ЧТОБЫ ОПРЕДЕЛИТЬ ПОЯВЛЕНИЕ НОВОГО



#include <TREND+DIVERGENCE\SIGNALS_INDIKATOR.mqh> 



enum enumCoincidence
  {
   enCoinAccurate=1,    // Точный
   enCoinApproximate=0, // Приближенный
  };
  enum enumYN
  {
   enYes=1, // Да
   enNo=0,  // Нет
  };
  
  enum enumSL //ПЕРЕЧИСЛЕНИЕ ДЛЯ СТОП ЛОССА
  {
   en_fiks=1, // ФИКСИРОВАННЫЙ В ПУНКТАХ
   en_po_atr=0,  // ПО АТР
  };
  // ПЕРЕЧИСЛЕНИЕ ДЛЯ ВКЛЮЧЕНИЯ ПЕРВОГО ЭКРАНА
  
   enum enum_screen1 //ПЕРЕЧИСЛЕНИЕ ДЛЯ ПЕРВОГО ЭКРАНА
  {
   en_on_screen1=1, //  1 ЭКРАН ON
   en_off_screen1=0,  //  1 ЭКРАН OFF
  };
  //ЕНУМ 2-ГО ЭКРАНА
  
   enum enum_screen2 //ПЕРЕЧИСЛЕНИЕ ДЛЯ ВТОРОГО ЭКРАНА
  {
   en_on_screen2=1,    //  2 ЭКРАН ON
   en_off_screen2=0,  // 2 ЭКРАН OFF
  };
  
    enum enum_use_filter //ПЕРЕЧИСЛЕНИЕ ДЛЯ ОТКРЫТИЯ ОТОЛЖАК С ФИЛЬТРОМ ИЛИ БЕЗ
  {
   en_bez_filtra=1,    // БЕЗ ЦЕНОВОГО ФИЛЬТРА
   en_c_filbtpom=0,  // С ЦЕНОВЫМ ФИЛЬТРОМ
  };
  
  //-- ПЕРЕЧИСЛЕНИЕ ДЛЯ ТИПА ОРДЕРОВ
  
  enum enum_tip_orderov
  {
   en_otlojki=1,    // ОТЛОЖЕННЫЕ
   en_rbIno4nbIe=0, // РЫНОЧНЫЕ
  };
  
  //--- ПЕЕРЧИСЛЕНИЕ ДЛЯ ВКЛЮЧЕНИЯ ТРАЛА
      enum enum_use_tral 
  {
   en_on_tral=1,    // С ТРАЛОМ
   en_off_tral=0,  // БЕЗ ТРАЛА
  };
  
  
  enum enumModeLINE
  {
   enMdMain=MODE_MAIN,  // Main
   enMdSign=MODE_SIGNAL,// Signal
  };
  enum enumSignalsMode
  {
   enBuy=0,             // Только Buy
   enSell=1,            // Только Sell
   enBoth=2,            // Buy и Sell
   
  };
  
  extern string  Params = "-- ПАРАМЕТРЫ ОТКРЫТИЯ СДЕЛКИ --";//======================================
  
  extern int slippages= 5; // ПРОСКАЛЬЗЫВАНИЕ
  extern int MaxRisk=1;//  % УБЫТКА ПРИ SL
  extern int razmer_fikc_sl= 500;// ФИКСИРОВАННЫЙ SL П/П?
  extern enum_screen1 flag_screen1= en_on_screen1; // ВКЛ-ВЫКЛ 1 ЭКРАН
  extern enum_screen2 flag_screen2= en_on_screen2; // ВКЛ-ВЫКЛ 2 ЭКРАН
  extern enum_tip_orderov kakie_ordera= en_rbIno4nbIe;// ОРДЕРА ОТКРЫТИЯ?

Destaquei as variáveis externas em amarelo. Essas variáveis são exibidas quando a EA é anexada ao gráfico na guia de parâmetros de entrada

 
DanilaMactep:

Vou inserir um pedaço de código com eles.


Destaquei as variáveis externas em amarelo. Essas variáveis são exibidas quando a EA é anexada ao gráfico na guia de parâmetros de entrada

Agora eles usam "input" ao invés de "externo".

Você também precisa mover suas "variáveis externas" para a biblioteca SIGNALS_INDIKATOR.mqh

 
DanilaMactep:

Vou inserir um pedaço de código com eles.

As variáveis globais no corpo da EA são visíveis apenas para a EA e não para os plugins,

mas as variáveis globais no corpo do plugin são visíveis em todos os lugares.

Razão: