Un asesor que seguiría la tasa en un gráfico de cinco minutos con condiciones después del lanzamiento: - página 6

 

Buen día.

Pueden aconsejar: Hay un script que escribe puntualmente el historial en el archivo, pero cuando se abre el archivo el registro no va.... El script que probablemente conoces o has visto se llama currency_loader

// cargar los datos del historial de M1
void LoadingM1(){//1
int MaxBars=MaxBarsInFile;
if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0);}
if(ArrSizeM1>1){//2
if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}
for(i2=1; i2<=Tryes; i2++){//3
h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV);
if(h1==-1){LastError=GetLastError();Info("1.2",1"," Hay un error al abrir el archivo: "+NombreDeArchivoM1+" en "+i2+" Pruebe "+DescripciónDelError(ÚltimoError));Pausa=Pausa+Pausa; Sleep(Pausa); continue; }else{Info("1.2",2", "Archivo "+NombreDeArchivoM1+" abierto con éxito");}
FileWrite(h1,FirstLine);
for (i=MaxBars-1; i>=0; i-- ){//4
if(!USRegionSet){
CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+""; // fecha del bar
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // hora de la barra
}
si no{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" "; // fecha de la barra
BarTime=0;
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // precio de apertura
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // Precio alto
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // Precio bajo
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+""; // Precio de cierre
FileWrite(h1,CString);
CString="";
}//4
FileClose(h1);
LCM1 = iTime(Symbol(),PERIOD_M1,0);
volver;
}//3
}//2
}//1


Por lo que he entendido hay un problema en las asas, pero donde está la pregunta...

 
Probado EA, muestra beneficios con los siguientes parámetros, aquí está el código:
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern double StopLoss=30;                          // Stop Loss
extern double TakeProfit=3;                         // Take Profit
extern double Lots=0.02;                          // Объем сделки в %
extern double Slippage =4;                         // Максимальное отклонение от запрошенной цены
extern double Delta=30;                             // Сигнал приказа в пунктах
extern double MagicNumber ;                   // Order ID
int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
¡¡¡¡Sigue sin funcionar!!!!
Ayúdame a entender cuál es la razón.
 

¿Cómo lo has probado? ¿Y cómo se puede obtener un beneficio si no funciona? ¿Y cómo no funciona? ¿Qué imprime la revista? ¿Lo has probado dónde, en el probador? ¿O en línea?

Además, mira la función OrdersTotal, para qué sirve y cómo se inserta por....

Por ejemplo, int total=OrdersTotal(); if(total<1) {

 
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //El precio ha caído más que los puntos Delta
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //El precio subió más que los puntos Delta
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Y tú eres un tipo insistente, lo entiendes. Funciona, pero es una estupidez. Cópialo en el MetaEditor, o volverás a confundir el + con el -.
 


Por lo que tengo entendido, el problema está en alguna parte de las asas, pero dónde está la cuestión...

Este es un ejemplo de cómo obtener Handle
int hwnd1 = WindowHandle(Symbol(), Period());
No he notado nada similar en su código.
Si un archivo "csv" es abierto por Excel, está bloqueado y el archivo no tiene acceso de escritura, ¿es un misterio?
 
rid:

¿Cómo lo has probado? ¿Y cómo se puede obtener un beneficio si no funciona? ¿Y cómo no funciona? ¿Qué imprime la revista? ¿Lo has probado en el probador? ¿O en línea?

Además, mira la función OrdersTotal, para qué sirve y cómo se inserta por....

Por ejemplo, int total=OrdersTotal(); if(total<1) {

Probado con un probador, ¿cómo si no? :)
Muestra un beneficio de 504, un número de operaciones de 432, una reducción de 788 dólares, un 7,31%. En ajustes pongo m5 en libra, 17/03/08 - 19/03/08.
Y cuando lo ejecuté en el gráfico, mis condiciones para las operaciones se cumplieron, pero el Asesor Experto no hizo nada.......
 
zhuki:
int inicio()
{


//----
si (iOpen(NULL,5,0)-Oferta>Delta*Punto) //El precio ha caído más que los puntos Delta
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green)

}
if (iOpen(NULL,5,0)-Bid<Delta*Punto) //El precio subió más que los puntos Delta
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Y tú eres un tipo obstinado, lo entiendes. Funciona, pero es una estupidez. Cópialo en el MetaEditor, o volverás a confundir el + con el -.
¡¡¡¡¡¡Urgh!!!!!! Muchas gracias. Está funcionando.
 
Cuando termines tu GRAAL, al menos comparte la idea.
 
Me da vergüenza preguntar :)))
¿Cómo puedo hacer que mi Asesor Experto abra sólo una operación y no abra otras hasta que termine?
 
salesman77:
Me da vergüenza preguntar :)))
¿Cómo puedo hacer que mi Asesor Experto abra sólo una operación, y hasta que termine, no abra otras?

Organiza en un bucle una búsqueda de todas las posiciones abiertas y comprueba en ellas el símbolo actual y el número mágico. Si no se encuentra ninguno, entonces encendemos la luz verde. El kodobase está lleno de estos ejemplos, en casi todos los EA.