Discussione sull’articolo "Introduzione a MQL5: Come scrivere un semplice Expert Advisor e un Indicatore Personalizzato"
Buon giorno della vittoria!
Potreste consigliarmi?
L'Expert Advisor contiene un ciclo di ricerca alternata di tutte le posizioni aperte. Nel ciclo viene utilizzata la funzione PositionGetDouble(POSITION_SL). Dalla descrizione del parametro POSITION_SL si evince che può essere utilizzato per ottenere illivello di Stop Loss di una posizione aperta.
Domanda 1: quale valore mostrerà la funzione PositionGetDouble(POSITION_SL) se una posizione aperta si è formata in seguito all'attivazione di diversi ordini pendenti con diversi livelli di Stop Loss?
Domanda 2: se una posizione aperta è stata formata come risultato dell'attivazione di diversi ordini pendenti con diversi livelli di stop-loss, qual è il modo migliore per ottenere dati su questi livelli di stop-loss?
Se questo argomento è già stato discusso in precedenza, si prega di fornire un link.
- www.mql5.com
Buon giorno della vittoria!
Domanda 1: quale valore mostrerà la funzione PositionGetDouble(POSITION_SL) se si è formata una posizione aperta a seguito dell'attivazione di diversi ordini pendenti con diversi livelli di stop-loss?avete controllato cosa restituisce la funzione?
No, non l'ho fatto. Perché non conosco tutte le condizioni iniziali importanti che devono essere osservate quando si verifica (test) una particolare funzione. E anche a causa di un atteggiamento negativo nei confronti della possibilità di utilizzare il metodo scientifico del "poke" quando imparo un linguaggio di programmazione nuovo per me.
Spiegazione. L'esiguo numero di articoli dedicati agli Expert Advisor e l'assenza di un libro di testo su MQL5 costringono l'utente medio ad affidarsi al materiale disponibile in rete, compreso questo (utilissimo) articolo, per implementare la propria strategia di trading.
Come ben comprenderete, le mie domande riguardano aspetti teorici e applicativi che non trovano riscontro nell'attuale versione della Guida di riferimento MQL5, così come negli articoli disponibili sugli Expert Advisor MQL5.
In tali circostanze, ritengo che sia molto più ragionevole porre domande a persone competenti (sviluppatori del linguaggio e autori di articoli) su alcuni aspetti teorici e applicati delle funzioni MQL5, invece di condurre esperimenti, "controllare cosa restituisce una funzione" in determinate condizioni, e simili dilettantismi.
Concordo sul fatto che una risposta da parte di persone esperte su "cosa dovrebbe essere" sembra più ottimale di una controdomanda del tipo "hai controllato cosa restituisce la funzione" (in assenza di una mia comprensione delle peculiarità del suo funzionamento).
Ho trovato la risposta. Nella Guida dell'utente del terminale client:
...Уровни Тейк Профит и Стоп Лосс устанавливаются для позиции по последнему ордеру (рыночному или сработавшему отложенному).
Иными словами, стоп уровни в каждом последующем ордере по одной позиции заменяют предыдущие.
...Срабатывание ордеров Тейк профит и Стоп Лосс приводит к полному закрытию позиции. Strano. Poiché per ogni strumento finanziario è possibile una sola posizione aperta, risulta che gli scenari con chiusura parziale di una posizione tramite stop-loss non possono essere implementati in linea di principio?
P.S. Dopo aver scoperto questa particolarità insita in MT5, non è necessario controllare il valore restituito dalla funzione PositionGetDouble(POSITION_SL) se una posizione aperta si è formata in seguito all'attivazione di più ordini pendenti con livelli di stop-loss diversi.
Ho trovato la risposta. Nel manuale d'uso del terminale client:
Strano. Poiché per ogni strumento finanziario è possibile aprire una sola posizione, gli scenari con chiusura parziale di una posizione tramite stop loss non possono essere implementati in linea di principio?
P.S. Dopo aver scoperto questa particolarità insita nella MT5, non è più necessario verificare quale valore restituisce la funzione PositionGetDouble(POSITION_SL), se una posizione aperta si è formata in seguito all'attivazione di diversi ordini pendenti con diversi livelli di stop-loss.
è possibile realizzare la funzione "izpodvypodvert vypert vypert podvypert" che suddivide il take profit in base al volume delle transazioni sullo strumento dato in ordini pendenti per livelli.
Personalmente, però, ritengo che questa funzione non sia necessaria in quanto conosco i terminali di trading ufficiali che non prevedono alcun blocco.
può essere realizzata come funzione "from-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub" ...
Sì, mi sono già grattato la testa su questo argomento. Ci sono tre opzioni :)
- o rielaborare creativamente gli scenari esistenti per le peculiarità di MT5;
- o creare una classe di funzioni sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub;
- oppure evitare di utilizzare stop-loss e take-profit negli ordini, operando invece inizialmente con pacchetti di ordini di direzione opposta.
Non importa, ce la faremo! :)
Domanda sul posizionamento delle funzioni ArraySetAsSeries nell'Expert Advisor.
Le funzioni ArraySetAsSeries sono collocate nella funzione OnTick() subito dopo le funzioni CopyTime, CopyHigh e CopyLow.
Ci sono ostacoli a collocare le funzioni ArraySetAsSeries nella funzione OnInit(), oppure gli array devono sempre essere indicizzati solo dopo essere stati copiati?
- www.mql5.com
Domanda sul posizionamento delle funzioni ArraySetAsSeries nell'EA.
Le funzioni ArraySetAsSeries sono inserite nella funzione OnTick() subito dopo le funzioni CopyTime, CopyHigh e CopyLow.
Ci sono ostacoli a collocare le funzioni ArraySetAsSeries nella funzione OnInit() o gli array devono sempre essere indicizzati solo dopo essere stati copiati?
Per i buffer degli indicatori, si dice SetIndexBuffer:
Nota
Dopo il collegamento, l'array dinamico buffer[] sarà indicizzato come un normale array, anche se l'array collegato è preimpostato per essere indicizzato come una timeseries. Se è necessario modificare l'ordine di accesso agli elementi dell'array di indicatori, è necessario applicare la funzione ArraySetAsSeries() dopo aver collegato l'array con la funzione SetIndexBuffer().Dovrebbe essere simile per gli Expert Advisor, controllare
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Introduzione a MQL5: Come scrivere un semplice Expert Advisor e un Indicatore Personalizzato è stato pubblicato:
Il Linguaggio di Programmazione MetaQuotes 5 (MQL5), incluso nel Client Terminal MetaTrader 5, ha molte nuove possibilità e prestazioni più elevate rispetto a MQL4. Questo articolo ti aiuterà a familiarizzare con questo nuovo linguaggio di programmazione. I semplici esempi di come scrivere un Expert Advisor e un Indicatore Personalizzato vengono presentati in questo articolo. Considereremo anche alcuni dettagli del linguaggio MQL5, necessari per comprendere questi esempi.
Autore: Denis Zyatkevich