[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 246

 
BBSL:

Eddy ha detto che non voleva offendere nessuno

Ho detto che non me ne frega niente :D Mi comporterò bene anche se offende qualcuno perché è un loro problema. ma è a loro beneficio, così possono risolvere il problema e trovare la causa ed eventualmente sradicarlo, altrimenti ci saranno sempre problemi.
 
Ais:

Una ragione per fare tutto in un solo file -> https://docs.mql4.com/ru/basis/variables/formal:

"È possibile passare parametri per riferimento. In questo caso, la modifica di tali parametri influenzerà le variabili corrispondenti nella funzione chiamata passata per riferimento. Non si possono passare elementi di array per riferimento. Iparametri per riferimento possono essere passati solo all'interno di un singolo modulo, questo non è possibile per le funzioni di libreria. "


Sì, forse è questo il problema...

Ho molte funzioni in cui uno dei parametri è un array passato per riferimento...

Cioè dovete abbandonare la struttura del programma multi-file per evitare problemi, non può essere risolto diversamente?

 
Bicus:

Signori, ecco una domanda.

Sto eseguendo l'EA nel tester. L'EA ha accesso alla storia, cioè sta cercando uno degli ultimi, diciamo, 20 ordini chiusi.

Questo è molto facile in un EA reale: possiamo specificare il periodo di storia durante il quale gli ordini devono essere mostrati. Così, gli ultimi ordini sono sempre "sopra". Ma, più compravendite abbiamo nel tester, più ordini vengono chiusi e più grande è la loro lista che deve essere esaminata e più lentamente l'Expert Advisor inizia a lavorare.

Comunque, come avete risolto questo problema?

I computer moderni eseguono centinaia di milioni di operazioni al secondo.

Quante transazioni devono essere effettuate perché il computer cominci a rallentare?

Nel tuo caso "difficile", puoi specificare la condizione secondo la quale la ricerca dell'ordine sarà eseguita solo per l'ultimo mese/semimese.

 
eddy:
in realtà ho detto che non me ne frega un cazzo :D mi comporterò correttamente anche se offende qualcuno perché è un loro problema. ma è a loro vantaggio, quindi vogliono risolvere il problema e iniziare a cercare le cause ed eventualmente sradicarle, altrimenti ci saranno sempre problemi.


eddy, il concetto di diritto è molto soggettivo))

Se un gruppo di persone pensa che qualcosa sia generalmente accettato e giusto, allora questa è la regola per quel gruppo di persone. C'è un tale gruppo su questo forum.

Va benissimo che tu abbia la tua visione del mondo, ma passare il tempo a discuterne e ancora di più a cambiare o rieducare le persone è un lusso molto grande))

Discutere sulla correttezza delle idee è uno spreco di risorse e i nostri problemi non vengono risolti.

Propongo, con tutto il rispetto per voi e comprendendo le vostre idee, di tornare alla programmazione)))

 
tmt0086:
Ciao =) Ho appena scritto un EA... non ci sono condizioni, solo l'apertura su GBPUSD e EURUSD. Così, durante i test, non chiude gli ordini GBPUSD quando si trova su EURUSD. E viceversa. Puoi impostarlo? Quindi, aprirà gli ordini... Non posso farlo sulla demo, ma non posso testarlo.

Qualcuno mi dica...
 
Sergey_Rogozin:

Nel tuo caso "difficile", puoi introdurre una condizione che gli ordini saranno riprodotti solo nell'ultimo mese/semestre.

Quali condizioni?

È impossibile ordinare la storia nel tester. L'ultimo ordine raggiunge il fondo. Bisogna scorrere tutta la storia per arrivarci.

Mi sbaglio?

 
tmt0086:

Qualcuno mi dica...

Non c'è un tester di strategie multi-valuta in MT4.
 
BBSL:


eddy, la nozione di diritto è molto soggettiva))

Ci sono regole oggettive e quindi la correttezza. c'è anche l'importanza delle regole e la gerarchia delle regole. se una regola è meno importante di un'altra o gerarchicamente inferiore allora dovrebbe essere ignorata se una regola lo richiede. ho studiato regole e correttezza per tutta la mia vita
 
Roman.:

Non c'è un tester di strategie multi-valuta in MT4.

Puoi dirmi dove posso provarlo? Funzionerà su MT5?
 
Bicus:

Quali sono le condizioni?

È impossibile ordinare la storia nel tester. L'ultimo ordine cade in fondo. Devi scorrere TUTTA la storia per arrivarci.

Mi sbaglio?


No. Ecco un esempio di selezione dell'ordine chiuso più recente dalla cronologia degli ordini per lavorarci ulteriormente...

//---Поиск последнего отработавшего ордера для открытия очередной позиции ---
   
   for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
      {
         Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
         continue;
      }
   
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }
      
        
   //-------------------------Принимаем в расчет только ордер, закрытый недавно-----------------------
if(time<OrderCloseTime())     //(сравниваем его с хранящимся в пероеменной time) 
  {
    time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную
         
         
     
         int lastType = OrderType();
         double lastLots = OrderLots();
         double lastProfit = OrderProfit() + OrderSwap();
.....
.....
.....
Motivazione: