![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
estudiar los gráficos de 2010
utilizando su plantilla para crear algo -- sobre la liga de Estocástico
como hemos utilizado nuestros gráficos estocásticos en los primeros días -- ¿todavía se aplica a los gráficos de 2010 -- esos son los comerciantes reales, brote y usted podría tener sus asignaciones -- estoy en la programación de matemáticas integrales de lebesgue sin bandas -- recordar la película Ella está fuera de mi liga --- buen trabajo significa buena paga -----
leer los códigos -- un poco menos sofisticado que el estilo de inversión actual en 2010
He probado casi todas las combinaciones posibles del maldito fallo del paréntesis que me sale al intentar compilar. He estado mirando durante muchas horas pero no he tenido suerte en arreglarlo. He descubierto que es una sección de código lo que está arruinando el script. Alguien me aconseja sobre lo que está mal (aparte de que soy un idiota).
void ScanForClosure ()
{
int efectivo = OrderProfit() + OrderSwap() + OrderCommission()
int MacdCurrent, MacdPrevious, SignalCurrent;
int SeñalAnterior, MaCorriente, MaAnterior;
int total2 = OrdersTotal();
int numords2 = 0;
bool tipo = false;
int trd2 = 0;
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRECIO_CERRADO,MODO_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
ArrayResize(últimosPedidos,5);
ArrayInitialize(últimosPedidos,0);
//
for(int cnt=0; cnt<total2; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) ;
{
si ((OrderType()==OP_BUY)&&
(MacdCurrent>0)&&
(MacdCurrent<SignalCurrent)&&
(efectivo > 0)&&
(MacdPrevious>SignalPrevious) && MacdCurrent>(MACDCloseLevel*Point));
{
CloseOrder(1);
}
si ((OrderType()==OP_SELL)&&
(efectivo > 0)&& (MacdCurrent<0 ) &&
(MacdCurrent>SignalCurrent)&&
(MacdPrevious<SignalPrevious)&&
(MathAbs(MacdCurrent))>(MACDCloseLevel*Point));
{
CloseOrder(2);
}
}
}
}Hola Scotty,
Estoy copiando del ejemplo de macd
if(OrderType()==OP_BUY)
{
if(MacdCurrent>0 && cash > 0 && MacdCurrentSignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
si no
{
if(MacdCurrent 0 && MacdCurrent>SignalCurrent &&
MacdPrevious(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // cerrar posición
return(0);
}
Saludos
herramientas
por qué este código da un error de recuento de parámetros incorrecto:
for(int i = 0;i < 3;i++)
{
kline = iStochastic(NULL,TimeFrame1, Period(), 4, 3, 3, MODE_SMA, 1, MODE_MAIN, i);
dline = iStochastic(NULL,TimeFrame1, Period(), 4, 3, 3, MODE_SMA, 1, MODE_SIGNAL, i);
}Debería ser
int barras_contadas = IndicadorContado();
int límite,i;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = Bares - counted_bars;
for(int i=limit; i>=0; i--)
{
kline = iStochastic(NULL,TimeFrame1, 4, 3, 3, MODE_SMA, 1, MODE_MAIN, i);
dline = iStochastic(NULL,TimeFrame1, 4, 3, 3, MODE_SMA, 1, MODE_SIGNAL, i);
Saludos
herramientas
Gracias Sr. Tools tal vez lo estaba haciendo demasiado complejo, pero ¿qué tenía de malo? ¿El ejemplo publicado escanea todos los tickets abiertos? Creo que sólo escanearía 2 (una sola compra y una sola venta), probablemente la misma cada vez :/ Soy muy nuevo en esto de la programación de mt4 pero estoy seguro de que eso es lo que sucedería.
Lo he resuelto.
es increíble que te quedes mirando el mismo problema durante 10 horas seguidas y no puedas arreglarlo. Lo miré de nuevo. Cuando me desperté y lo arreglé en 5. Parece que el código de MT4 es muy ajustado. Parece que necesita para codificar precisamente lo que su búsqueda (si es o no se puede hacer exactamente lo mismo en otros 10 idiomas y el trabajo)
He creado bots para World of Warcraft para hacer que un personaje corra por sí mismo en un juego localizando y matando cosas, sin embargo, cuando trato de hacer una simple rutina de compra y venta en MT4 me cuesta.![](https://c.mql5.com/forextsd/smiles/frown.png)
De todos modos la lección para mí fue limitar lo que se pone en una línea con un si. Espero ahorrarle a otros el dolor que yo tuve.
OrderSelect(cnt, SELECT_BY_POS);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType()==OP_BUY)
si (beneficio>0)
if (MacdCurrent<SignalCurrent)
si (MacdCurrent>0)
si (MacdPrevious>SignalPrevious)
si (MacdCurrent>(MACDCloseLevel*Point))
{
CloseOrder(1);
}
if (OrderType()==OP_SELL)
if ((MacdCurrent<0 ) )
if (profit >0 )
if (MacdCurrent>SignalCurrent)
if (MacdPrevious<SignalPrevious)
si (MathAbs(MacdCurrent) >(MACDCloseLevel*Point))
Ayuda con el código - Fractales
Hola a todos,
Estoy buscando ayuda sobre el código necesario para hacer lo siguiente como parte de un sistema en el que estoy trabajando:
Válido largo si:
(numerado de más antiguo a más reciente 1-x)
-> Fractal que apunta hacia abajo 1 mayor que el Fractal que apunta hacia abajo 2
-> Fractal Up 1 se forma y crea la condición de break-long posible, sin embargo
-> Fractal Bajada 3 es tiene que ser mayor que el Fractal Bajada 2
-- Esto valida el cambio de tendencia. Una ruptura del precio hacia arriba del fractal superior sería un TRUE válido. Si se forma un nuevo Fractal Superior más bajo, ese es el nuevo punto de ruptura A MENOS que haya un Fractal Down más bajo que el Fractal Down anterior. Los Fractales inferiores deberían hacer máximos más altos.
Lo contrario es cierto para la validación a corto plazo.
Saludos
Aaron
Puedo tratar de explicar un poco mejor![](https://c.mql5.com/forextsd/smiles/smile.png)
Así que hay una tendencia alcista en el precio, se forma un fractal superior. El precio retrocede y se forma un fractal inferior. El precio sigue retrocediendo y se forma otro fractal inferior.
A continuación, el precio sube y se forma un nuevo fractal superior inferior.
El precio retrocede y se forma otro fractal inferior, pero éste es más alto que el fractal inferior anterior.
El precio rompe el fractal superior anterior, condición de ruptura de largo válida.
PS Si se forma un nuevo fractal superior inferior, pero los fractales inferiores siguen haciendo máximos, el nuevo punto de ruptura es el fractal superior más reciente.
PPS Si los fractales inferiores comienzan a formarse, las condiciones se restablecen y seguimos buscando las condiciones anteriores o las condiciones inversas para la validación en corto de una ruptura.
Saludos
Aaron
¿Y qué ayuda necesita exactamente para la programación? ¿Necesita que le programen todo el sistema?
Sólo esa parte lógica.
Digamos un bool que es ValidBuy = FALSE;
si la lógica de la condición como la anterior se establece en TRUE.
Estoy seguro de que es un array entonces comparar los valores de la matriz, pero no soy tan grande cuando se trata de la codificación de las matrices.
Saludos
Aaron
No es necesario utilizar ninguna matriz. Sólo hay que crear una función que encuentre el nivel de un fractal dado, para poder llamarlo así:
first parameter being number of fractal (0-last, 1-one before last, etc.) and second parameter telling if you want upper or lower fractal.
Then, you can code like this:
[CODE]double last_lower_fractal = FindFractal( 0, MODE_LOWER );
double previous_lower_fractal = FindFractal( 1, MODE_LOWER );
if( last_lower_fractal > previous_lower_fractal )
{
//we have found that most recent lower fractal is higher than its predecessor, do rest of your logic here.
}