Caratteristiche utili da KimIV - pagina 108

 
Francamente, sono molto contento di vedere un uomo leggendario con le sue caratteristiche di nuovo nel forum attivo, anche se personalmente non ne capisco molto a causa della mia ignoranza delle basi della programmazione in questo linguaggio. Ma il fatto stesso è sorprendente, accolgo KimIV con tutto il mio essere!
 
 

Ciao, sto cercando una funzione, ne hai una pronta?

Ho bisogno di un file da creare alla fine del test, che conterrebbe i dati sul drawdown di ogni ordine. Preferibilmente, questo file non verrebbe creato durante il test, ma alla fine dell'elaborazione una tantum della storia delle transazioni...

 
Non ho una tale funzione, ma nel prossimo futuro ho intenzione di pubblicare una funzione che calcola il massimo drawdown in pip delle posizioni attualmente aperte. Questa funzione analizza l'ordine di passaggio delle barre. Il timeframe è uno dei parametri. Più piccolo è il timeframe, più accurato è il calcolo del drawdown massimo. Penso che sarete in grado di fare ciò di cui avete bisogno sulla base di questa funzione.
 
KimIV:
Non ho una tale funzione, ma ho intenzione di pubblicare la funzione che calcola il drawdown massimo dei punti delle posizioni aperte attuali nel prossimo futuro. Questa funzione analizza il passaggio degli ordini per barre. Il timeframe è uno dei parametri. Più piccolo è il timeframe, più accurato è il calcolo del drawdown massimo. Penso che sarete in grado di fare ciò di cui avete bisogno sulla base di questa funzione.

Se c'è anche la scrittura su un file nella funzione, sarebbe fantastico...

Ma non vedo alcun bisogno particolare di calcolare il drawdown per le posizioni correnti. Penso che questa funzione sia più utile per un tester (analisi del lavoro del sistema) ....

 
renoshnik:

Se la funzione ha anche un record nel file - sarebbe fantastico...

Ma non vedo alcuna particolare necessità di calcolare il drawdown per le posizioni correnti. Penso che questa funzione sia più utile per un tester (analisi del sistema) ....

Non c'è differenza tra "calcolare il drawdown di ogni ordine in tempo reale e inviare tutti i dati a un file" e "calcolare il drawdown di ogni ordine e inviare i dati a un file alla fine del test". A parte il fatto che la prima variante è abbastanza facile da essere estremamente precisa, e la seconda variante solo se si ricorda la cronologia dei tick per ogni ordine.
 
renoshnik:

Ciao, sto cercando una funzione, ne hai una pronta?

Ho bisogno di un file da creare alla fine del test, che conterrebbe i dati sul drawdown di ogni ordine. Preferibilmente, questo file non verrebbe creato durante il test, ma alla fine dell'elaborazione una tantum della storia delle transazioni...

Yuri, ho appena strappato il codice da un vecchio Expert Advisor...
L'ho controllato e sembra funzionare correttamente.
Aggiungete il codice di deinit() ai vostri gufi e copiate tre funzioni sotto deinit, una di queste è quella di Igor ))
.......
Il codice è sciolto... Ma finché Igor lo fa sembrare bello, penso che avrai abbastanza per sperimentare.
 
lasso:
Yuri, ho estratto frettolosamente il codice da un vecchio EA...
Controllato, sembra funzionare correttamente.
Aggiungete il codice di deinit() ai vostri gufi e copiate tre funzioni sotto deinit, una di queste è quella di Igor ))
.......
Il codice è sciolto... Ma finché Igor lo fa sembrare bello, penso che avrai abbastanza per sperimentare.

Grande, grazie !!!!!!!!!! Ci darò un'occhiata....
 

Igor, Buon pomeriggio!

Ho messo la vostra funzione CrossPointOfLines (calcola le coordinate del punto di intersezione di due linee) nel mio Expert Advisor. Come risultato, continua a scrivere nei commenti: Non è riuscito a trovare il punto di intersezione! E non può trovare il punto di intersezione.

Forse è perché ho altri oggetti sul mio grafico sotto forma di linee di tendenza? O forse tu o uno degli habitué di questo thread potete dirmi qual è il mio problema?

Grazie in anticipo!

Codice - nel file allegato.

File:
 

URRÀ! L'ho capito da solo) Sono state le altre tendenze che si sono messe in mezzo...

Dato che non sono molto bravo a fare amicizia con gli array, ho fatto una funzione semplificata al massimo. Finora sembra funzionare).

//+------------------------------------------------------------------+
double Middle(string nm1,string nm2)
  {
  double M;
  double x0, x1, y1, x2, y2, x3, y3, x4, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      x0 = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(x0 - x1);
      }
    }
  return(M);
  }
//+----------------------------------------------------------------------------+
Motivazione: