Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1259

 
Yevhenii Levchenko:
Ho capito bene che in mt5, invece del tempo di chiusura, si deve guardare POSITION_TIME_UPDATE?
No, hai bisogno di un'operazione di chiusura.
 
Valerius:

Il TakeProfit è calcolato in pip e il Trailing TakeProfit è calcolato nella valuta del deposito. Trailing TakeProfit è il profitto nella valuta del deposito da uno o più ordini, e mette gli stop degli ordini nella quantità specificata nelle impostazioni, cioè ad una distanza calcolata.

Per esempio, nelle impostazioni viene specificato un Trailing Take Profit di $100. Una volta che il prezzo raggiunge il profitto di 100$ e va oltre, il programma calcola la distanza di 100$ e piazza tutti gli stoploss degli ordini nel punto calcolato, se lo permette. Non appena il prezzo torna agli stop, tutti gli ordini saranno chiusi. In linea di principio questo è lo stesso del Trailing Stop, solo che è calcolato in valuta depo e segue il profitto. Forse ho fatto un errore da qualche parte, ma il principio è questo. Spero di essermi spiegato.

Trailing - movimento. Trailing Stop - spostiamo lo stop secondo l'algoritmo. Trailing TakeProfit - spostiamo il livello man mano che si avvicina secondo qualche algoritmo.

 
Artyom Trishkin:
No, hai bisogno di un'operazione di chiusura.

Grazie!

Ecco una funzione per martin che controlla l'ultimo trade per il profitto. Se non è redditizio, restituisce il volume dello scambio. Quanto è corretto farlo in questo modo:

double lastDealVolume() {
   datetime lastDealTime = 0;
   double volume = 0;
   if(HistorySelect(TimeCurrent() - PeriodSeconds(PERIOD_D1) * 10, TimeCurrent())) {
      int historyDealsTotal = HistoryDealsTotal();
      for(int i = historyDealsTotal - 1; i >= 0; i--) {
         if(HistoryDealSelect(HistoryDealGetTicket(i))) {
            ulong dealTicket = HistoryDealGetTicket(i);
            ENUM_DEAL_TYPE dealType = (ENUM_DEAL_TYPE) HistoryDealGetInteger(dealTicket, DEAL_TYPE);
            if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(dealTicket, DEAL_MAGIC) == MagicNumber &&
                  (dealType == DEAL_TYPE_BUY || dealType == DEAL_TYPE_SELL) ) {
               if(HistoryDealGetInteger(dealTicket, DEAL_TIME) > lastDealTime) {
                  lastDealTime = (datetime) HistoryDealGetInteger(dealTicket, DEAL_TIME);
                  if(HistoryDealGetDouble(dealTicket, DEAL_PROFIT) < 0) {
                     volume = HistoryDealGetDouble(dealTicket, DEAL_VOLUME);
                  } else {
                     volume = 0;
                  }
               }
            }
         }
      }
   } else Print("HistorySelect() (lastOrderVolume) error! ");
   return volume;
}

Se vogliamo conoscere il profitto dell'intera posizione:

-> Cercare tutti i trade e ottenere il DEAL_POSITION_ID dell'ultimo trade;
-> Cercare e ottenere di nuovo il profitto dell'intera posizione usando DEAL_POSITION_ID?

O c'è un modo più breve?

 
Yevhenii Levchenko:

Grazie!

Ecco una funzione per martin che controlla l'ultimo trade per il profitto. Se non è redditizio, restituisce il volume dello scambio. Quanto è corretto farlo in questo modo:

Se vogliamo conoscere il profitto dell'intera posizione:

-> Cercare tutti i trade e ottenere il DEAL_POSITION_ID dell'ultimo trade;
-> Cercare e ottenere di nuovo il profitto dell'intera posizione usando DEAL_POSITION_ID?

O c'è un modo più breve?

Guardate il problema da un altro punto di vista. Perché dovremmo avere bisogno di guardare nella storia, se possiamo ottenere l'ID della posizione al momento della chiusura della posizione e selezionare gli ordini e le operazioni di questa posizione sapendo già tutto.

 
Alexey Viktorov:

Guarda il problema da un altro punto di vista. Perché cercare nello storico se si può ottenere l'ID della posizione al momento della chiusura della posizione e selezionare gli ordini e i trade di questa posizione sapendo già tutto.

Il fatto è che devi controllare questo prima di aprire un trade :(

Ma se non ne hai uno corto, puoi sempre fare la strada lunga :)

 
Yevhenii Levchenko:

Il fatto è che deve essere controllato prima di aprire un trade :(

Ma se non ce n'è uno corto, puoi sempre fare la strada lunga :)

È necessario solo quando si riavvia l'Expert Advisor in OnInit per cercarlo in questo modo. E nel processo di lavoro dell'EA, otteniamo i dati necessari al momento della chiusura della posizione. Ma questo dipende da tutti. Ad alcune persone piace caricare il processore con azioni non necessarie.........

 
Alexey Viktorov:

Questo dovrebbe essere cercato in questo modo solo quando si riavvia l'Expert Advisor in OnInit. E nel processo di lavoro dell'Expert Advisor per ottenere i dati necessari al momento della chiusura della posizione. Ma tutto questo è affare di tutti. Ad alcune persone piace caricare il processore con azioni non necessarie.........

Sono un po' confuso, ma come tracciare il momento della chiusura di una posizione se non richiedendo lo stato della posizione ad ogni tick? Non sono certo tutte le posizioni da interrogare, ma tutte uguali su ogni richiesta di spunta.

 
Valerius:

Il TakeProfit è calcolato in pip e il Trailing TakeProfit è calcolato nella valuta del deposito. Trailing TakeProfit è il profitto nella valuta del deposito da uno o più ordini, e mette gli stop degli ordini nella quantità specificata nelle impostazioni, cioè ad una distanza calcolata.

Per esempio, il Trailing Take Profit in $100 è specificato nelle impostazioni. Una volta che il prezzo raggiunge il profitto di 100$ e va oltre, il programma calcola la distanza di 100$ e piazza tutti gli stoploss degli ordini nel punto calcolato, se lo permette. Non appena il prezzo torna agli stop, tutti gli ordini saranno chiusi. In linea di principio questo è lo stesso del Trailing Stop, solo che è calcolato in valuta depo e segue il profitto. Forse ho fatto un errore da qualche parte, ma il principio è questo. Spero di essermi spiegato.

Valeriy Yastremskiy:

Trailing - movimento. Trailing Stop - spostiamo lo stop secondo l'algoritmo. Trailing TakeProfit - spostiamo il livello man mano che si avvicina secondo qualche algoritmo.

Non prendetemi a calci, ma non capisco. Nelle impostazioni dell'Expert Advisor generato da MetaEditor che include il modulo di trailing, il livello di trailing è specificato in punti. Per esempio, ho impostato il "Take Profittrailing level (in punti)" = 100. Come funzionerà questo trailing stopper? Correggetemi se mi sbaglio. Quando il prezzo corrente raggiunge la distanza di 100 pip prima del livello di Take Profit specificato, l'ordine di trailing viene attivato. Quando il prezzo raggiunge e attraversa il TP, la posizione non viene chiusa. Il trawl inizia semplicemente a seguire il prezzo ad una distanza di 100 pips. Se il prezzo si inverte e va contro la posizione, la posizione sarà chiusa da TP, o da SL se il trawl si muove oltre TP. Giusto?
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
altec3:
Non prendetemi troppo a calci, ma non capisco. Nelle impostazioni dell'Expert Advisor generato in MetaEditor e che include il modulo di trailing, il livello di trailing è specificato esattamente in punti. Per esempio, ho impostato il "Take Profittrailing level (in punti)" = 100. Come funzionerà questo trailing stopper? Correggetemi se mi sbaglio. Quando il prezzo corrente raggiunge la distanza di 100 pip prima del livello di Take Profit specificato, l'ordine di trailing viene attivato. Quando il prezzo raggiunge e attraversa il TP, la posizione non viene chiusa. Il trawl inizia semplicemente a seguire il prezzo ad una distanza di 100 pips. Se il prezzo si inverte e va contro la posizione, la posizione sarà chiusa da TP, o da SL se il trawl si muove oltre TP. Giusto?

Senza il codice, è difficile non rispondere.

 
Alexey Viktorov:

Questo dovrebbe essere cercato in questo modo solo quando si riavvia l'Expert Advisor in OnInit. E nel processo di lavoro dell'Expert Advisor per ottenere i dati necessari al momento della chiusura della posizione. Ma tutto questo è affare di tutti. Ad alcune persone piace caricare il processore con azioni non necessarie.........

Non viene controllato ad ogni spunta. Se c'è un segnale, inizia a controllare e apre un trade. Questo è tutto :)
Motivazione: