[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 964

 
volshebnik:
Por que a velocidade do testador cai perto do final do terceiro ano?


existe tal problema - eu também tive esse problema, se o Expert Advisor fizer muitas negociações por ano - talvez muitos dados sejam armazenados para exibir o resultado final ou talvez os buffers indicadores comam memória

como uma serra completa - não sei, paciência - para o quadro geral, o teste por 10 anos, e é melhor otimizar um ano de cada vez e depois fazer uma seleção dos parâmetros ideais

 

Quero analisar diferentes cruzamentos seguidos de pedidos em outro par:

int magic = 428;// número trágico do Expert Advisor
volume duplo externo = 0,1;//volume do pedido sendo feito
escorregamento interno externo = 3;//slippage
na OPB;// a marca do pedido de compra
na OPS;// a marcação da ordem de venda
int Lucro=1;// nível de lucro do pedido aberto
string comB = "Entrada na tendência de compra; // comentário sobre o pedido
string comS = "Entrada por tendência a Vender";// comentário do pedido
dupla StochasticCAD;//posição da linha Stochastic principal na barra atual no USDCAD
dupla StochasticAUD;//posição da linha Stochastic principal na barra atual para AUDUSD

duplo SARCAD;//posição do indicador atual no USDCAD
dupla SARCAD;//posição da barra indicadora de volta no USDCAD
duplo SARAUD;//c posição atual do indicador no AUDUSD
duplo SARСAUD;//posição da barra indicadora de volta no AUDUSD


int start()
{

//______________________________определение значений переменных_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,3,1,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,3,1,1,1,1,0);

SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
askCAD duplo =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
askAUD =MarketInfo("AUDUSD",MODE_ASK);




//______________________________поиск и закрытие ордеров_______________________________________


int i;
for(i=0; i<=OrdensTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso)
pausa;// se o número de pedido i não existir, pare a busca

se (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // se a ordem não for do par onde nossa EA está localizada
continuar; // pular a ordem e olhar para a próxima ordem após a mesma


///_______close Comprar_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// se o pedido for Comprar
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD===100 || SARCAD<bidCAD || SARAUD>askAUD)//e o mercado está prestes a reverter
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // fechar se estiver em lucro
OPB=0;
}
}
senão
{
//_______close Sell_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// se o pedido for VENDIDO
{OPS=1;
if(StochasticCAD===100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//e o mercado está próximo da reversão
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // fechar se estiver em lucro
OPS=0;
}
}
}
}

//______________выставление ордеров______________________________________________________________________


se (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARCAUD>askAUD && OPB<1)//define conditions

{ ///_______Buy_______

if(!IsTradeAllowed())
{
Alerta("o fio comercial está ocupado, tente novamente comprar...");
retorno(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,0,comB,magic,0,Red); //set an order

if(OPB == -1)
{
Alerta("GBPUSD", "Erro: comprar", GetLastError()));
retorno(-1);
}

if(OPB > 1)
Alerta("GBPUSD", "Temos um pedido de compra!)

}
senão
{//_______Sell_______

if(SARCAD>askCAD && SARCAD<bidCAD && SARCADAUD<bidAUD && SARAUD>askAUD && OPS<1)//define conditions

{

if(!IsTradeAllowed())
{
Alerta("o fio condutor está ocupado, tente novamente vender...");
retorno(-1);
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //set an order


if(OPS == -1)
{
Alerta("GBPUSD", "Error: Sell", GetLastError());
retorno(-1);
}

if(OPS > 1)
Alerta ("GBPUSD", "Coloque ordem de venda!)

}
}
retorno(0);//saída
}


Nada sai quando eu o teste. Nenhum resultado.

No registro, há um conjunto de erros:

Você pode me dizer o que está errado?

 
ViktorF:

Quero analisar diferentes cruzamentos e depois fazer pedidos em outro par:

int magic = 428;// número trágico do Expert Advisor
duplo volume externo = 0.1;//volume de pedidos feitos
deslize int externo = 3;//slippage
int OPB;//tag de pedido feito Comprar pedido
int OPS;//tag de pedido feito Vender pedido
int Lucro=1;//pro nível de lucro de pedidos abertos
string comB = "Entrada por tendência para Comprar"; //pedido de pedido
string comS = "Entrada por tendência para Vender"; //pedido de pedido
duplo StochasticCAD;//posição da linha principal Stochastic na barra atual em USDCAD
duplo StochasticAUD;//posição da linha principal Stochastic na barra atual em AUDUSD

duplo SARCAD;//posição atual da barra indicadora em USDCAD
duplo SARCAD;//posição da barra indicadora de volta em USDCAD
duplo SARAUD;//posição atual da barra indicadora em AUDUSD
duplo SARAUD;//posição da barra indicadora de volta em AUDUSD


int start()
{



//_______________________ determinação dos valores variáveis_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,1,0);

SARCAD=iSAR("USDCAD",30,002,0.2,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);




// search and close orders


int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso)
break;// se o número do pedido i não existir, pare a busca

if (OrderSymbol() !="GBPUSD" || OrderMagicNumber() != mágico) // se o pedido não for do par onde nosso Expert Advisor está localizado
continuar; // pular e olhar o pedido seguinte


// close Buy
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// se o pedido for COMPRAR
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD===100 || SARCAD<bidCAD || SARAUD>askAUD)// e o mercado estiver próximo da reversão
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // feche se for COMPRAR
OPB=0;
}
}
else
{
//
close Sell
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// if the order is Sell {OPS=1;
if(StochasticCAD===100 ||| StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)// e o mercado está próximo de uma inversão
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // feche-o se em lucro
OPS=0;
}
}
}
}

//


encomendar _______ if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARAUD>askAUD && OPB<1)// definir condições

{ //______________________________________________________________________Buy

if(!IsTradeAllowed())
{
Alerta("o fio comercial está ocupado, tente novamente comprar...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,0,comB,magic,0,Red); //set order

if(OPB == -1)
{
Alert("GBPUSD", "error: buy", GetLastError());
return(-1);
}

if(OPB > 1)
Alerta ("GBPUSD", "Put Buy Order!");

}
else
{// Sell



if(SARCAD>askCAD && SARCAD<bidCAD && SARCAD<bidAUD && SARAUD>askAUD && OPS<1)//define conditions

{ if(!IsTradeAllowed())
{
Alerta("o fio comercial está ocupado, tente novamente vender...");
return(-1);
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //set order


if(OPS == -1)
{
Alert("GBPUSD", "error: sell", GetLastError());
return(-1);
}

if(OPS > 1)
Alerta ("GBPUSD", "Put Sell order!");

}
}
return(0);//exit
}


Nada sai quando testado. Não produz resultados.

Há um conjunto de erros no registro:

Você pode me dizer o que está errado?


Antes de tudo, aprenda como inserir o código na janela pressionando simultaneamente "Counterclick + Alt + M", para que em sua halimatry as pessoas naveguem e dêem recomendações.

Tente também clicar duas vezes na mensagem de erro correspondente no registro - talvez isso leve a algumas reflexões...

 
Roman.:


Primeiro, aprenda como inserir código em uma janela pressionando as teclas Conrle + Alt + M ao mesmo tempo, para que você possa guiar as pessoas através de seus disparates e fazer recomendações.

Além disso, tente clicar duas vezes na mensagem de erro correspondente no diário de bordo - talvez isso lhe dê algumas idéias...


Os erros estão no registro do testador, não no do compilador. (você pode realmente vê-lo na foto se olhar primeiro para ele e comentá-lo depois...). Um duplo clique não faz nada lá...

 
int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Вход по тренду на Buy";//комментарий ордера
string comS = "Вход по тренду на Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD

double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD

double bidCAD;
double askCAD;
double bidAUD;
double askAUD;

int start()
  {
  
//______________________________определение значений переменных_______________________ 


      StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); 
      StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
      
      SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
      SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
      SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
      SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
      
      bidCAD   =MarketInfo("USDCAD",MODE_BID);
      askCAD   =MarketInfo("USDCAD",MODE_ASK);
      bidAUD   =MarketInfo("AUDUSD",MODE_BID);
      askAUD   =MarketInfo("AUDUSD",MODE_ASK);


      

//______________________________поиск и закрытие ордеров_______________________________________   
    

    int i;
    for(i=0; i<=OrdersTotal(); i++)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
     break;// если ордер номер i не существует, прекращаем перебор
  
        if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш эксперт
        continue; // пропускаем его и смотрим на следующий за ним ордер
        

      //_______закрытие Buy_______       
        if (OrderType() == OP_BUY && OrderProfit()>=Profit) 
        // если ордер бай 
        {
         OPB=1;
         if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
          {
           OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
           OPB=0;
          }
        }
        else  
        {
      //_______закрытие Sell_______ 
         if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
          {OPS=1;
           if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
            {
             OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
             OPS=0;
            }
          }
        }
    }
        
//______________выставление ордеров______________________________________________________________________
    
  
    if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
     
     {  //_______Buy_______ 

          if(!IsTradeAllowed())
               {
                  Alert("занят торговый поток, повторим попытку бай...");
                  return(-1);
               }
          OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
            
            if(OPB == -1)
              {
                 Alert("GBPUSD"," ошибка: бай", GetLastError());
                 return(-1);
              }
         
            if(OPB > 1)
            Alert ("GBPUSD","Выставили ордер на покупку!");

     }
      else
     {//_______Sell_______
  
         if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
     
         {
          
           if(!IsTradeAllowed())
                {
                   Alert("занят торговый поток, повторим попытку селл...");
                   return(-1);
                }
        
           OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер


             if(OPS == -1)
               {
                  Alert("GBPUSD"," ошибка: селл", GetLastError());
                  return(-1);
               }
         
             if(OPS > 1)
             Alert ("GBPUSD","Выставили ордер на продажу!");

         }
     }    
   return(0);//выход
  }

 
ViktorF:


Um teste em todos os tiques? Problemas com a história
 
Vinin:

Um teste em todos os tiques? Problemas com a história

Isto é, você precisa recarregar o histórico para todos os pares envolvidos na análise?
 
ViktorF:

Ou seja, você precisa recarregar o histórico para todos os pares envolvidos na análise?


Talvez. Se, é claro, a corretora o apoiar.

Mas não devemos esquecer que você pode abrir posições no testador para o símbolo atual, e há algumas restrições para outros símbolos

 
Vinin:


Isso é possível. Se, é claro, a corretora a apoiar.

Apenas tenha em mente que no testador você pode abrir posições no instrumento atual, e há algumas restrições sobre outros instrumentos


O que é um CD? E quais são as restrições a outros instrumentos?
 
ViktorF:

O que é uma empresa de corretagem? E quais são as limitações de outros símbolos?


DC - Mesa de operações

No testador para outros instrumentos você pode obter o preço de abertura na barra zero, os carrapatos para outros instrumentos não são modelados, o ambiente do mercado é quase inacessível.

O comércio de outros instrumentos não é aberto.

Se você precisar realizar corretamente a análise de múltiplas moedas, é melhor usar o MT5. Há um testador de múltiplas moedas.