Lavorare con Telegram in MetaTrader. Canali e bot di Telegram
I miei segreti di Autolot. Lot dinamico o Autolot.
Descrizione
Avviso: Le query più frequenti nei motori di ricerca e gli argomenti popolari sui forum spesso includono le seguenti frasi.
Un avviso su tali argomenti può aiutarti a rimanere aggiornato con le ultime tendenze.
- “Indicatore di avviso“
- “Come aggiungere un segnale sonoro all’indicatore?“
- “Aiutami a inserire un segnale sonoro nell’indicatore“
- “Come inserire Avvisi e Frecce“
- “Come inviare un messaggio via email o telefono quando il segnale proviene da un indicatore?“
In questo articolo, descriverò in dettaglio un modo semplice per aggiungere notifiche Avviso, Email, Push e Freccia a qualsiasi indicatore utilizzando codice aggiuntivo disponibile su Expforex.
Prefazione
Per installare correttamente Avvisi nel tuo indicatore, devi avere il codice open-source del tuo indicatore.
Il codice decompilato è indesiderato perché, per i principianti, il codice decompilato fornisce informazioni minime. È difficile da capire.
Potresti anche incontrare problemi con la compilazione dopo la modifica.
xCustomEA
Se stai cercando un modo più semplice per automatizzare la tua strategia di trading senza immergerti in complesse programmazioni personalizzate, considera xCustomEA.
Questo expert advisor di Expforex è progettato per funzionare perfettamente con indicatori che generano segnali a freccia. Con xCustomEA, puoi facilmente automatizzare qualsiasi indicatore che mostra frecce di acquisto o vendita, permettendoti di creare una potente strategia automatizzata senza il fastidio di sviluppare codice personalizzato.
xCustomEA rende incredibilmente accessibile l’automazione delle strategie basate sui segnali degli indicatori. Permette ai trader di concentrarsi sull’ottimizzazione del loro trading invece di spendere tempo e risorse nella programmazione personalizzata. Questo expert advisor serve come un’eccellente alternativa all’assunzione di un programmatore, offrendo una soluzione semplice per trasformare i segnali degli indicatori in operazioni di trading.
Per ulteriori informazioni, visita la pagina di xCustomEA o esplora gli altri expert advisor di Expforex.
Inizio del Lavoro per inserire un Avviso
Innanzitutto, devi determinare quali buffer dell’indicatore forniscono segnali specifici, lo scopo della creazione di un avviso e le condizioni per determinare il segnale sull’indicatore.
Importante: Solo i buffer esterni definiti all’inizio del codice delle variabili possono essere visualizzati negli indicatori:
#property indicator_buffers 1
Tuttavia, l’indicatore può anche contenere buffer nascosti, che vengono impostati nella funzione init() e dichiarati come variabili:
IndicatorBuffers(7): Abbiamo bisogno solo dei primi buffer.
Se, ad esempio, hai 1 buffer esterno, allora guarda la variabile:
SetIndexBuffer(0, SarBuffer);
- 0 è il primo buffer
- 1 è il secondo buffer
Questi buffer o i loro nomi possono essere identificati passando il mouse su una linea specifica dell’indicatore sul grafico.
Value1 – Questo è il primo buffer o 0 nel sistema di indicizzazione del codice.
SetIndexBuffer(0, SarBuffer); // The name of the buffer we need
Se questo è SarBuffer, allora lo utilizzeremo.
Inoltre, è una questione tecnica determinare come verrà attivato il segnale;
Ad esempio, se questa è l’intersezione della linea 0 dalla parte superiore (inferiore) che si muove verso il basso (alto), apparirà così:
SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0
L’indicatore che incrocia il prezzo corrente o una barra, una rottura di barra da parte dell’indicatore, e così via:
SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]
Se questa è l’intersezione di livelli unici, indicatori come gli stocastici:
SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75; SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;
Se ci sono già frecce nel tuo indicatore, allora è possibile anche il seguente tipo di segnale:
DnTrend[1] != EMPTY_VALUE && DnTrend[1] != 0 && UpTrend[2] != EMPTY_VALUE
In ogni caso, devi applicare logica e creatività per registrare correttamente il segnale. Se incontri difficoltà, scrivi a questo thread, allega l’indicatore, mostra le linee sul grafico e descrivi in dettaglio cosa non riesci a fare. Inviare un messaggio come “devi inserire un avviso nell’indicatore” senza spiegare dove e cosa fare, e senza fornire l’indicatore stesso, non è utile.
Codice “Avvisi e frecce da www.expforex.com”
Il passo successivo per aggiungere il nostro avviso al tuo indicatore consiste in diversi punti:
PASSO 1
Inserisci il seguente codice all’inizio dell’Expert Advisor prima della funzione OnCalculate() (start):
//+==+//+ www.expforex.com edit AlertArrow +//+==+ extern string Alerts="Alerts and arrows from www.expforex.com"; extern bool AlerT=true; // Issue an alert to the screen extern bool Mail=true; // Send message extern bool Push=true; // Send PUSH to phone extern bool Arrow=true; // Put arrows on signals extern int shift=1; // On which bar to count the signal 0 - on the current one, 1 - on the closed int timeee; // Internal variable string nameInd; void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=3) { if(nm=="") nm=DoubleToStr(Time[0], 0); if(t1 <= 0) t1=Time[0]; if(p1 <= 0) p1=Bid; nameInd=WindowExpertName(); int wind=WindowFind(nameInd); wind=0; if(ObjectFind(nm) < 0) ObjectCreate(nm, OBJ_ARROW, wind, 0, 0); ObjectSet(nm, OBJPROP_TIME1, t1); ObjectSet(nm, OBJPROP_PRICE1, p1); ObjectSet(nm, OBJPROP_ARROWCODE, cd); ObjectSet(nm, OBJPROP_COLOR, cl); ObjectSet(nm, OBJPROP_WIDTH, sz); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void Expforex_AlertArrow(string text="", int arrowdir=0, bool history=false, int i=0) { nameInd=WindowExpertName(); int wind=WindowFind(nameInd); if(wind==-1) wind=0; ObjectCreate("Originalalert", OBJ_LABEL, wind, 0, 0); ObjectSetText("Originalalert", "Modification AlertArrow www.expforex.com", 10, "Arial Bold", Red); ObjectSet("Originalalert", OBJPROP_CORNER, 2); ObjectSet("Originalalert", OBJPROP_XDISTANCE, 200); ObjectSet("Originalalert", OBJPROP_YDISTANCE, 10); if(!history) { if(AlerT) Alert(text); if(Arrow) if(arrowdir==1) SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift], 0), Time[shift], Low[shift]); if(Arrow) if(arrowdir==2) SetArrow(242, Red, nameInd + DoubleToStr(Time[shift], 0), Time[shift], High[shift]); if(!IsTesting()) if(Mail) SendMail(text, text); if(!IsTesting()) if(Push) SendNotification(text); } if(history) { if(Arrow) if(arrowdir==1) SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], Low[shift + i2]); if(Arrow) if(arrowdir==2) SetArrow(242, Red, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], High[shift + i2]); } }//+==+//+ www.expforex.com edit AlertArrow +//+==+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { for(int i=ObjectsTotal(); i>=0; i--) { if(StringFind(ObjectName(i), nameInd)!=-1) ObjectDelete(ObjectName(i)); } } //+------------------------------------------------------------------+
PASSO 2
Prima di chiudere la funzione OnCalculate() inserisci il seguente codice:
return(rates_total); }
Incolla il seguente codice:
//+==+//+ www.expforex.com edit AlertArrow +//+==+ nameInd=WindowExpertName(); if(timeee != Time[0] && SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75) { Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP", 1); timeee=Time[0]; } if(timeee != Time[0] && SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25) { Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN", 2); timeee=Time[0]; }//+==+//+ www.expforex.com edit AlertArrow +//+==+
PASSO 3
Questo codice servirà come nostro segnale.
Naturalmente, devi sostituire parte del codice con il tuo.
Il seguente codice serve come segnale per un avviso:
1. Intersezione della linea 0 dalla parte superiore (inferiore) che si muove verso il basso (alto), apparirà così:
SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0
2. L’indicatore che incrocia il prezzo corrente o una barra, una rottura di barra da parte dell’indicatore, e così via:
SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]
3. Se questa è l’intersezione di livelli unici, indicatori come gli stocastici:
SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75; SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;
Dopo l’uso
Per aggiungere un segnale sonoro all’indicatore, segui questi passaggi:
- 1. Apri le impostazioni dell’indicatore.
- 2. Cerca la sezione “Avviso” o “Frecce“.
- 3. Seleziona l’opzione per aggiungere un avviso sonoro.
- 4. Scegli il file audio che desideri utilizzare come avviso.
- 5. Salva le modifiche.
Inserendo un segnale sonoro nell’indicatore, puoi ricevere una notifica uditiva quando vengono soddisfatte determinate condizioni, il che può aiutarti a prendere decisioni di trading migliori.
Se hai bisogno di frecce nella storia, allora devi fare questo:
Dopo il codice sopra, aggiungi quanto segue:
//+==+//+ www.expforex.com edit AlertArrow +//+==+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(counted_bars > 0) counted_bars--; int limit2 = Bars - counted_bars; for(int i2 = 0; i2 < limit2; i2++) { nameInd = WindowExpertName(); if(SarBuffer[shift+1+i2] <= 75 && SarBuffer[shift+i2] > 75) { Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP" + i2, 1, true, i2); } if(SarBuffer[shift+1+i2] >= 25 && SarBuffer[shift+i2] < 25) { Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN" + i2, 2, true, i2); } } //+==+//+ www.expforex.com edit AlertArrow +//+==+
Esempi
Questi esempi sono tratti dalla sezione corrispondente del nostro forum. Ho modificato gli indicatori secondo i principi descritti sopra.
Conclusioni
In questo articolo, ho spiegato il processo di creazione dei segnali per l’indicatore nel modo più dettagliato e comprensibile.
Il codice sopra può essere utilizzato senza restrizioni su qualsiasi indicatore. È importante non cambiare il nome dell’autore quando si aggiunge il codice all’indicatore.
Se ti è piaciuto questo articolo e hai trovato utile questo metodo di inserimento dei segnali, per favore lascia i tuoi commenti e valuta gli argomenti.
- Freelance: Programmazione Personalizzata su MetaTrader e MQL!
- Indicatore della barra del segnale. Da quale barra dovresti prendere un segnale? Disegnare indicatori.
- Indicatore CrossObjectALert quando incrocia con oggetti per terminali mt4 e mt5
- Lavorare con email e push in MetaTrader
Barra del Segnale: È Importante Saperlo
Domande?
Se hai domande, per favore falle. Non vendiamo il maiale nel sacco.
Inoltre, ciascuno dei nostri prodotti può essere testato prima dell’acquisto.
Apprezziamo il tuo interesse e il tuo supporto per i nostri prodotti e ci impegniamo a mantenere elevati standard di qualità.
Grazie per essere con noi!
Hai una domanda?
This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어
Leave a Reply