mql5 - linea verticale dopo un certo tempo dall'ultimo scambio

 

Ciao a tutti!

Ragazzi, qualcuno può aiutare/suggerirvi come implementare la seguente idea in MQL5 (ho appena fatto conoscenza con Metatrader - non sto ancora scrivendo alcun codice).

Algoritmo del codice:
1) Si determina l'ora di chiusura dell'ultima operazione e il risultato dell'operazione.

2) Determina il risultato totale della giornata dopo la chiusura dell'ultimo trade.

3) Secondo le impostazioni dell'indicatore, una linea verticale viene disegnata ad un certo intervallo nel futuro dal momento della chiusura dell'ultimo trade.
Impostazioni:
- se il risultato dell'ultimo trade è negativo e il risultato del giorno è negativo, viene disegnata una linea verticale ad una distanza di 24 ore (un giorno) nel futuro.
- se il risultato dell'ultimo trade è negativo e il risultato del giorno è positivo, la linea verticale viene disegnata 2 ore nel futuro.
- se il risultato dell'ultimo trade è positivo, la linea verticale viene disegnata 1 ora nel futuro.

4) La linea rimane sul grafico anche dopo aver aperto un nuovo trade, ma si muove dopo aver chiuso un nuovo trade secondo l'algoritmo di cui sopra, perché già un nuovo trade era l'ultimo chiuso.

Nota.
Il risultato positivo è un risultato positivo, non importa se l'ordine è stato attivato o se la posizione è stata chiusa manualmente. Cioè più in saldo.
Un risultato negativo è meno o zero come risultato di un accordo.

P.S>

L'essenza di questo codice per me è di abituarmi a fare una pausa dopo gli affari e di non scaldarmi troppo. Ho notato che le mie perdite sono causate dal tentativo di chiudere rapidamente gli affari senza successo. Per me è possibile mettere una linea manualmente e spostarla secondo questa regola, ma ho bisogno esattamente di una variante di programma, perché in futuro voglio legare ulteriori condizioni/filtri all'indicatore, cioè complicare l'algoritmo di decisione.

Grazie in anticipo e buona fortuna!

 

Come esempio.

void moveVLine(string obj_name, datetime obj_time)
{
   int         tm       = PeriodSeconds(PERIOD_D1);
   datetime    next_day = obj_time + tm;
   MqlDateTime tm_str;
   
   TimeToStruct(next_day,tm_str);
   if(tm_str.day_of_week == 6)
   {
      tm *= 3;
      next_day = obj_time + tm;
   }
   ObjectMove(0,obj_name,0,next_day,0);
   
   return;
}
 
Сергей Таболин:

Come esempio.

Sergey, grazie!
Ti farò sapere come va a finire quando eseguirò il tuo esempio
 
Сергей Таболин:

Come esempio.

L'esempio non ha compilato :(
Come ho capito - il codice è un frammento ed è necessario aggiungere alcuni componenti obbligatori (#property, ecc.)?
 

Ho trovato un indicatore simile che disegna semplicemente una linea verticale ad un certo tempo - cercherò di usarlo come base, aggiungendo gli algoritmi necessari invece di un tempo statico predeterminato.
https://www.mql5.com/ru/code/18449

Vertical line
Vertical line
  • www.mql5.com
Индикатор рисует, а затем перемещает нарисованную вертикальную линию (OBJ_VLINE) на заданное время (часы и минуты). Входные параметры: Из параметра "Use only Hours and minutes" используются только часы и минуты.  Вертикальная линии рисуется для текущего дня. Если начинается новый день, то нарисованная линия переносится на этот новый день на...
 
Stupidità.
C'è una fonte (codice sopra) che disegna una linea su una barra in un dato momento. Basta rimuovere il tempo dai parametri di input e ottenere il valore del tempo dalla storia degli scambi. Guardando la documentazione Trading functions, sospetto che la verità sia da qualche parte tra le funzioni del gruppo History... Finora non vedo niente :(
Qualcuno può aiutarmi/dirmi come ottenere i dati dell'ultima transazione dalla storia (tempo di chiusura di una posizione e fissazione del risultato di una transazione)?
 
renatmt5:
L'esempio non ha compilato :(
Come ho capito - il codice è un frammento ed è necessario aggiungere alcuni componenti obbligatori (#property, ecc.)?

Questa è una funzione di trasferimento della linea verticale. Deve essere chiamato dal codice principale se sono soddisfatte certe condizioni. Inoltre, la linea stessa deve essere già presente.

 
Сергей Таболин:

Questa è una funzione di trasferimento della linea verticale. Deve essere chiamato dal codice principale se sono soddisfatte certe condizioni.

OK, grazie ancora!
 
renatmt5:

Ciao a tutti!

Ragazzi, qualcuno può aiutare/suggerirvi come implementare la seguente idea in MQL5 (ho appena fatto conoscenza con Metatrader - non sto ancora scrivendo alcun codice).

Codice dell'algoritmo:
1) Determina il tempo di chiusura dell'ultimo trade e il risultato del trade.

2) Determina il risultato totale del giorno dopo la chiusura dell'ultimo scambio.

3) Secondo le impostazioni dell'indicatore una linea verticale viene disegnata su un certo intervallo nel futuro dal momento della chiusura dell'ultimo trade.
Impostazioni:
- se il risultato dell'ultimo trade è negativo e il risultato del giorno è negativo, viene disegnata una linea verticale su una distanza di 24 ore (24 ore) nel futuro.
- se il risultato dell'ultimo trade è negativo e il risultato del giorno è positivo, la linea verticale viene disegnata 2 ore nel futuro.
- se il risultato dell'ultimo trade è positivo, viene disegnata una linea verticale ad una distanza di 1 ora nel futuro.

4) La linea rimane sul grafico anche dopo l'apertura di un nuovo trade, ma si muove dopo la chiusura di un nuovo trade secondo l'algoritmo di cui sopra, poiché il nuovo trade è già diventato l'ultimo trade chiuso.

Nota.
Un risultato positivo è un vantaggio, indipendentemente dal fatto che l'ordine sia scattato o che una posizione sia stata chiusa manualmente. Cioè più in saldo.
Un risultato negativo è un meno o zero come risultato dello scambio.

P.S>.

L'essenza di questo codice per me è la seguente: abituarsi a fare una pausa dopo gli accordi e non interrompere una striscia calda. Ho notato che le mie perdite sono causate dal tentativo di riconquistare rapidamente gli affari falliti. Per me è possibile mettere una linea manualmente e spostarla secondo questa regola, ma ho bisogno esattamente di una variante di programma, perché in futuro voglio legare ulteriori condizioni/filtri all'indicatore, cioè complicare l'algoritmo di decisione.

Grazie in anticipo e buona fortuna a tutti!

Quindi, chiamiamolo un indicatore.

Quindi, mettiamola così. Definiamo che interroghiamo la storia del trading una volta al minuto. Allora abbiamo bisogno di altri due parametri:

  • prendere in considerazione le ultime contrattazioni solo per il simbolo corrente (il simbolo su cui l'indicatore è in esecuzione) o per tutti?
  • e la contabilità dei numeri magici (considerare solo uno o tutti)?


Ho bisogno di una risposta da voi. Cercherò di apparire di nuovo in questo thread entro l'ora di pranzo.

 
Vladimir Karputov:

Un indicatore è un indicatore.

Quindi è così. Definiamo che interroghiamo la storia del trading una volta al minuto. Allora abbiamo bisogno di altri due parametri:

  • prendere in considerazione le ultime contrattazioni solo per il simbolo corrente (il simbolo su cui l'indicatore è in esecuzione) o per tutti?
  • e la contabilità dei numeri magici (considerare solo uno o tutti)?


Ho bisogno di una risposta da voi. Cercherò di apparire di nuovo in questo thread entro l'ora di pranzo.

Vladimir, grazie per aver dedicato del tempo alla mia domanda. Il più semplice possibile inizialmente, dato che mi aspetto di perfezionarlo a lungo termine, piuttosto che fermarlo :)
- solo sul simbolo corrente
- Per quanto riguarda il numero di magfic - non sono sicuro di cosa sia. Come una specie di documento d'identità? Non è importante per me, ad essere onesti. Ho bisogno di dati solo su un'ultima transazione chiusa

 

Vorrei chiarire il termine "ultimo scambio".

È l'ultimo scambio nel giorno corrente? O per gli ultimi N giorni?

Motivazione: