Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1250

 
Youri Lazurenko:

Grazie. In mql5 non sono stati costruiti tali labirinti. Invece di andare dritto alla meta, bisogna fare delle deviazioni, passare attraverso molti vicoli ciechi e ostacoli. Una lingua per il gusto di una lingua.

In MQL4 si imposta anche un magik per una posizione.

Qui avete deciso di usare un oggetto commerciale di SB. Questo significa che durante la sua creazione e inizializzazione è necessario impostare i suoi parametri. E poi lo usi solo per le funzioni di trading. Ci possono essere molti oggetti di questo tipo, e voi imposterete parametri diversi per ognuno di essi. E poi - applicare all'oggetto necessario per la gestione degli ordini commerciali su quei simboli e segni magici che sono stati impostati per ogni oggetto particolare, e che sono necessari in momenti diversi a seconda del TS.

È così semplice.

 
Ciao Artyom Trishkin! 2020.09.14_01:14 GMT+3. Ho preso l'EA standard Moving Average e ho cambiato le due condizioni per l'apertura di un trade e per la chiusura di un trade. Ho visto nel tester della strategia che l'Expert Advisor ha soddisfatto solo la seconda condizione per aprire e chiudere una posizione; ignora la prima condizione. L'Expert Advisor è semplice così com'è, ma come fanno gli EA complessi a scrivere EA complessi che fanno funzionare tutto? Come far funzionare almeno due condizioni di apertura e chiusura delle compravendite? E ci possono essere più condizioni per l'apertura degli scambi. Conosci la risposta a queste domande? Per favore, consigliatemi. Allego un file del mio Expert Advisor. 01:26 GMT+3.
File:
 
Artyom Trishkin:

In MQL4, si imposta anche un magik per una posizione.

Qui avete deciso di usare un oggetto commerciale di SB. Questo significa che quando lo create e lo inizializzate, dovete impostare i suoi parametri. E poi lo usi solo per le funzioni di trading. Ci possono essere molti oggetti di questo tipo, e voi imposterete parametri diversi per ognuno di essi. E poi - applicare all'oggetto necessario per la gestione degli ordini commerciali su quei simboli e segni magici che sono stati impostati per ogni oggetto particolare, e che sono necessari in momenti diversi a seconda del TS.

È così semplice.

Salve. Grazie per la vostra risposta. Darò il mio punto di vista. Quando si apre un ordine in MQL4, si specificano i suoi parametri incluso un magik. In #include <Trade\OrderInfo.mqh>, si specifica tutto tranne il magik. Per esempio - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). Secondo me, questo non è un fix e dovremmo sistemarlo introducendo un altro parametro mago. Oppure, #include <Trade\ HistoryOrderInfo.mqh> contiene tutto tranne il profitto (profitto/perdita) preso dall'ordine. Questa è un'informazione importante sull'ordine e manca. Dobbiamo trovare il profitto dell'ultimo ordine chiuso. Queste informazioni saranno mostrate in Comment(). E vedremo. Finché non c'è un ordine aperto (posizione), il commento mostra il profitto dell'ultimo ordine. Non appena l'ordine (posizione) viene aperto, si ottiene 0 nel commento, finché l'ordine non viene chiuso. Cioè l'ordine è ancora nel mercato, ma contemporaneamente nella storia, sta in due ipostasi simultaneamente. Ma questa è una sciocchezza. Per questo dico che la lingua è solo per il gusto della lingua. Secondo me, ci sono molti dettagli incompleti.

 
Youri Lazurenko:


State confondendo i concetti (in particolare "ordine"). Ci può essere un ORDINE REMOTO o una POSIZIONE nel mercato. Potete leggere di più nell'aiuto:Principi generali.

La classe CTrade è autosufficiente e non ci sono difetti in essa, solo la vostra riluttanza a vedere il codice di implementazione. Quando si invia un ordine di trading (per aprire o modificare una POSIZIONE), l'istanza della classe trade invia un numero magico - basta inizializzarlo immediatamente quando si crea l'oggetto.


È una questione di abitudine.

Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
Youri Lazurenko:

Salve. Grazie per la vostra risposta. Darò la mia opinione. Quando si apre un ordine in MQL4, si specificano i suoi parametri incluso un magik. In #include <Trade\OrderInfo.mqh>, si specifica tutto tranne il magik. Per esempio - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). Secondo me, questo non è un fix e dovremmo sistemarlo introducendo un altro parametro mago. Oppure, #include <Trade\ HistoryOrderInfo.mqh> contiene tutto tranne il profitto (profitto/perdita) preso dall'ordine. Questa è un'informazione importante sull'ordine e manca. Dobbiamo trovare il profitto dell'ultimo ordine chiuso. Queste informazioni saranno mostrate in Comment(). E vedremo. Finché non c'è un ordine aperto (posizione), il commento mostra il profitto dell'ultimo ordine. Non appena l'ordine (posizione) viene aperto, si ottiene 0 nel commento, finché l'ordine non viene chiuso. Cioè l'ordine è ancora nel mercato, ma contemporaneamente nella storia, rimane in due ipostasi simultaneamente. Ma questa è una sciocchezza. Per questo dico che la lingua è solo per il gusto della lingua. Secondo me, ci sono molti dettagli incompiuti.

