Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1288

 
Lo que es _Digits lo entiendo.
Pero, ¿cómo puedo obtener este valor para otro par de divisas?
¿Puede decírmelo, por favor?
 
User_mt5:
Lo que es _Digits lo entiendo.
¿Cómo conseguirlo para otro par de divisas?
Por favor, ayúdame.

DÍGITOS_SÍMBOLO

Número de dígitos después del punto decimal

int

 
Hola!!! ¿Puedes decirme cómo registrar la estructura completada

MqlTradeRequest mrequest ???

Tal vez hay una función en MQL5? Quiero entender por qué me sale este mensaje 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerta: Solicitud para colocar la orden de venta falló - código de error:4756


//--- собираем все вместе
   if(Sell_Condition_1 && Sell_Condition_2)
     {
      if(Sell_Condition_3 && Sell_Condition_4)
        {
         // есть ли в данный момент открытая позиция на продажу?
         if(Sell_opened)
           {
            Alert("Уже есть позиция на продажу!!!");
            return;    // не добавлять к открытой позиции на продажу
           }
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // последняя цена Bid
         mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
         mrequest.symbol = _Symbol;                                            // символ
         mrequest.volume = Lot;                                                // количество лотов для торговли
         mrequest.magic = EA_Magic;                                            // Magic Number
         mrequest.type= ORDER_TYPE_SELL;                                       // ордер на продажу
         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
         mrequest.deviation=100;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
           {
            Alert("Ордер Sell успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Sell не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
     }
   return;
  }

 
Kira27:
Hola!!! ¿Puedes decirme cómo registrar la estructura completada

MqlTradeRequest mrequest ???

Tal vez hay una función en MQL5? Quiero entender por qué me sale este mensaje 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerta: Solicitud para colocar la orden de venta falló - código de error:4756


https://www.mql5.com/ru/forum/327894

Y aquí está la transcripción: aquí
Ошибка 4756
Ошибка 4756
  • 2019.12.06
  • www.mql5.com
Всем добрый день. Помогите пожалуйста разобраться. При добавлении эксперта в маркет, во время тестирования выходит это - -- NEW_ORDER(): lot=0...
 
¿Puede decirme
cómo eliminar mediante programación el cuadro de diálogo de alerta de la ventana?
 
Por favor, dígame cómo interpretar esta línea en el código -- CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[]; Entiendo que CParabolicStop y CNRTRStop son clases, * punteros, matrices SARTrailing[] y NRTRTrailing[] Pero ¿qué significan estas cadenas? El artículo de este asesor https://www.mql5.com/es/articles/134 dice que esto es --- ¿Cómo entiendo esto? ¿Y dónde se crean exactamente estas matrices? ¿Puedo realmente cargar clases en matrices, u objetos de clases? ¿Y para qué sirve en términos prácticos?
//+------------------------------------------------------------------+
//|                                          Sample_TrailingStop.mq5 |
//|                                        MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Sample_TrailingStop.mqh> // подключение класса трейлинга

//--- input parameters
input double   SARStep     =  0.02;    // Шаг Parabolic
input double   SARMaximum  =  0.02;    // Максимум Parabolic
input int      NRTRPeriod  =  40;      // Период NRTR
input double   NRTRK       =  2;       // Коэффициент NRTR

string Symbols[]={"EURUSD","GBPUSD","USDCHF","USDJPY"};

CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ArrayResize(SARTrailing,ArraySize(Symbols));  // изменение размера в соответствии с количеством используемых символов
   ArrayResize(NRTRTrailing,ArraySize(Symbols)); // изменение размера в соответствии с количеством используемых символов   
   for(int i=0;i<ArraySize(Symbols);i++)
     { // для всех символов
      SARTrailing[i]=new CParabolicStop(); // создание экземпляра класса CParabolicStop
      SARTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,5,15+i*17,Silver,Blue); // инициализация экземпляра класса CParabolicStop 
      if(!SARTrailing[i].SetParameters(SARStep,SARMaximum))
        { // установка параметров экземпляра класса CParabolicStop 
         Alert("trailing error");
         return(-1);
        }
      SARTrailing[i].StartTimer(); // запуск таймера
      //----
      NRTRTrailing[i]=new CNRTRStop(); // создание экземпляра класса CNRTRStop
      NRTRTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,127,15+i*17,Silver,Blue); // инициализация экземпляра класса CNRTRStop 
      if(!NRTRTrailing[i].SetParameters(NRTRPeriod,NRTRK))
        { // установка параметров экземпляра класса CNRTRcStop 
         Alert("trailing error");
         return(-1);
        }
      NRTRTrailing[i].StartTimer(); // запуск таймера         
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].Deinit();
      NRTRTrailing[i].Deinit();
      delete(SARTrailing[i]);
      delete(NRTRTrailing[i]);
     }

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].DoStoploss();
      NRTRTrailing[i].DoStoploss();
     }

  }
