Grazie. Molto istruttivo.
Cerco di capire cosa significa questo codice in questo articolo perché abbiamo un * vicino al CINDICATOBUFFER e poi usiamo at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Gradirei una spiegazione dettagliata
grazie
Cerco di capire cosa significa questo codice in questo articolo perché abbiamo un * vicino al CINDICATOBUFFER e poi usare at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Gradirei una spiegazione dettagliata
grazie
stringa
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
Non riesco a trovare il percorso dell'indicatore.
Qual è il modo corretto di specificare qui, gli indicatori che sto cercando di chiamare si trovano nella cartella standard.
Zigzag standard si trova nella cartella Examples: è necessario aggiungere il nome della cartella al percorso.

2017.07.12 10:38:05.703 Proba2 (EURUSD.m,M1) non può caricare l'indicatore personalizzato 'Examples\ZigZag'[4302]
Chi guarda il codice di errore?
ERR_MARKET_NOT_SELECTED | 4302 | Simbolo non selezionato in MarketWatch |
Chi deve controllare il codice di errore?
ERR_MARKET_NOT_SELECTED | 4302 | Simbolo non selezionato in MarketWatch |
Ho messo NULL - funziona, ho messo "EURUSD" - non funziona!!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- controllare la cronologia if(!SetSymbolPeriod(symbol,period)) return(false); //--- creare //m_handle=iCustom(simbolo,periodo, "Esempi_ZigZag",profondità,deviazione_creata,backstep); //m_handle=iCustom("EURUSD",period, "Examples\\\ZigZag",depth,deviation_create,backstep); - NON funziona m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- controllare il risultato if(m_handle==INVALID_HANDLE) return(false); //--- indicatore creato con successo if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- errore di inizializzazione IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
//+------------------------------------------------------------------+ //|Creare l'indicatore "Zig Zag| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- controllare la cronologia if(!SetSymbolPeriod(symbol,period)) return(false); //--- creare m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- controllare il risultato if(m_handle==INVALID_HANDLE) return(false); //--- indicatore creato con successo if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- errore di inizializzazione IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- linea di stato del rendering m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- salvare le impostazioni m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- creare buffer ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- ok return(true); } //--- errore return(false); }
Aiutatemi a capire come viene impostata la direzione di indicizzazione dell' array di buffer dell'indicatore, cioè la stessa di ArraySetAsSeries. La direzione predefinita è da presente a passato, ma io ho bisogno di renderla da passato a presente. Da ieri sono alle prese con questa domanda! Aiuto!
- 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 Estensione della MQL5 Standard Library e riutilizzo del codice è stato pubblicato:
MQL5 Standard Library semplifica la tua vita come sviluppatore. Tuttavia, non implementa tutte le esigenze di tutti gli sviluppatori del mondo, quindi se ritieni di aver bisogno di altre personalizzazioni puoi fare un ulteriore passo avanti ed estendere. Questo articolo illustra l'integrazione dell'indicatore tecnico Zig-Zag di MetaQuotes nella Libreria standard. Ci ispiriamo alla filosofia di design di MetaQuotes per raggiungere il nostro obiettivo.
In poche parole, con API MQL5 potrai riutilizzare il codice. In più esso offre affidabilità, flessibilità e facilità di manutenzione. Questo è cosa dice la teoria, ma al di là di tutto questo, se hai intenzione di continuare ad avanzare in MQL5 e sviluppare cose più sofisticate, come Expert Advisor multi-valuta, prima dovresti essere in grado di codificare in modalità libreria standard in modo che le tue app abbiano possano riuscire bene.
Man mano che i tuoi EA e indicatori diventano sempre più complessi, questo è sempre più necessario per padroneggiare i concetti coinvolti nello sviluppo di un framework. Come esempio di applicazione nel mondo reale, è il mio bisogno personale di sviluppare un EA complesso e multi-valuta che detta la necessità di rafforzare la base del mio progetto da zero.
Autore: Jordi Bassaganas