[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 412
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
Buenos días a todos! mientras escribía un experto en meneo, estaba buscando puntos de salida más precisos y me encontré con un cruce entre el RSI (8) y el ADX(25). visualmente todo está bien cuando se opera manualmente en la demo.
Pregunta cómo escribir la condición de intersección de RSI (8) con ADX(25) DI + por ejemplo si, RSI (8) tiene un límite de 0 a 100, y ADX(25) no tiene límite. es decir, si usted lanza ADX en el gráfico sin límite y luego lanza RSI en él, entonces RSI escala por ADX máximo y mínimo. si ADX especificar límite de 0 a 100, entonces hay muy pocas intersecciones claras ADX con RSI.
¿Es posible definir el valor del RSI cuando es escalado por el ADX?
No
¿Es posible definir el valor del RSI cuando es escalado por el ADX?
Tengo un indicador con unos 8 parámetros, he introducido todos los parámetros correctamente, lo he comprobado varias veces, pero en la compilación sigue apareciendo el error ')' - recuento de parámetros erróneos D:\NInstaTrader\Nexperto_2.mq4 (11, 280)
¿Existe un límite en el número de parámetros de un indicador no estándar, cuando se conecta a través de iCustom?
Tengo un indicador con unos 8 parámetros, he introducido todos los parámetros correctamente, lo he comprobado varias veces, pero en la compilación sigue apareciendo el error ')' - recuento de parámetros erróneos D:\NInstaTrader\Nexperto_2.mq4 (11, 280)
????... si no le importa, dé una respuesta más detallada... y sería genial si pudieras dar al menos algún script sencillo como ejemplo, que ayude a entender para qué sirve la función WindowHandle
Con tu nivel actual de conocimientos, no lo necesitas mucho.
Si tienes el deseo de convertirte en programador, entonces mastica la ciencia con la ayuda de Google. Consulta "descriptor de ventana site:mql4.com"
Le pido al gurú de la programación que me diga sobre mi pregunta, ¿es siquiera realista hacer este asesor?
Todo es posible, si así lo quieres.
ver las siguientes cosas:
1) Control de apertura de la barra
2) OrderSend
Prueba y prueba, y los gurús corregirán
Aquí hay un EA para hacer que la orden se abre en el CIERRE de la vela, no sólo una cruz.
Que ayudará de antemano gracias.
//+------------------------------------------------------------------+
//| RSI_MA.mq4 ||
//| Copyright © 2008, AEliseev k800elik@gmail.com |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Andrey E. k800elik@gmail.com"
#enlace de propiedad "http://www.metaquotes.net"
//---- parámetros de entrada
extern CCI_Per=14;
extern MA_Per=20;
extern CCI_close_Per=14;
extern double TakeProfit=500;
extern double StopLoss=150;
extern double Lots=0.01;
Depósito externo inttern=1000;
extern bool MM=false;
extern inttern _NúmeroMágico=1313;
extern int_Sleep=5000;
int LotA=1, Err=0;
int j=0; var2,var1;
int contador=0;
int ticket;
bool var3;
bool order=false;
//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
Comentario ("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com");
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
/* int i, a1, a2;
//----
if (OrdersTotal()>0)
{
for (i=0; i==OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS);
if (OrderMagicNumber()==131313)
{
a1=CierreDeOrden(LoteA*Lotes,Pregunta,5,Rojo);
//a2=Cierre de la orden(var1,LoteA*Lotes,Pregunta,5,Rojo);
}
}
} */
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{
//----
si (isNewBar()) EveryBar();
EveryTick();
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Comprueba si hay una nueva barra |
//+------------------------------------------------------------------+
bool isNewBar()
{ static datetime TimeBar=0;
bool flag=false;
if(TimeBar!=Time[0])
{
TimeBar=Time[0];
flag=true;
}
return(flag);
}
//+------------------------------------------------------------------+
//| Ejecutar la acción cuando aparezca una nueva barra ||
//+------------------------------------------------------------------+
void EveryBar()
{
// Print("¡Ha llegado un nuevo bar!")
double MA[100], CCI[100], CCIclose[100], StandDevi[100];
int i,limit=Tamaño de la matriz(CCI);
doble SL, TP;
Dormir(_Dormir);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
for(i=0; i<limit; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
// comprueba si hay suficiente dinero para abrir un nuevo pedido
if(AccountFreeMargin()<(1000*Lots))
{
Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());
return(0);
}
//=================================================================================
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
//---- repasar todos los puestos vacantes
for ( int z = _TotalPedidos - 1; z >= 0; z -- )
{
//---- si se produce un error en la selección de la posición, se pasa a la siguiente
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continuar;
}
// si una posición se abre no para el símbolo actual, se salta
si ( OrderSymbol() != Symbol() ) continuar;
// si el MagicNumber no es igual a _MagicNumber, salta
// esta posición
if ( OrderMagicNumber() != _MagicNumber ) continue;
//---- si una posición BAY está abierta,
if ( OrderType() == OP_BUY )
{
//---- si el CCI cruza la línea 190 hacia abajo
if (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])
{
//---- posición de cierre
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )
{
_GetLastError = GetLastError();
Print("Error de OrderClose # , _GetLastError );
Err=1;
return(-1);
}
}
// si la señal no ha cambiado, salir - es demasiado pronto para abrir
//nueva posición
si no
{ return(0); }
}
//---- si se abre una posición de venta,
if ( OrderType() = OP_SELL )
{
//---- si el CCI cruza la línea -190 hacia arriba,
if (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])
{
//---- posición de cierre
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ) )
{
_GetLastError = GetLastError();
Print("Error de OrderClose # ", _GetLastError );
Err=2;
return(-1);
}
}
// si la señal no ha cambiado, salir - es demasiado pronto para abrir
// nueva posición
si no, return(0);
}
}
//+------------------------------------------------------------------+
//| si la ejecución ha llegado a este punto, no hay ninguna posición abierta
//| comprobar si es posible abrir una posición ||
//+------------------------------------------------------------------+
Dormir(_Dormir);
//---- si el CCI ha cruzado el MACD de abajo a arriba,
SL = NormalizeDouble(Bid - StopLoss*Point, Digits);
TP = NormalizeDouble(Oferta + TakeProfit*Punto, Dígitos);
si ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<MA[limit-MA_Per-2])
{
//---- abrir posición BAY
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Print( "OrderSend OP_BUY error # ", _GetLastError );
Err=3;
return(-1);
}
return(0);
}
//---- si el CCI ha cruzado el MACD de arriba a abajo,
SL = NormalizeDouble(Ask + StopLoss*Point, Digits);
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits);
si ((CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>MA[limit-MA_Per-2])
{
//---- abrir una posición de venta
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Print("OrderSend OP_SELL error # ", _GetLastError );
Err=4;
return(-1);
}
return(0);
}
}
//+------------------------------------------------------------------+
//| Realiza los cálculos en cada cambio de precio |
//+------------------------------------------------------------------+
void EveryTick()
{
int i;
si (MM==true)
{
si (AccountBalance()>(2*Deposit)) LoteA=2;
si (AccountBalance()>(3*Deposit)) LoteA=3;
si (AccountBalance()>(4*Deposit)) LoteA=4;
si (AccountBalance()>(5*Deposit)) LoteA=5;
si (AccountBalance()>(6*Deposit)) LoteA=6; if (AccountBalance()>(6*Deposit); LotA=6;
si (AccountBalance()>(7*Deposit)) LoteA=7;
si (AccountBalance()>(8*Deposit)) LoteA=8;
si (AccountBalance()>(9*Deposit)) LoteA=9;
si (AccountBalance()>(10*Deposit)) LoteA=10;
si (AccountBalance()>(11*Deposit)) LoteA=11;
si (AccountBalance()>(12*Deposit)) LoteA=12;
si (AccountBalance()>(13*Deposit)) LoteA=13;
si (AccountBalance()>(14*Deposit)) LoteA=14;
si (AccountBalance()>(15*Deposit)) LoteA=15;
si (AccountBalance()>(16*Deposit)) LoteA=16;
si (AccountBalance()>(17*Deposit)) LoteA=17;
si (AccountBalance()>(18*Deposit)) LoteA=18;
si (AccountBalance()>(19*Deposit)) LoteA=19;
si (AccountBalance()>(20*Deposit)) LoteA=20;
}
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
int z;
doble SL, TP;
double MA[100], CCI[100], CCIclose[100], StandDevi[100];
int limit=Tamaño de la matriz(CCI);
for(i=0; i<limit; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
switch(Err)
{
caso 1:
for ( z=_OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continuar;
}
si ( OrderSymbol() != Symbol() ) continuar;
if ( OrderMagicNumber() != _MagicNumber ) continue;
if ( OrderType() == OP_BUY )
{
if (((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])
{
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
{
_GetLastError = GetLastError();
Print("CASE OrderClose error # , _GetLastError );
Err=1;
return(-1);
}
Si no, Err=0;
}
}
}
romper;
//=============================================================================
caso 2:
for ( z=_OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continuar;
}
si ( OrderSymbol() != Symbol() ) continuar;
if ( OrderMagicNumber() != _MagicNumber ) continue;
if ( OrderType() = OP_SELL )
{
if (((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])
{
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) )
{
_GetLastError = GetLastError();
Print("CASE OrderClose error # ", _GetLastError );
Err=2;
return(-1);
}
Si no, Err=0;
}
}
}
romper;
//==============================================================================
caso 3:
SL = NormalizeDouble(Bid - StopLoss*Point, Digits);
TP = NormalizeDouble(Oferta + TakeProfit*Punto, Dígitos);
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Print( "CASE OrderSend OP_BUY error # ", _GetLastError );
Err=3;
return(-1);
}
Si no, Err=0;
romper;
//===================================================================================
caso 4:
SL = NormalizeDouble(Ask + StopLoss*Point, Digits);
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits);
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Print("CASE OrderSend OP_SELL error # ", _GetLastError );
Err=4;
return(-1);
}
Si no, Err=0;
romper;
}
}
Aquí hay un EA para hacer que la orden se abre en el CIERRE de la vela, no sólo una cruz.
Me gustaría saber cómo abrir el pedido.
¿Y cómo piensas saber que la barra se cerrará con este tick? ¿Tal vez por la apertura de un nuevo bar?
El código se inserta mediante el botón SRC