Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 560

 
Artyom Trishkin:

Die Fragen sind seltsame Antworten, die durch den Gedankenstrom verkompliziert werden, der etwas auswölbt, das unmöglich im Brei des Gedankenstroms gehalten werden kann, bitte...

Und in welcher Sprache kommunizieren Sie?

 
Alexey Viktorov:

In welcher Sprache kommunizieren Sie?

In einer Sprache, die der Fragesteller versteht, denke ich :)
 

Guten Tag, könnten Sie mir bitte sagen, wo ich ein kostenloses SCRIPT für den Handel mit einem False-Break aus einem Level bekommen kann?

 
barmaley1:

Guten Tag, könnten Sie mir bitte sagen, wo ich ein kostenloses SCRIPT für den Handel mit einem False-Break aus einem Level bekommen kann?

Das Skript wird nicht helfen.

 

Hallo Leute, könntet ihr mich bitte beraten?

Jedes Mal, wenn ich einen Auftrag öffne, muss ich mir einige der Daten des geöffneten Auftrags merken, um ihn später bearbeiten zu können.

Ich glaube, ich muss das alles in einer Struktur speichern:

- Einstiegspreis

- ob die SL nach Breakeven verschoben wurde

- der Spitzenpreis für die Berechnung einer Umkehrung


In jedem Tick müssen Sie Berechnungen für jeden der offenen Aufträge durchführen

Bitte beraten Sie mich, wie ich es richtig mache.

 
Decromor:

Hallo Leute, könntet ihr mich bitte beraten?

Jedes Mal, wenn ich einen Auftrag öffne, muss ich mir einige der Daten des geöffneten Auftrags merken, um ihn später bearbeiten zu können.

Ich glaube, ich muss das alles in einer Struktur speichern:

- Einstiegspreis

- ob die SL nach Breakeven verschoben wurde

- der Spitzenpreis für die Berechnung einer Umkehrung


In jedem Tick müssen Sie Berechnungen für jeden der offenen Aufträge durchführen

Bitte beraten Sie mich, wie ich es richtig mache.

Im Grunde haben Sie es selbst beschrieben)

Im Code würde das folgendermaßen aussehen

   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 der Aufträge des Expert Advisors,

m_stBuySeries und m_stSellSeries - Strukturen, die Daten über alle gefundenen Aufträge des angegebenen Typs speichern. Man kann sie zum Beispiel folgendermaßen beschreiben:

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

Die Funktion SaveOrderInfo für solche Strukturen würde wie folgt aussehen:

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

leicht vom Thema abweichend.

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

hat die Datei erhalten.

Ich versuche, es in ein Symbol zu fassen.

das Ergebnis ist enttäuschend.

Danke.

 
Ihor Herasko:

Im Grunde haben Sie es selbst beschrieben))

Im Code würde es wie folgt aussehen:

m_nMagicNumber - ID der Aufträge des Expert Advisors,

m_stBuySeries und m_stSellSeries - Strukturen, die Daten über alle gefundenen Aufträge des angegebenen Typs speichern. Man kann sie zum Beispiel folgendermaßen beschreiben:

Die Funktion SaveOrderInfo für solche Strukturen würde wie folgt aussehen:

Vielen Dank für diese ausführliche Hilfe!

 

Guten Tag!

Leute, könnt ihr mir den Code sagen, wie man einen EA mit einem Konto verknüpft (für das letzte Update).

Ich danke Ihnen vielmals.

 
Aleksandr Lishchenko:

Guten Tag!

Leute, könnt ihr mir den Code sagen, wie man einen EA mit einem Konto verknüpft (für das letzte Update).

Ich danke Ihnen vielmals.

Einfach:

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