Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1377

 
Michail_David:

Yo mismo no entendí, Alexey, donde desenterró este par de divisas )))

Suele pasar... Pensaba en una cosa, escribía en otra... Lo mismo yo.........))

 
Alexey Viktorov:

O los esquís están mal... No encuentro ninguna mención a este par en los posts de Michail_David ... En todos los sitios pone USDJPY

Vía equivocada )))) Yo ;) Me equivoqué.

Pero en realidad - el par es una cadena y no se deben poner comillas.

@Michail_David

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

vlt - la pareja que buscas (o un poco de ella :)))

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

Vía equivocada )))) Yo ;) Me equivoqué.

Pero en esencia - un par es una cadena y no se deben poner comillas en ella.

@Michail_David

vlt - par buscado (o parte de él :)))

Sergey, gracias. Entiendo la idea.

 

Hola. Por favor, avisa.

1. Un EA negociará una serie de órdenes (compra-venta-compra-venta-...). La serie terminará con la orden que cerró con ganancias. ¿Cómo aplicarlo?

2. El siguiente problema. La primera serie aún no se ha completado (no hemos tenido un pedido de beneficios), y la segunda ya está iniciada. ¿Cómo "dividirlos" para el Asesor Experto?

Gracias.

 
Forallf:

Hola. Por favor, avisa.

1. Un EA negociará una serie de órdenes (compra-venta-compra-venta-...). La serie terminará con la orden que cerró con ganancias. ¿Cómo aplicarlo?

2. El siguiente problema. La primera serie aún no se ha completado (no hemos tenido un pedido de beneficios), y la segunda ya está iniciada. ¿Cómo "dividirlos" para el Asesor Experto?

Gracias.

1 La condición es demasiado vaga para ayudar...

2 Utilizar diferentes "magias"

 

Buenas tardes a todos. Siguiendo con la sierra de la Máquina del GrialJ. Tengo que rehacer el código con un sesgo hacia el uso de funciones, porque estoy harto de desplazarme por una tonelada de código. Quiero mover las funciones a archivos de inclusión separados. He creado la función para obtener la señal por el indicador ao en el archivo de EA para la prueba y funciona bien.

Mi robot incluso abre operaciones. Pero si creo un archivo de plugin SIGNALS_INDIKATOR. Lo conecto en mi Asesor Experto así.

//+------------------------------------------------------------------+
//|                                           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> 
// А НИЖЕ ПОШЛИ ЕНУМЫ И ЭКСТЕРН ПЕРЕМЕННЫЕ




También escribo mi función para obtener señales por este tipo de adjunto, pero esta función no muestra mis variables externas que he pasado fácilmente al propio EA. La función de obtener el valor del indicador en el EA es así.

//НАЧАЛО ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+
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);



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

Si esta función se encuentra en el archivo EA debajo del tick y el timer, las variables que se declaran como externas son claramente visibles en esta función. Pero si copio y pego completamente esta función en un archivo de inclusión, las variables externas no son visibles en la función.

La pregunta es, ¿qué debo hacer para que las variables externas sean visibles en las funciones del archivo de inclusión, así como estas variables son visibles en las funciones del EA, que escribo debajo del temporizador?

 
DanilaMactep:

Buenas tardes a todos. Siguiendo con la sierra de la Máquina del GrialJ. Tengo que rehacer el código con un sesgo hacia el uso de funciones, porque estoy harto de desplazarme por una tonelada de código. Quiero mover las funciones a archivos de inclusión separados. He creado la función para obtener la señal por el indicador ao en el archivo de EA para la prueba y funciona bien.

Mi robot incluso abre operaciones. Pero si creo un archivo de plugin SIGNALS_INDIKATOR. Lo conecto en mi Asesor Experto así.


También escribo mi función para obtener señales por este tipo de adjunto, pero esta función no muestra mis variables externas que he pasado fácilmente al propio EA. La función de obtener el valor del indicador en mi EA es así.

Si esta función se encuentra en el archivo EA por debajo del tick y el timer, las variables que se declaran como externas son claramente visibles en esta función. Pero si copio y pego completamente esta función en un archivo de inclusión, las variables externas no son visibles en la función.

La pregunta es, ¿qué debo hacer para que las variables externas sean visibles en las funciones del archivo de inclusión, así como estas variables son visibles en las funciones del EA, que escribo debajo del temporizador?

variables externas - ¿qué son?
 
MakarFX:
variables externas: ¿qué son?

Insertaré un trozo de código con ellos-


//+------------------------------------------------------------------+
//|                                           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;// ОРДЕРА ОТКРЫТИЯ?

He resaltado en amarillo las variables externas. Estas variables se muestran cuando el EA se adjunta al gráfico en la pestaña de parámetros de entrada

 
DanilaMactep:

Insertaré un trozo de código con ellos-


He resaltado las variables externas en amarillo. Estas variables se muestran cuando el EA se adjunta al gráfico en la pestaña de parámetros de entrada

Ahora utilizan "input" en lugar de "extern".

También necesita mover sus "variables externas" a la biblioteca SIGNALS_INDIKATOR.mqh

 
DanilaMactep:

Insertaré un trozo de código con ellos-

Las variables globales en el cuerpo del EA sólo son visibles para el EA y no para los plugins,

pero las variables globales en el cuerpo del plugin son visibles en todas partes.