Yury, non si tratta di una massa di dettagli incompiuti, ma di una massa di malintesi.

Perché, in ogni apertura di un ordine o di una posizione, scrivere un mago, se è sufficiente indicarlo una volta in OnInit().

#include <Trade\Trade.mqh>
CTrade trade;

sinput  int Magic = 1; //  Идентификатор эксперта

int OnInit()
 {
  trade.SetExpertMagicNumber(Magic);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

Questo è tutto!!! Poi la magia di un ordine, affare o posizione sarà controllata allo stesso modo per identificare "amico o nemico". Il problema è nella tua mente.

Un ordine può non avere un profitto! Una posizione ha un profitto nel tempo corrente. E una posizione ha un trade di chiusura, o parte di una posizione, ma che è nella storia del trading. L'ordine è solo un ordine per effettuare una transazione sul mercato.

Lasciatemi provare a spiegare in kolkhoznyy. Arrivi al mercato e decidi di comprare un sottaceto.

Mandato: datemene un chilo...

accordo: tu mi dai i soldi, tu prendi il pesce...

posizione: nella tua borsa c'è l'albicocca...

Dal punto di vista del venditore:

posizione: hai lo stufato di pesce sul bancone...

ordine: si riceve un ordine di pesare un chilo di pesce...

transazione: consegnare le albicocche, mettere i soldi nella borsa...

 
Youri Lazurenko:

Salve. Grazie per la vostra risposta. Darò la mia opinione. Quando si apre un ordine in MQL4, si specificano i suoi parametri incluso il magik. In #include <Trade\OrderInfo.mqh>, si specifica tutto tranne il magik. Per esempio - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). Secondo me, questo non è un fix e dovremmo sistemarlo introducendo un altro parametro mago. Oppure, #include <Trade\ HistoryOrderInfo.mqh> contiene tutto tranne il profitto (profitto/perdita) preso dall'ordine. Questa è un'informazione importante sull'ordine e manca. Dobbiamo trovare il profitto dell'ultimo ordine chiuso. Queste informazioni saranno mostrate in Comment(). E vedremo. Finché non c'è un ordine aperto (posizione), il commento mostra il profitto dell'ultimo ordine. Non appena l'ordine (posizione) viene aperto, si ottiene 0 nel commento, finché l'ordine non viene chiuso. Cioè l'ordine è ancora nel mercato, ma contemporaneamente nella storia, rimane in due ipostasi simultaneamente. Ma questa è una sciocchezza. Per questo dico che la lingua è solo per il gusto della lingua. Secondo me, ci sono molti dettagli incompiuti.

Si pensa in termini di procedure, ma si cerca di usare gli oggetti OOP. Sono trattati in modo diverso. Per esempio:

Viene creato un oggetto. Un mago è pronto per questo.
Viene creato un secondo oggetto. Un secondo mago è pronto.
Viene creato un terzo oggetto. Un terzo mago è dato ad esso.

Ora avete tre oggetti commerciali per tre strategie in un solo EA.
Dovreste usare il primo oggetto di trading per aprire una posizione o piazzare un ordine pendente per il primo TS.
Per aprire una posizione o impostare un ordine pendente per il secondo TS, dovete fare riferimento al secondo oggetto di scambio.
Per aprire una posizione o piazzare un ordine pendente per un terzo TS, dovete fare riferimento a un terzo oggetto di scambio.

Gli ordini non hanno un parametro di profitto. Per una semplice ragione - un ordine è un ordine (un ordine pendente è un ordine a un broker di eseguire una certa azione quando il prezzo raggiunge un certo livello, cioè un ordine di eseguire un'operazione dopo un certo tempo quando il criterio specificato viene raggiunto). Una negoziazione (ordine) può risultare in un trade (ha già il parametro di profitto DEAL_PROFIT) che porta alla creazione di una posizione o alla sua modifica o chiusura (la posizione ha anche il parametro di profitto, ma solo un POSITION_PROFIT corrente e fluttuante).

E poi c'è l'ordine di mercato (market order), che appare sempre prima dello scambio quando si invia un ordine di compravendita - questo è il vostro ordine di compravendita. Ed è visibile nella lista degli ordini esistenti. Cioè, ogni apertura di posizione genera una catena: ordine --> trade --> posizione. Qualsiasi azione su una posizione aperta crea una catena: posizione --> ordine --> trade --> nessuna posizione, o una posizione più piccola, o una posizione più grande (netting), o un'inversione di posizione (netting).

Studiate il riferimento.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Salve, è possibile fare periodi non standard nel codice dell'indicatore "media mobile" per la MT5? Per esempio, non per 1 candela, ma per 0,5? Capisco che la piattaforma ha ancora dati di prezzo e l'indicatore li divide e li arrotonda...
 

Grazie a tutti. Soprattutto Alexey Viktorov- chiaro e specifico. Ho già rielaborato e controllato, ora abbiamo l'informazione sul profitto dell'ultimo ordine e l'EA la usa. Questo è troppo contorto, c'è un casino inutile e superfluo sulla posizione, l'ordine e il commercio. Ci sono ordini attuali (in attesa, impegnati /market/) e ordini che sono andati in history, ma tutti gli stessi ordini. Il processo di trasferimento è di breve durata e assolutamente irrilevante. Si scopre che mentre l'ordine del venditore viene pesato, quello del compratore è praticamente già andato. Cioè c'è confusione e confusione nel frattempo. Più semplice è, meglio è.

Ma grazie a tutti comunque, e buona fortuna.

 
Youri Lazurenko:

Grazie a tutti. Soprattutto Alexey Viktorov- chiaro e specifico. Ho già rielaborato e controllato, ora abbiamo l'informazione sul profitto dell'ultimo ordine e l'EA la usa. Questo è troppo contorto, c'è una confusione inutile e superflua. Ci sono ordini attuali (in attesa, impegnati /market/) e ordini che sono andati in history, ma tutti gli stessi ordini. Il processo di trasferimento è di breve durata e assolutamente irrilevante. Si scopre che mentre l'ordine del venditore viene pesato, quello del compratore è praticamente già andato. Cioè c'è confusione e confusione nel frattempo. Più semplice è, meglio è.

Ma grazie lo stesso, vi auguro buona fortuna.

Non è una stranezza degli sviluppatori del terminale. È stata una stranezza inserire l'intera catena in un unico concetto di "ordine" in 4. Ora tutto è in linea con ciò che sta realmente accadendo.

E il tempo per spostare uno stub dallo scaffale alla borsa è il tempo di esecuzione di un ordine di scambio. E così, avendo assolutamente tutti i dati sugli eventi attuali, si può facilmente controllare la velocità di esecuzione degli ordini. E non solo. Ora avete una vasta gamma di possibilità per l'implementazione di qualsiasi statistica su qualsiasi server, e quanto bene possono eseguire i vostri ordini.

 
Artyom Trishkin:

Questo non è un capriccio degli sviluppatori del terminale. Era una stranezza inserire tutta la catena in un unico concetto di "ordine" in quadruplo. Ora è in linea con ciò che sta realmente accadendo.

E il tempo per spostare uno stub dallo scaffale alla borsa è il tempo di esecuzione di un ordine di scambio. E così, avendo assolutamente tutti i dati sugli eventi che si verificano, si può facilmente controllare quanto velocemente gli ordini vengono eseguiti. E non solo. Ora avete un sacco di opportunità per implementare qualsiasi statistica su qualsiasi server, e quanto bene possono soddisfare le vostre esigenze.

Nessuna mancanza di rispetto, puramente in linea con la discussione. Ho fatto trading con i miei EAs per molto tempo (non li sto vendendo), con diversi broker e non sono interessato aidati assoluti sugli eventi. Sono interessato al risultato finale - la qualità degli ordini eseguiti su richiesta di un EA. Se gli ordini vengono aperti solo una volta (in senso figurato), semplicemente non lavorerò con questo broker. Se in un broker l'apertura è mezzo secondo più veloce che in un altro, non è essenziale per me (così come la differenza di quotazioni).

Quanto è facile scrivere un EA in mql4 e quanto è fastidioso con mql5? Perché le domande riguardano mql5? Ho sentito parlare bene del tester MT5 e ho dovuto familiarizzare con mql5 per provarlo. L'ho provato e non sono soddisfatto. È comodo scaricare le quotazioni, è molto più veloce, ma MT4 è più informativo. Per esempio, voglio sapere non solo a quale prezzo sono stati chiusi gli ordini, ma anche quale profitto (perdita) hanno preso. L'ottimizzazione in avanti è così impegnativa per il processore che il computer si spegne. Ho provato una volta (questa non è una prova, ovviamente) ad eseguire uno stesso Expert Advisor su uno stesso broker. I risultati sono diversi; mt5 è migliore - più profitto, significativamente meno drawdown, il che è stressante. Forse sono io che sono rimbambito, ma per ora ho più critiche che positività. Non ho ancora intenzione di fare trading su mt5, ma l'interesse a scrivere un buon Expert Advisor rimane. Solo per l'interesse.

Vi auguro buona fortuna.