Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1197

 
Alexey Viktorov:

Per la visualizzazione nel tester? Sì. Crea un modello con tutti gli indicatori di cui hai bisogno e salvalo con il nome dell'EA o del tester e il test si aprirà con queste impostazioni.

Sui grafici del conto reale e demo.

 

Saluti!

Qualcuno sa come contattare Maxim Gutman?

Trader, sviluppatore di un sistema di trading automatico

 
odyn:

Sui grafici del conto reale e demo.

Ecco il MACD, per esempio

Tutti gli altri sono uguali.

 

Buon pomeriggio, per favore consigliatemi o lanciatemi un link per vedere

Ho bisogno di selezionare tra le posizioni aperte quelle che hanno una durata superiore a un certo periodo.

Come posso confrontare correttamente l'ora di apertura di una posizione con l'ora corrente?

Ho gettato questa funzione, cosa fare dopo non posso pensare (poca esperienza), come confrontare il tempo?

//+------------------------------------------------------------------+
bool Selected_Positions_Time_Life(datetime time_life, int &array_base[][observations])
{
int n = 0;
int size = ArrayRange(array_base,0);

for(int i=0; i<size; i++)
{
   int index  = Arr_Position[i][0];
   int ticket = m_position.SelectByIndex(index);
   datetime tl = m_position.Time();
   datetime tc = TimeCurrent();
 //Вот тут наверное нужно сравнить tl и tc 
 //и если разница превышает time_life, то это наша позиция
}

return(n>0);
}
//+------------------------------------------------------------------+
 
Sergey Voytsekhovsky:

Buon pomeriggio, per favore consigliatemi o lanciatemi un link per vedere

Ho bisogno di selezionare tra le posizioni aperte quelle che hanno una durata superiore a un certo periodo.

Come posso confrontare correttamente l'ora di apertura di una posizione con l'ora corrente?

Ho creato questa funzione, ma non ho idea di cosa fare dopo (mancanza di esperienza), come posso confrontare i tempi?

Nel ciclo, seleziona una posizione e ottieni il suo biglietto.

ulong posTicket = PositionGetTicket(i);

Poi, ottieni il tempo di apertura della posizione

PositionGetInteger(POSITION_TIME)
e confrontare con il tempo di riferimento ±.
 
Alexey Viktorov:

Selezionare una posizione nel ciclo e ottenere un biglietto per essa

Poi ottenere il tempo di apertura della posizione

E confrontare con il tempo di riferimento ±.

Solo questa procedura di confronto gettare su per favore, con la posizione del biglietto, il tempo di apertura e il tempo del server, penso che ho capito, non posso confrontare. Ho dato un'occhiata al commento, ho solo le date.

 
Sergey Voytsekhovsky:

Questa è esattamente la procedura di confronto per favore, con il biglietto di posizione, l'ora di apertura e l'ora del server penso di aver capito, non posso confrontare. Ho guardato attraverso il commento, ho solo le date.

Così si confrontano le date. Ma bisogna considerare la discrepanza. È meglio confrontare la differenza tra il tempo di apertura e il tempo di riferimento con una deviazione ammissibile.

fabs(время_позиции - эталонное_время) < допустимого_отклонения // например 600 секунд
 
Alexey Viktorov:

Quindi confronta le date. Ma bisogna considerare la discrepanza. È meglio confrontare la differenza tra il tempo di apertura e il tempo di riferimento con una deviazione di tolleranza.

Alexey Viktorov:

Quindi confronta le date. Ma bisogna considerare la discrepanza. È meglio confrontare la differenza tra il tempo di apertura e il tempo di riferimento con la tolleranza.

Ricevuto, grazie, lo proverò non appena sarò al mio computer (sono sul cellulare al momento).

 

Buon pomeriggio.

Voglio ordinare le linee verticali per tempo sul grafico. Ho scritto una piccola sceneggiatura. Ma il risultato non è quello che voglio.

Per favore consigliatemi cosa sto facendo di sbagliato.

void OnStart()
{
int      vlines            = 0;
string   vlines_name[];
string   vlines_name_sort[];
datetime tm[];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   if(vlines < 20 * 2)
   {
      Print("вертикальных линий меньше необходимиого. (",vlines," < ",20 * 2,")");
      return;
   }
   ArrayResize(vlines_name,vlines);
   ArrayResize(vlines_name_sort,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      vlines_name[i] = ObjectName(ChartID(),i,0,OBJ_VLINE);
   }
   ArrayPrint(vlines_name);
   
   for(int i = 0, n = 0; i < 9000; i++)
   {
      ArrayFree(tm);
      CopyTime(Symbol(),Period(),i,1,tm);
      
      for(int a = 0; a < vlines - 1; a++)
      {
         datetime tml = (datetime)ObjectGetInteger(ChartID(),vlines_name[a],OBJPROP_TIME);
         if(tml == tm[0])
         {
            vlines_name_sort[n++] = vlines_name[a];
            break;
         }
      }
   }
   ArrayPrint(vlines_name_sort);
}

Il risultato:

(GBPUSD,H6)     [ 0] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"  "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
(GBPUSD,H6)     [10] "H6 Vertical Line 28756" "H6 Vertical Line 29445" "H6 Vertical Line 30340" "H6 Vertical Line 31840" "H6 Vertical Line 32885"
(GBPUSD,H6)     [15] "H6 Vertical Line 33779" "H6 Vertical Line 34048" "H6 Vertical Line 38532" "H6 Vertical Line 38756" "H6 Vertical Line 39075"
(GBPUSD,H6)     [20] "H6 Vertical Line 39458" "H6 Vertical Line 39649" "H6 Vertical Line 40385" "H6 Vertical Line 41116" "H6 Vertical Line 4150" 
(GBPUSD,H6)     [25] "H6 Vertical Line 41900" "H6 Vertical Line 42820" "H6 Vertical Line 43071" "H6 Vertical Line 46245" "H6 Vertical Line 48196"
(GBPUSD,H6)     [30] "H6 Vertical Line 50258" "H6 Vertical Line 50374" "H6 Vertical Line 55171" "H6 Vertical Line 56003" "H6 Vertical Line 56400"
(GBPUSD,H6)     [35] "H6 Vertical Line 57565" "H6 Vertical Line 59075" "H6 Vertical Line 59881" "H6 Vertical Line 59969" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 63540" "H6 Vertical Line 63904" "H6 Vertical Line 64359" "H6 Vertical Line 64420" "H6 Vertical Line 65200"
(GBPUSD,H6)     [45] "H6 Vertical Line 6695"  "H6 Vertical Line 7743"  "H6 Vertical Line 8707"  "H6 Vertical Line 9491"  "H6 Vertical Line 9662" 

(GBPUSD,H6)     [ 0] "H6 Vertical Line 46245" "H6 Vertical Line 39075" "H6 Vertical Line 40385" "H6 Vertical Line 55171" "H6 Vertical Line 31840"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 63904" "H6 Vertical Line 6695"  "H6 Vertical Line 59075" "H6 Vertical Line 28358" "H6 Vertical Line 10884"
(GBPUSD,H6)     [10] "H6 Vertical Line 38532" "H6 Vertical Line 29445" "H6 Vertical Line 23365" "H6 Vertical Line 64420" "H6 Vertical Line 7743" 
(GBPUSD,H6)     [15] "H6 Vertical Line 30340" "H6 Vertical Line 39649" "H6 Vertical Line 38756" "H6 Vertical Line 34048" "H6 Vertical Line 42820"
(GBPUSD,H6)     [20] "H6 Vertical Line 64359" "H6 Vertical Line 50374" "H6 Vertical Line 14306" "H6 Vertical Line 48196" "H6 Vertical Line 57565"
(GBPUSD,H6)     [25] "H6 Vertical Line 20277" "H6 Vertical Line 41116" "H6 Vertical Line 12743" "H6 Vertical Line 50258" "H6 Vertical Line 41900"
(GBPUSD,H6)     [30] "H6 Vertical Line 17907" "H6 Vertical Line 4150"  "H6 Vertical Line 59881" "H6 Vertical Line 56400" "H6 Vertical Line 10771"
(GBPUSD,H6)     [35] "H6 Vertical Line 63540" "H6 Vertical Line 65200" "H6 Vertical Line 9491"  "H6 Vertical Line 16501" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 32885" "H6 Vertical Line 1371"  "H6 Vertical Line 33779" null                     null                    
(GBPUSD,H6)     [45] null                     null                     null                     null                     null                    
 
Сергей Таболин:

Buon pomeriggio.

Voglio ordinare le linee verticali per tempo sul grafico. Ho scritto una piccola sceneggiatura. Ma il risultato non è quello che voglio.

Per favore consigliatemi cosa sto facendo di sbagliato.

Il risultato:

Logicamente, bisogna prima raccogliere tutte le linee in un array, io farei subito una struttura bidimensionale, bene, o array, nella prima dimensione aggiungere un tempo di creazione, nella seconda - il nome della linea.

Nel ciclo per una corsa, riempire la matrice, fuori dal ciclo dopo il riempimento la matrice è ordinata per la prima dimensione, cioè il tempo.

Il risultato viene stampato nel secondo ciclo.

Come risultato, abbiamo 2 cicli e l'ordinamento tra di loro.

Questo è tutto, se ho capito bene il problema :)