//+------------------------------------------------------------------+

void OnTimer()
  {
   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].Refresh();
      NRTRTrailing[i].Refresh();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam
                  )
  {

   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].EventHandle(id,lparam,dparam,sparam);
      NRTRTrailing[i].EventHandle(id,lparam,dparam,sparam);
     }
  }
//+------------------------------------------------------------------+

Y si no es difícil, por favor especifique dónde está escrito sobre este asterisco como un puntero * en la documentación. Lo he visto una vez, pero ya he mirado en un libro de texto y no lo encuentro((((

Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Основное правило трейдера - дай прибыли расти, обрезай убытки! В статье рассматривается один из основных технических приемов, позволяющий следовать этому правилу - перемещение уровня защитной остановки (уровня Stoploss) вслед за растущей прибылью позиции, другими словами - скользящий стоп или трейлинг стоп (trailingstop). Приводится пошаговая процедура создания класса для трейлинг стопа на индикаторах SAR и NRTR, который каждый желающий сможет за 5 минут встроить в своего эксперта или использовать независимо для управления позициями на своем счете.
 

Hola, ¿es posible y cómo crear un algoritmo de apertura y cierre de una operación sin utilizar ningún indicador?

Por ejemplo, tome dos líneas, una línea de tendencia es alcista y la segunda también es bajista, póngalas una encima de la otra, hay un punto de intersección entre las dos líneas, supongamos que está en el 15-30 en el tiempo, entonces ¿cómo hacer que la orden se abra automáticamente al mismo tiempo para empezar en cualquier dirección, cómo hacer que el algoritmo encuentre estos puntos y abra una posición? Me gustaría que me lo aclararan y que me dieran su opinión.

¿Podemos crear un EA basado en dicho T3?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Hola!!! Una pregunta como esta? Necesito recoger en matrices, los indicadores maneja en diferentes marcos de tiempo, pero resulta que
Fractal=iFractals(Symbol(),tik);

no se puede hacer de esa manera( Extraño, ¿por qué los números primos se puede utilizar en este parámetro, pero no una variable con una constante numérica?
void OnTick()
  {
   for(int tik =1; tik <= 6; tik++)
     {
      Fractal=iFractals(Symbol(),tik);   // Вот эта tik переменная вызывает ошибку при компиляции

      switch(tik)
        {
         case 1:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalUP_W1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalDown_W1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_W1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_W1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 2:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUP_D1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalDown_D1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_D1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_D1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 3:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalUP_H4);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalDown_H4); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_H4,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_H4,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 4:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalUP_H1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalDown_H1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_H1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_H1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 5:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalUP_30);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalDown_30); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_30,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_30,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 6:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalUP_15);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalDown_15); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_15,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_15,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;

        }
     }
 
Kira27:
Hola!!! Tengo una pregunta. Necesito recoger los manejadores de indicadores en diferentes marcos de tiempo en arrays, pero resulta que
no puede hacer eso( Es extraño, ¿por qué puedo usar números primos en este parámetro, pero no una variable con una constante numérica?

Porque tiene que haber un marco temporal

handle=iFractals(Symbol(),tf);

Identificador

Descripción

PERIODO_CURRENTE

Período actual

PERIODISTA_M1

1 minuto

PERIODISTA_M2

2 minutos

PERIOD_M3

3 minutos

PERIOD_M4

4 minutos

PERIODISTA_M5

5 minutos

PERIOD_M6

6 minutos

PERIODISTA_M10

10 minutos

PERIODISTA_M12

12 minutos

PERIODISTA_M15

15 minutos

PERIODISTA_M20

20 minutos

PERIODISTA_M30

30 minutos

PERIOD_H1

1 hora

PERIOD_H2

2 horas

PERIOD_H3

3 horas

PERIOD_H4

4 horas

PERIOD_H6

6 horas

PERIOD_H8

8 horas

PERIOD_H12

12 horas

PERIOD_D1

1 día

PERIODO_W1

1 semana

PERIOD_MN1

1 mes

 
Kira27:
Necesito recopilar las manillas de los indicadores en diferentes marcos temporales en matrices, pero resulta que
no puede hacerse así( Me pregunto por qué se pueden usar números primos en este parámetro, pero no variables con constantes numéricas
?

¡¡¡La manija del indicador en MQL5 DEBE CREARSE UNA VEZ!!! ¡¡Y debe hacerse en OnInit()!!