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

 
Artyom Trishkin:

Las preguntas son respuestas extrañas complicadas por la corriente de pensamiento que abulta algo imposible de mantener en la papilla de la corriente de pensamiento por favor...

¿Y en qué idioma se comunica?

 
Alexey Viktorov:

¿En qué idioma se comunica?

En un idioma que el que pregunta entiende, creo :)
 

Buenas tardes, ¿podríais decirme dónde puedo conseguir un SCRIPT gratuito para operar una falsa ruptura de un nivel?

 
barmaley1:

Buenas tardes, ¿podríais decirme dónde puedo conseguir un SCRIPT gratuito para operar una falsa ruptura de un nivel?

El guión no ayudará.

 

Hola chicos, ¿podríais aconsejarme?

Cada vez que abro una orden, necesito recordar algunos de los datos de la orden abierta para trabajar con ella más adelante.

Creo que tengo que guardarlo todo en una estructura:

- precio de entrada

- si la SL se ha desplazado al punto de equilibrio

- el precio máximo para calcular una inversión


En cada tick hay que realizar cálculos para cada una de las órdenes abiertas

Por favor, aconséjeme cómo hacerlo correctamente.

 
Decromor:

Hola chicos, ¿podrían aconsejarme por favor?

Cada vez que abro una orden, necesito recordar algunos de los datos de la orden abierta para trabajar con ella más adelante.

Creo que tengo que guardarlo todo en una estructura:

- precio de entrada

- si la SL se ha movido al punto de equilibrio

- el precio máximo para calcular una inversión


En cada tick hay que realizar cálculos para cada una de las órdenes abiertas

Por favor, aconséjeme cómo hacerlo correctamente.

Básicamente, usted mismo lo ha descrito)

En el código, quedaría como sigue

   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS))          
         continue;
         
      if (OrderSymbol() != Symbol())
         continue;  
      
      if (m_nMagicNumber != OrderMagicNumber()) 
         continue;

      if (OrderType() == OP_BUY)
         if (!SaveOrderInfo(m_stBuySeries))
            return false;

      if (OrderType() == OP_SELL)
         if (!SaveOrderInfo(m_stSellSeries))
            return false;
   }

m_nMagicNumber - ID de las órdenes del Asesor Experto,

m_stBuySeries y m_stSellSeries - estructuras que almacenan datos sobre todas las órdenes del tipo especificado encontradas. Por ejemplo, se pueden describir de la siguiente manera:

struct SeriesInfo
{
   int            nLastOrderTicket;                                                                // Тикет последнего открытого ордера
   int            nOrdersCnt;

   double         fSeriesTotalProfit;
   double         fVolumeSumm;
   double         fMinOrdersPrice;
   double         fMaxOrdersPrice;
   datetime       dtLastOrderTime;                                                                 // Время открытия последнего ордера
   OrderInfo      starrOrderInfo[];   
   
   bool           Init()
   {  
      nOrdersCnt = 0;
      nLastOrderTicket = 0;
      fSeriesTotalProfit = 0.0;
      fVolumeSumm = 0.0;
      fMinOrdersPrice = DBL_MAX;
      fMaxOrdersPrice = 0.0;
      dtLastOrderTime = 0;
      return ArrayResize(starrOrderInfo, 0, 100) == 0;
   }
};

La función SaveOrderInfo para estas estructuras sería la siguiente:

bool SaveOrderInfo(SeriesInfo &stSeriesInfo)
{
   // Проверка возможности добавления ордера в серию
   int nTotal = ArraySize(stSeriesInfo.starrOrderInfo);
   if (ArrayResize(stSeriesInfo.starrOrderInfo, nTotal + 1, 100) < 0)
   {
      Alert(MQLInfoString(MQL_PROGRAM_NAME), (TerminalInfoString(TERMINAL_LANGUAGE) == "Russian")? ": нехватка памяти для записи данных об очередном ордере. Эксперт отключен." : 
                                                                                                   ": unable to allocate the memory for next order. Expert is turned off.");
      return false;
   }
   
   // Запись ордера
   stSeriesInfo.starrOrderInfo[nTotal].nType = OrderType();
   stSeriesInfo.starrOrderInfo[nTotal].nTicket = OrderTicket();
   stSeriesInfo.starrOrderInfo[nTotal].fVolume = OrderLots();
   stSeriesInfo.starrOrderInfo[nTotal].fTP = OrderTakeProfit();
   stSeriesInfo.starrOrderInfo[nTotal].fSL = OrderStopLoss();
   stSeriesInfo.starrOrderInfo[nTotal].fOpenPrice = OrderOpenPrice();
   stSeriesInfo.starrOrderInfo[nTotal].fProfit = OrderProfit() + OrderSwap() + OrderCommission();
   stSeriesInfo.starrOrderInfo[nTotal].dtOpenTime = OrderOpenTime();
   
   stSeriesInfo.fSeriesTotalProfit += stSeriesInfo.starrOrderInfo[nTotal].fProfit;
   stSeriesInfo.fVolumeSumm += stSeriesInfo.starrOrderInfo[nTotal].fVolume;
   stSeriesInfo.fMinOrdersPrice = MathMin(stSeriesInfo.fMinOrdersPrice, OrderOpenPrice());
   stSeriesInfo.fMaxOrdersPrice = MathMax(stSeriesInfo.fMaxOrdersPrice, OrderOpenPrice());
   
   if (OrderOpenTime() > stSeriesInfo.dtLastOrderTime)
   {
      stSeriesInfo.dtLastOrderTime = OrderOpenTime();
      stSeriesInfo.nLastOrderTicket = OrderTicket();
   }
   
   return true;
}
 

un poco fuera del tema.

https://www.finam.ru/profile/tovary/aluminum/export/?market=24

Tengo el archivo.

Estoy tratando de ponerlo en un símbolo.

el resultado es decepcionante.

Gracias.

 
Ihor Herasko:

Básicamente, tú mismo lo has descrito))

En el código, quedaría como sigue:

m_nMagicNumber - ID de las órdenes del Asesor Experto,

m_stBuySeries y m_stSellSeries - estructuras que almacenan datos sobre todas las órdenes del tipo especificado encontradas. Por ejemplo, se pueden describir de la siguiente manera:

La función SaveOrderInfo para estas estructuras sería la siguiente:

Muchas gracias por una ayuda tan detallada.

 

¡Buenas tardes!

Chicos, podéis decirme el código de cómo vincular un EA a una cuenta (para la última actualización).

Muchas gracias.

 
Aleksandr Lishchenko:

¡Buenas tardes!

Chicos, podéis decirme el código de cómo vincular un EA a una cuenta (para la última actualización).

Muchas gracias.

Simple:

if (AccountInfoInteger(ACCOUNT_LOGIN) != <номер счета>)
   return;
Razón de la queja: