L'indi in basso (Complex_Pairs1) ha solo un colore. Qualcuno potrebbe aiutarmi e cambiarlo in 2 colori. Blu per salire e rosso per scendere. Proprio come l'indi sul grafico (Execute Line).
Ho provato molto duramente a cambiare il codice da solo, ma senza successo.
Dopo la compilazione non ci sono stati errori, ma non succede nulla quando provo ad aprire l'indi.
Questo è probabilmente un pezzo di torta per tutti voi codificatori esperti, e spero di poter imparare da questo.
Ciao, ho provato a cercare una guida utente o un thread del forum in google su come tracciare un indicatore personalizzato in un esperto. In realtà voglio una info su come utilizzare al meglio la funzione iCustom e un paio di esempi .... Grazie in anticipo!
ajk....... zigzag differisce dalla maggior parte degli indicatori in quanto per la maggior parte del tempo il suo valore è 0, con solo un numero occasionale non nullo..... che lo rende quasi inutilizzabile nella forma standard iCustom.....
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Voglio scrivere un EA utilizzando questo indicatore Advanced ADX... Come posso estrarre il valore e il colore dall'indicatore...
Comprare
ADX colore verde e (ADX questa ora> ADX ora precedente)
Vendere
ADX colore rosso e (ADX questa ora< ADX ora precedente)
Ho provato a codificare per conto mio. La codifica è corretta con la mia regola?
thx
sonic
for (i = Bars - 205; i >= 0; i --)
{
double adx1 =iCustom(NULL, 0, "Advanced_ADX",13,0,i);
double adx2 =iCustom(NULL, 0, "Advanced_ADX",13,1,i);
if ((adx1>adx2)&&(adx1 > adx1) // BUY
{ BUY routine}
if ((adx1<adx2)&&(adx1 < adx1) // SELL
{ SELL routine}
}Indicatore ICustom EA
//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.2;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 27;
extern bool UseTakeProfit = True;
extern int TakeProfit = 34;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double Buy1_1 = iOBV(NULL, 0, PRICE_LOW, Current + 0);
double Buy1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);
double Sell1_1 = iOBV(NULL, 0, PRICE_HIGH, Current + 0);
double Sell1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 != Buy1_2) Order = SIGNAL_BUY;
if (Sell1_1 != Sell1_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+----------------------------------------------------------------ciao
questa è la mia strategia
doppio Buy1_1 = iOBV(NULL, 0, PRICE_LOW, Current + 0);
double Buy1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);
double Sell1_1 = iOBV(NULL, 0, PRICE_HIGH, Current + 0);
double Sell1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);
voglio che quando il mio indicatore personalizzato attraversa la linea obv venda o compri il mercato
ma
non funziona
cosa c'è di sbagliato nel codice ?_
Indi a 2 colori
Ciao a tutti,
L'indi in basso (Complex_Pairs1) ha solo un colore. Qualcuno potrebbe aiutarmi e cambiarlo in 2 colori. Blu per salire e rosso per scendere. Proprio come l'indi sul grafico (Execute Line).
Ho provato molto duramente a cambiare il codice da solo, ma senza successo.
Dopo la compilazione non ci sono stati errori, ma non succede nulla quando provo ad aprire l'indi.
Questo è probabilmente un pezzo di torta per tutti voi codificatori esperti, e spero di poter imparare da questo.
Grazie!
Klondyke
Cercare un documento o un thread del forum?
Ciao, ho provato a cercare una guida utente o un thread del forum in google su come tracciare un indicatore personalizzato in un esperto. In realtà voglio una info su come utilizzare al meglio la funzione iCustom e un paio di esempi .... Grazie in anticipo!
Ho spostato il tuo thread nel thread delle funzioni iCustom.
Spero che troverai tutto.
Guarda anche questo post https://www.mql5.com/en/forum
Ho capito il punto grazie gente!
qualcuno sa come aggiungere a mQL ea
l'indicatore zig zag utilizzando la funzione icustom.
Ho provato
double x = iCustom(NULL,PERIOD_M5, "ZigZag",3,0,0);
ma sto ottenendo una varietà di numeri nella mia funzione di stampa.
Ho anche provato una varietà di numeri.
Qualsiasi aiuto è apprezzato.
qualcuno sa come aggiungere a mQL ea
l'indicatore zig zag usando la funzione icustom.
Ho provato
double x = iCustom(NULL,PERIOD_M5, "ZigZag",3,0,0);
ma sto ottenendo una varietà di numeri nella mia funzione di stampa.
Ho anche provato una varietà di numeri.
qualsiasi aiuto è apprezzato.Un modo è: iCustom(NULL,0, "ZigZag",profondità,deviazione,backstep,0,1)
zigzag
ajk....... zigzag differisce dalla maggior parte degli indicatori in quanto per la maggior parte del tempo il suo valore è 0, con solo un numero occasionale non nullo..... che lo rende quasi inutilizzabile nella forma standard iCustom.....
// ---> zig = iCustom(NULL,0, "ZigZag",15,5,3, 0, i);
per essere utile dovrete quasi certamente creare un array per memorizzare tutti i numeri "non zero"..... come;
se(zig>0)
{
zag[n] = zig;
}
allora puoi fare il comune
if(zag[1] > zag[2]) // fai questo
else // oppure
if(zag[1] < zag[2]) // fai così
//------------
c'è un po' di più, ma questa è l'idea di base.....h
Bisogno di aiuto
ciao...
ho trovato il Univeral MA Cross EA...
è un bel EA ...