Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Quiero escribir un EA utilizando este indicador ADX avanzado... ¿Cómo puedo extraer el valor y el color del indicador...
Comprar
ADX color verde y (ADX esta hora> ADX hora anterior)
Vender
ADX color rojo y (ADX esta hora< ADX hora anterior)
He probado abit en la codificación por mi cuenta. ¿La codificación es correcta con mi regla?
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}
}ICustom Indicador 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);
}
//+----------------------------------------------------------------hola
esta es mi estrategia
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);
quiero que cuando mi indicador personalizado cruce la línea obv venda o compre el mercado
pero
no funciona
¿qué es lo que falla en el código?
Indi de 2 colores
Hola a todos,
El indi del fondo (Complex_Pairs1) sólo tiene un color. Podría alguien ayudarme, y cambiarlo a 2 colores en su lugar. Azul para subir, y Rojo para bajar. Al igual que el indi del gráfico (Execute Line).
He intentado por todos los medios cambiar el código yo mismo, pero sin éxito.
Después de compilar no hay errores, pero no pasa nada cuando intento abrir el indi.
Esto es probablemente un pedazo de la torta para todos los codificadores expertos, y espero que pueda aprender de ella.
¡Gracias!
Klondyke
¿Buscando un documento o un hilo del foro?
Hola, he tratado de buscar una guía de usuario o un hilo del foro en Google sobre cómo trazar un indicador personalizado en un experto. En realidad quiero una información de cómo utilizar mejor la función iCustom y un par de ejemplos .... ¡Gracias de antemano !
He movido tu hilo al hilo de funciones de iCustom.
Espero que lo encuentres todo.
También mira este post https://www.mql5.com/en/forum
Ya entendí el punto, gracias amigos.
¿alguien sabe cómo añadir a mQL ea
el indicador zig zag utilizando la función icustom.
He intentado
double x = iCustom(NULL,PERIOD_M5, "ZigZag",3,0,0);
pero estoy obteniendo una variedad de números en mi función de impresión.
También he probado una variedad de números.
cualquier ayuda es apreciada.
¿alguien sabe cómo añadir a mQL ea
el indicador de zig zag utilizando la función icustom.
He probado
double x = iCustom(NULL,PERIOD_M5, "ZigZag",3,0,0);
pero estoy obteniendo una variedad de números en mi función de impresión.
También he probado una variedad de números.
cualquier ayuda es apreciada.Una forma es: iCustom(NULL,0, "ZigZag",depth,deviation,backstep,0,1)
zigzag
hey ajk....... zigzag difiere de la mayoría de los indicadores en que la mayor parte del tiempo su valor es 0, con sólo un número ocasional distinto de cero..... que lo hace casi inutilizable en la forma estándar de iCustom.....
// ---> zig = iCustom(NULL,0, "ZigZag",15,5,3, 0, i);
para que sea útil es casi seguro que tendrás que crear un array para almacenar todos los números "no nulos"..... como;
if(zig>0)
{
zag[n] = zig;
}
entonces puedes hacer lo común
if(zag[1] > zag[2]) // haz esto
si no // o
if(zag[1] < zag[2]) // hacer esto
//------------
hay un poco más, pero esa es la idea básica.....h
Necesito ayuda
Hola...
He encontrado el Univeral MA Cross EA ..
es un buen EA ..