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

 
Artyom Trishkin:

As perguntas são respostas estranhas, difíceis pela corrente de pensamento que salta para fora algo impossível de manter no papo da corrente de pensamento, por favor...

E em que língua você está se comunicando?

 
Alexey Viktorov:

Em que língua você está se comunicando?

Em uma linguagem que o questionador entende, eu penso :)
 

Boa tarde, poderia me dizer onde posso obter um SCRIPT grátis para negociar uma quebra falsa de um nível?

 
barmaley1:

Boa tarde, poderia me dizer onde posso obter um SCRIPT grátis para negociar uma quebra falsa de um nível?

O roteiro não vai ajudar.

 

Olá pessoal, vocês poderiam me aconselhar, por favor?

Toda vez que abro uma ordem, preciso lembrar alguns dos dados da ordem aberta para trabalhar com ela mais tarde.

Acho que preciso salvar tudo isso em uma estrutura:

- preço de entrada

- se o SL foi movido para o Breakeven

- o preço máximo para o cálculo de uma inversão


Em cada tick você precisa realizar cálculos para cada uma das ordens abertas

Por favor, informe como fazê-lo corretamente.

 
Decromor:

Olá pessoal, vocês poderiam me aconselhar, por favor?

Toda vez que abro uma ordem, preciso lembrar alguns dos dados da ordem aberta para trabalhar com ela mais tarde.

Acho que preciso salvar tudo isso em uma estrutura:

- preço de entrada

- se o SL foi movido para o Breakeven

- o preço máximo para o cálculo de uma inversão


Em cada tick você precisa realizar cálculos para cada uma das ordens abertas

Por favor, informe como fazê-lo corretamente.

Basicamente, você mesmo o descreveu)

No código, ele teria a seguinte aparência

   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 - identificação das ordens do Expert Advisor,

m_stBuySeries e m_stSellSeries - estruturas que armazenam dados sobre todos os pedidos do tipo especificado encontrados. Por exemplo, você pode descrevê-los da seguinte maneira:

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;
   }
};

A função SaveOrderInfo para tais estruturas seria a seguinte:

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;
}
 

um pouco fora de tópico.

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

recebeu o arquivo.

Estou tentando colocá-lo em um símbolo.

o resultado é decepcionante.

Obrigado.

 
Ihor Herasko:

Basicamente, você mesmo o descreveu))

No código, ele teria a seguinte aparência

m_nMagicNumber - identificação das ordens do Consultor Especialista,

m_stBuySeries e m_stSellSeries - estruturas que armazenam dados sobre todos os pedidos do tipo especificado encontrados. Por exemplo, você pode descrevê-los da seguinte maneira:

A função SaveOrderInfo para tais estruturas seria a seguinte:

Muito obrigado por uma ajuda tão detalhada!

 

Boa tarde!

Pessoal, podem me dizer o código sobre como vincular uma EA a uma conta (para a última atualização).

Muito obrigado.

 
Aleksandr Lishchenko:

Boa tarde!

Pessoal, podem me dizer o código sobre como vincular uma EA a uma conta (para a última atualização).

Muito obrigado.

Simples:

if (AccountInfoInteger(ACCOUNT_LOGIN) != <номер счета>)
   return;
Razão: