Um assessor que seguiria a tarifa em um gráfico de cinco minutos com condições após o lançamento: - página 6

 

Bom dia.

Você pode aconselhar: Há um roteiro que escreve prontamente o histórico no arquivo, mas quando o arquivo é aberto, o registro não vai.... O script que você provavelmente conhece ou já viu é chamado de currency_loader

// dados do histórico de carga da M1
CarregamentoM1(){//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"," Há um erro ao abrir o arquivo: "+FileNameM1+" em "+i2+" Tente "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1.2",2", "Arquivo "+FileNameM1+" aberto com sucesso ");}
FileWrite(h1,FirstLine);
para (i=MaxBars-1; i>=0; i-- ){//4
if(!USRegionSet){
CString=CString+TimeToString(ArrayM1[i][0],TIME_DATE)+""; // data do bar
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // tempo de barra
}
senão{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" "; // data do bar
BarTime=0;
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // preço aberto
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // Preço alto
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // Preço baixo
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+""; // Preço fechado
FileWrite(h1,CString);
CString="";
}//4
FileClose(h1);
LCM1 = iTime(Symbol(),PERIOD_M1,0);
retornar;
}//3
}//2
}//1


Tanto quanto entendi, há um problema nos cabos, mas onde está a questão...

 
EA testado, mostra lucro com os seguintes parâmetros, aqui está o 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);
}
//+------------------------------------------------------------------+
Ainda não está funcionando!!!!
Ajude-me a entender qual é a razão.
 

Então, como você o testou? E como é que isso mostra um lucro se não funciona? E como isso não funciona? O que a revista imprime? Você o testou no testador? Ou online?

Veja também a função OrdersTotal, para que serve e como é inserida por....

Por exemplo, int total=OrdensTotal(); if(total<1) {

 
int start()
{


//
if (iOpen(NULL,5,0)-Bid>Delta*Point) //O preço caiu mais que os pontos Delta
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green);

}
se (iOpen(NULL,5,0)-Bid<Delta*Point) //O preço subiu mais que os pontos Delta
{
ticket=OrderSend(Symbol(),OP_SELLL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
//+
+ E você é um cara insistente, entenda. Funciona, mas é simplesmente estúpido. Copie-o para MetaEditor, ou você vai misturar o + com o - novamente.
 


Tanto quanto sei, o problema está em algum lugar nas alças, mas onde está a questão...

Aqui está um exemplo de como se pode ter o Handle
int hwnd1 = WindowHandle(Symbol(), Period());
Não notei nada semelhante em seu código.
Se um arquivo "csv" é aberto pelo Excel, ele é bloqueado e o arquivo não tem acesso de escrita, é um mistério?
 
rid:

Então, como você o testou? E como é que isso mostra um lucro se não funciona? E como isso não funciona? O que a revista imprime? Você o testou no testador? Ou online?

Veja também a função OrdersTotal, para que serve e como é inserida por....

Por exemplo, int total=OrdensTotal(); if(total<1) {

Testado com um testador, de que outra forma? :)
Mostra lucro 504, número de negócios 432, drawdown $788, 7,31%. Em ambientes que coloquei m5 em libras, 17/03/08 - 19/03/08.
E quando eu corri na tabela, minhas condições para o comércio foram atendidas, mas o Consultor Especialista não fez nada.......
 
zhuki:
int start()
{


//----
se (iOpen(NULL,5,0)-Bid>Delta*Point) //O preço caiu mais do que os pontos Delta
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green)

}
se (iOpen(NULL,5,0)-Bid<Delta*Point) //O preço subiu mais que os pontos Delta
{
ticket=OrderSend(Symbol(),OP_SELLL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
retorno(0);
}
//+------------------------------------------------------------------+
E você é um cara teimoso, entenda. Funciona, mas é simplesmente estúpido. Copie-o para o MetaEditor, ou você vai misturar o + com o - novamente.
Urgh!!!!!! Muito obrigado. Está funcionando.
 
Quando você terminar seu GRAAL, pelo menos compartilhe a idéia.
 
Tenho vergonha de perguntar :)))
Como posso fazer com que meu Expert Advisor abra apenas uma profissão e não abra outras até que ela termine?
 
salesman77:
Tenho vergonha de perguntar :)))
Como posso fazer com que meu Expert Advisor abra apenas uma profissão, e até que ela termine, não abra outras?

Organizar em loop uma busca de todas as posições abertas e verificá-las para o símbolo e número mágico atual. Se não for encontrado nenhum, então acendemos a luz verde. A kodobase está cheia de tais exemplos, em quase todas as EA.