[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1014

 

001 respondeu.

Tanto quanto eu entendo, é aqui que a comparação é feita. Se eu estiver errado, deixe-os me corrigirem.

if(
(sar10>Abrir[0]) &&/ SAR 1 // comparar com preço aberto
(sar11>Fechar[0+1])&&/ minuto e comparar com preço fechado
(sar50>Abrir[0])&& // SAR 5
(sar51>Fechar[0+1])&& // minutos
(sar150>Abrir[0])&& // SAR 15
(sar151>Fechar[0+1])&& // minutos
(sar152<Fechar[0+2]) // início da tendência

)

Mas não é isso. Para esclarecer, o Expert Advisor é anexado ao gráfico de 15 min. e o SAR é comparado com o preço para intervalos de 15, 5 e 1 min. de tempo.... Abrir[0] Fechar[0+2] e Fechar[0+2 ] é o preço de abrir e fechar. Preciso comparar a parte inferior do gráfico, que está anexado ao Consultor Especialista em prazos mais baixos!

Obrigado antecipadamente...

 
boris.45:

Você tem este par na janela do Market Watch?

Tente recalcular todos os prazos quando receber a mensagem "Nenhum dado novo por símbolo", pois ela lhe pede que o faça. Geralmente o faço: abro a janela de carregamento de dados (F2), faço duplo clique no símbolo desejado, faço duplo clique no M1 e carrego os dados, apesar de todas as suas mensagens. E eu faço isso para cada TF - M1, M5, M15 ... Mês...

Geralmente ajuda... Embora às vezes eu esteja confuso com isso. :)

 
igrok2008:

Mas não é isso. Para esclarecer, o Expert Advisor é anexado ao gráfico de 15 min. e SAR é comparado com o preço para intervalos de 15, 5 e 1 min. de tempo.... Abrir[0] Fechar[0+2] e Fechar[0+2 ] é o preço de abrir e fechar. Preciso comparar a parte inferior do gráfico, que está anexado ao Consultor Especialista em prazos mais baixos!

Obrigado antecipadamente...

   iSAR(Symbol(),PERIOD_M1, step,maximum,1);  // Данные параболика для текущего символа с периода М1
   iSAR(Symbol(),PERIOD_M5, step,maximum,1);  // Данные параболика для текущего символа с периода M5
   iSAR(Symbol(),PERIOD_M15,step,maximum,1);  // Данные параболика для текущего символа с периода М15
   iSAR(Symbol(),PERIOD_M30,step,maximum,1);  // Данные параболика для текущего символа с периода М30

   iOpen (Symbol(),PERIOD_M1,0);     // цена открытия минутной свечи текущего (нулевого) бара
   iClose(Symbol(),PERIOD_M1,0);     // цена закрытия минутной свечи текущего (нулевого) бара
   iOpen (Symbol(),PERIOD_M1,1);     // цена открытия минутной свечи предыдущего (первого) бара
   iClose(Symbol(),PERIOD_M1,1);     // цена закрытия минутной свечи предыдущего (первого) бара
   iOpen (Symbol(),PERIOD_M5,0);     // цена открытия пятиминутной свечи текущего бара
   iClose(Symbol(),PERIOD_M5,0);     // цена закрытия пятиминутной свечи текущего бара

Por analogia, vá em frente e faça você mesmo...

 
artmedia70:

Você tem este par na janela do Market Watch?

Tente recalcular todos os prazos quando você receber a mensagem "Nenhum dado novo por símbolo", porque ela lhe pede para fazê-lo. Geralmente o faço: abro a janela de carregamento de dados (F2), faço duplo clique no símbolo desejado, faço duplo clique no M1 e carrego os dados, apesar de todas as suas mensagens. E eu faço isso para cada TF - M1, M5, M15 ... Mês...

Geralmente ajuda... Embora às vezes eu esteja confuso com isso. :)

 
Qual pode ser a razão, quando a EA não fecha ordens (mesmo que esteja especificada em seu código), e o testador dá estes erros:
 
ViktorF:
Qual pode ser o motivo, quando a EA não fecha ordens (embora esteja especificada em seu código), e o testador dá tais erros:
Isto não está correto no código e é por isso que a EA não fecha. E estes são erros inofensivos, é desejável atualizar as citações
 
artmedia70:

Por analogia, vá em frente e faça você mesmo...

Por favor, verifique!!!!!

