Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 356

 
He intentado cambiar los parámetros MA1_Shift=1 de ambos muwings. Parece que ayuda. Lo probaré en el momento.
 
okidoki543:
Gracias, pero me gustaría una solución precisa. Para que no se cuente la barra actual, sino sólo las anteriores.

Para tener una solución exacta, necesitas tu código, del que quieres obtener una solución exacta. Pero no tienes el código. Así que tampoco tienes una solución...
 
всokidoki543:
Gracias, pero me gustaría una solución precisa. Para que no se tenga en cuenta la barra actual, sino sólo las anteriores.


Maldita sea, me he metido en el código de otra persona, de nuevo a golpe de vista tratar de cambiar esta pieza. En este caso probablemente PRICE_CLOSE o 0 debería ser...

   MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1);    // Текущее    значение 1-й МА
   MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 2);    // Предыдущее значение 1-й МА
   MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1);    // Текущее    значение 2-й МА
   MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 2);    // Предыдущее значение 2-й МА
 

Aquí está el código, cambió los turnos de 0 a 1. ¿Ayudará eso?

//============================================================================================
//
//
//
//
//
//============================================================================================
inttern MA1_Period=7; // 1er periodo MA
extern int intMA2_Period=13; // Periodo de la 2ª MA
extern int MA1_Method=1; // Método de cálculo MA1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=1; // Método de cálculo de MA2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA1_Price=0; // Método de cálculo del precio MA1
extern int MA2_Price=0; // Método de cálculo del precio MA2
extern int MA1_Shift=1; // Desplazamiento temporal de MA1
extern int MA2_Shift=1; // Desplazamiento temporal de MA2
extern double Lote = 0,01; // Lote fijo
extern int slippage = 0; // Desviación del precio para órdenes de mercado
int New_Bar; // 0/1 Formación de una nueva barra
int Tiempo_0; // Hora de inicio de un nuevo compás

int PosClose; // Dirección de cruce
int total; // Número de órdenes abiertas
double MA1_0; // Valor actual de la 1ª МА (rosa)
double MA1_1; // Valor anterior de la 1ª MA (rosa)
double MA2_0; // Valor actual de la 2ª MA (azul)
double MA2_1; // Valor anterior de la 2ª MA (azul)
int ordenCompra; // 1 = hecho de la presencia de la orden de compra
int orderSell; // 1 = hecho de la presencia de la orden de venta
//============================================================================================
int init()
{

}
//============================================================================================
int inicio()
{

doble precio;

int total=OrdersTotal(); // total de pedidos
for(int i=total-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Seleccionar orden
{
if(OrderType()==OP_BUY) // si es una orden de compra
{
orderBuy=1;
if(CrossPositionClose()==1) // Cerrar la orden si se cumple
{ // condición CrossPositionClose()=1
price=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
if(OrderType()==OP_SELL) // Si se trata de una orden de compra
{
orderSell=1;
if(CrossPositionClose()==2) // Cerrar la orden si se cumple
{ // condición CrossPositionClose()=2
price=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
}
}

New_Bar=0; // Vamos a ponerlo a cero primero
if (Time_0 != Time[0]) // Si la hora de inicio de la barra ya es diferente
{
New_Bar= 1; // Aquí hay una nueva barra
Time_0 = Time[0]; // Recuerda la nueva hora de inicio de la barra
}

MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // Valor actual de la 1ª MA
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // Valor anterior de la 1ª MA
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // Valor actual de la 2ª MA
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // Valor anterior de la 2ª MA


volver;
}

//============================================================================================
int PosiciónCruzadaCerrada()
{
PosClose=0; // ¡¡¡Aquí es donde se entierra el perro!!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // CrossPosition Close {
{
PosClose=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Intersección descendente
{
PosClose=2;
}
return(PosClose); // devuelve la dirección de la intersección.
}
//============================================================================================

//============================================================================================
int MAMethod(int MA_Method)
{
switch(MA_Método)
{
caso 0: return(0); //retorno MODE_SMA=0
caso 1: return(1); // devolver MODE_EMA=1
caso 2: return(2); // Devuelve MODE_SMMA=2
caso 3: return(3); //retorno MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
switch(MA_Price)
{
caso 0: return(PRICE_CLOSE); // Devuelve PRICE_CLOSE=0
caso 1: return(PRICE_OPEN); //retorno PRICE_OPEN=1
caso 2: return(PRECIO_ALTO); //retorno PRECIO_ALTO=2
caso 3: return(PRICE_LOW); //retorno PRICE_LOW=3
caso 4: return(PRICE_MEDIAN); //retorno PRICE_MEDIAN=4
caso 5: return(PRECIO_TIPICO); //retorno PRECIO_TIPICO=5
caso 6: return(PRICE_WEIGHTED); //retorno PRICE_WEIGHTED=6
}
}
//============================================================================================

 
Sepulca, ya lo he intentado, el compilador lo jura.
 
okidoki543:
Sepulca, ya lo he intentado, el compilador lo jura.

No puede ser, voy a probarlo yo mismo......
 
Mierda, ahora no es un insulto. Perdón por la confusión. El error salía antes por alguna razón. (
 
No se puede decir nada .... Prueba por ti..... Ya hice cambios, que el autor me perdone....
Archivos adjuntos:
 
Tengo dos mensajes del foro abiertos con un clic a la vez, o mi ratón está traqueteando o algo así. Tengo que borrarlo de nuevo más tarde......Pero voy a revisar este post....
 

Sepulca, gracias, tu código funciona. Sólo que he puesto los turnos en su sitio.

Lo comprobaré en plazos más largos, lo torturaré durante unos días para estar seguro de que este código funciona.