Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 560

 
Artyom Trishkin:

Le domande sono strane risposte difficili dal flusso di pensiero che rigonfia qualcosa di impossibile da tenere nella poltiglia del flusso di pensiero per favore...

E in che lingua state comunicando?

 
Alexey Viktorov:

Che lingua è quella in cui state comunicando?

In una lingua che l'interrogante capisce, credo :)
 

Buon pomeriggio, potreste dirmi dove posso trovare uno SCRIPT gratuito per il trading di una falsa rottura di un livello?

 
barmaley1:

Buon pomeriggio, potreste dirmi dove posso trovare uno SCRIPT gratuito per il trading di una falsa rottura di un livello?

Lo script non aiuterà.

 

Ciao ragazzi, potreste consigliarmi?

Ogni volta che apro un ordine, ho bisogno di ricordare alcuni dei dati dell'ordine aperto per lavorarci in seguito.

Credo di dover salvare tutto in una struttura:

- prezzo d'ingresso

- se lo SL è stato spostato a Breakeven

- il prezzo di picco per calcolare un'inversione


In ogni tick è necessario eseguire i calcoli per ciascuno degli ordini aperti

Per favore, consigliatemi come farlo correttamente.

 
Decromor:

Ciao ragazzi, potreste consigliarmi per favore?

Ogni volta che apro un ordine, ho bisogno di ricordare alcuni dei dati dell'ordine aperto per lavorarci in seguito.

Credo di dover salvare tutto in una struttura:

- prezzo d'ingresso

- se lo SL è stato spostato a Breakeven

- il prezzo di picco per calcolare un'inversione


In ogni tick è necessario eseguire i calcoli per ciascuno degli ordini aperti

Per favore, consigliatemi come farlo correttamente.

Fondamentalmente, l'hai descritto tu stesso)

Nel codice, sarebbe come segue

   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 degli ordini dell'Expert Advisor,

m_stBuySeries e m_stSellSeries - strutture che memorizzano dati su tutti gli ordini del tipo specificato trovati. Per esempio, potete descriverli nel modo seguente:

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 funzione SaveOrderInfo per tali strutture sarebbe la seguente:

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

leggermente fuori tema.

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

ha ottenuto il file.

Sto cercando di metterlo in un simbolo.

il risultato è deludente.

Grazie.

 
Ihor Herasko:

Fondamentalmente, l'hai descritto tu stesso))

Nel codice, sarebbe come segue:

m_nMagicNumber - ID degli ordini dell'Expert Advisor,

m_stBuySeries e m_stSellSeries - strutture che memorizzano dati su tutti gli ordini del tipo specificato trovati. Per esempio, potete descriverli nel modo seguente:

La funzione SaveOrderInfo per tali strutture sarebbe la seguente:

Grazie mille per un aiuto così dettagliato!

 

Buon pomeriggio!

Ragazzi, potete dirmi il codice su come collegare un EA ad un account (per l'ultimo aggiornamento).

Grazie mille.

 
Aleksandr Lishchenko:

Buon pomeriggio!

Ragazzi, potete dirmi il codice su come collegare un EA ad un account (per l'ultimo aggiornamento).

Grazie mille.

Semplice:

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