//+------------------------------------------------------------------+
//|                                 expert SAR_1_5_15 min primer.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern double    Lots=0.01;
extern int       StopLoss=300;
extern int       TakeProfit=150;
extern int       MagicNumber=123456;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
bool CheckOrders(int Type)
{
 bool Result=True;
 for(int i=0;i<OrdersTotal();i++)
  if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()==Type)
        {
         if(Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result=False;
         if(Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result=False;
         } 
        else Result=False;
 return(Result); 
}

// Проверяем наличие закрытой на текущей свече позиции типа Type. Если есть, то возвращает False  
bool CheckExists(int Type)  
{
 bool Result=True;
 for(int i=OrdersHistoryTotal()-1; i>=0;i--)
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()&&OrderCloseTime()>=Time[0]&&OrderType()==Type)
    {
     Result=False;
     break;
     }
 return(Result); 
 }
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения Parabolic,на 0-ом, 1-ом и 2-м барах для 1,5-ти,15-ти минутн. графиков
    double sar10 = iSAR(NULL,1,0.02,0.2,0);
    double sar11 = iSAR(NULL,1,0.02,0.2,1);
    double sar50 = iSAR(NULL,5,0.02,0.2,0);
    double sar51 = iSAR(NULL,5,0.02,0.2,1);
    double sar150 = iSAR(NULL,15,0.02,0.2,0);
    double sar151 = iSAR(NULL,15,0.02,0.2,1);
    double sar152 = iSAR(NULL,15,0.02,0.2,2);
    // Определяем цену открытия и закрытия для 15,5 и 1 мин. графиков
   double Open10 = iOpen (Symbol(),PERIOD_M1,0); // цена открытия 1 мин. свечи нулевого бара
   double Close10= iClose(Symbol(),PERIOD_M1,0); // цена закрытия 1 мин. свечи нулевого бара
   double Open50 = iOpen (Symbol(),PERIOD_M5,0); // цена открытия 5 мин. свечи нулевого бара
   double Close51= iClose(Symbol(),PERIOD_M5,1); // цена закрытия 5 мин. свечи первого бара    
   //-------------открытие позиции Buy покупка----------------- 
    if(
    (sar10>Open10)&&     //  SAR 1 // сравниваем с ценой открытия
    (sar11>Close10)&&    // минута и сравниваем с ценой закрытия
    (sar50>Open50)&&         //  SAR 5
    (sar51>Close51)&&        // минут
    (sar150>Open[0])&&        //  SAR 15
    (sar151>Close[0+1])&&     // минут
    (sar152<Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_SELL) && CheckExists(OP_BUY))
      {
       if(StopLoss <= StopLevel+Spread)
         double SL = 0;
        else
         SL = Ask - StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         double TP = 0;
        else
         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    //-------------------Конец блока покупки -------------------
    
    //-------------Открытие позиции Sell продажа----------------  
    if(
    (sar10<Open10)&&       //  SAR 1// сравниваем с ценой открытия
    (sar11<Close10)&&      // минута и сравниваем с ценой закрытия
    (sar50<Open50)&&       //  SAR 5
    (sar51<Close51)&&      // минут
    (sar150<Open[0])&&        //  SAR 15
    (sar151<Close[0+1])&&     // минут
    (sar152>Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_BUY) && CheckExists(OP_SELL))
      {
       if(StopLoss <= StopLevel+Spread)
         SL = 0;
        else
         SL = Bid + StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         TP = 0;
        else
         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+

Nenhum erro detectado na compilação!!!!!

Obrigado de antemão!

 
artmedia70:
artemida70, há um par de moedas na janela do Market Watch. Eu tentei seu método de carregamento, mas não funciona. Ao carregar os dados, a barra verde não chega ao fim e o carregamento pára. Ao recarregar, o quadro "Nenhum dado de símbolo novo..." deixou de aparecer. A propósito, todos os cubos de tempo se tornaram cores brilhantes ao mesmo tempo (embora o carregamento seja feito na M1). O arquivo de carga pode ter sido corrompido? Sua opinião - o que fazer ?
 
Vinin:


Talvez você quisesse perguntar como obter o valor de uma variável descrita no arquivo de inclusão?


Sim, é exatamente isso. Há um arquivo, você postou, que é muito útil, OptimizationReport.mq4. Eu o melhorei ligeiramente para calcular o Fator de Recuperação. Agora quero obter o valor desta variável no código principal para acelerar a otimização, detectando os passes do testador e estabelecendo o limite do nível de PV. Eu tentei fazer isso através de variáveis globais. O valor da minha variável não é visível no código principal.

Na EA eu escrevo:

valor duplo myValue = GlobalVariableGet("myValue");
Imprimir("myValue="+myValue);
MessageBox("myValue="+myValue);
Alerta("myValue="+myValue);

Inclua (disposição):

GlobalVariableSet("myValue", 1);

Não funciona, myValue=0,00000000

Arquivos anexados:
 

Pensei em dar entrada aqui também ...

Como posso configurar o envio de e-mails para o narod.ru?

Todas as variantes tentadas:

Servidor SMTP - smtp.narod.ru

Login SMTP: - имя@narod.ru

Senha SMTP - senha

De: slt-soft@narod.ru

Para: slt-soft@narod.ru

Erro: Mail: login para smtp.narod.ru falhou

Razão: