[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 5

 
granit77:

Pergunta: como colocar um terminal limpo? Afinal, quando tento reiniciar, o sistema me reconhece automaticamente, permitindo que eu recarregue o arquivo terminal e salve informações previamente acumuladas: conta demo, indicadores escritos, etc. Aparentemente existe um arquivo entre os salvos que não permite recarregar os dados históricos. :)
 
Olá, minha pergunta é se o MT4 EAs vai funcionar neste dispositivo
 
boris.45:
Basta baixar novamente de seu corretor e colocá-lo em um diretório diferente. Digite manualmente seu nome de usuário e senha da conta demo, se necessário, mas é melhor abrir uma nova conta.
E, como um recém-nascido, você será completamente sem pecado.
 
afirius:
Olá! A questão é se o MT4 EAs irá funcionar neste dispositivo
vai!
 
Cool) finalmente uma cura-tudo).
T-G:
será!
 
que ajudaria, mudaria a compra para vender no código deste especialista
Arquivos anexados:
ema_wma.mq4  5 kb
 

Olá, aqui está o problema.

O mesmo Expert Advisor opera normalmente em uma conta demo e no tester, mas se recusa a trabalhar ou trabalha incorretamente em uma conta real.

O que devo fazer para consertá-lo?

extern int ma1 = 7;
extern int ma2 = 100;
extern int ma3 = 200;
extern int ma4 = 300;
extern int shift = 15;
extern double StartLot = 0.5;
extern double LotStep = 0.25;
extern int candleAmount = 25;
extern bool workAlone = true;

double   MA1;
double   MA2;
double   MA3;
double   MA4;
int      Trend;
int      i;
datetime shiftTime;
int      ticket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if (Digits == 3 || Digits == 5)
      shift = shift*10;
   MA1 = iMA(NULL,0,ma1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2 = iMA(NULL,0,ma2,0,MODE_SMA,PRICE_CLOSE,1);
   MA3 = iMA(NULL,0,ma3,0,MODE_SMA,PRICE_CLOSE,1);
   MA4 = iMA(NULL,0,ma4,0,MODE_SMA,PRICE_CLOSE,1);
   if (MA1<MA2 && MA1<MA3 && MA1<MA4)        {Trend = 1;}
   else if (MA1>MA2 && MA1>MA3 && MA1>MA4)   {Trend = 4;}
   else                                      {Trend = 2;}
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   MA1 = iMA(NULL,0,ma1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2 = iMA(NULL,0,ma2,0,MODE_SMA,PRICE_CLOSE,1);
   MA3 = iMA(NULL,0,ma3,0,MODE_SMA,PRICE_CLOSE,1);
   MA4 = iMA(NULL,0,ma4,0,MODE_SMA,PRICE_CLOSE,1);

   if (Trend == 2)
   {  if (MA1<MA2 && MA1<MA3 && MA1<MA4)
      {  for (i = OrdersTotal(); i >= 0; i--)
         {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType() == OP_BUY)
               OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),shift,Blue);
         }
         shiftTime = Time[0];
         if (OrdersTotal() == 0 || !workAlone)
         {  ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(Symbol()),NormalizeDouble(Bid,Digits),shift,0,0,"",777,0,Red);
            if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
               shiftTime = OrderOpenTime();
         }
         Trend = 1;
      }
      else if (MA1>MA2 && MA1>MA3 && MA1>MA4)
      {  for (i = OrdersTotal(); i >= 0; i--)
         {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType() == OP_SELL)
              OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),shift,Red);
         }
         shiftTime = Time[0];
         if (OrdersTotal() == 0 || !workAlone)
         {  ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(Symbol()),NormalizeDouble(Ask,Digits),shift,0,0,"",777,0,Blue);
            if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
               shiftTime = OrderOpenTime();
         }
         Trend = 4;
      }
   }

   if (Trend == 1)
   {  if (MA1>MA2 || MA1>MA3 || MA1>MA4)
      {  Trend = 2;
         if (iBarShift(NULL,0,shiftTime,false) >= candleAmount)
         {  for (i = OrdersTotal(); i >= 0; i--)
            {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),shift,Red);}}}}}

   if (Trend == 4)
   {  if (MA1<MA2 || MA1<MA3 || MA1<MA4)
      {  Trend = 2;
         if (iBarShift(NULL,0,shiftTime,false) >= candleAmount)
         {  for (i = OrdersTotal(); i >= 0; i--)
            {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),shift,Blue);}}}}}
//----
   return(0);
  }

//+------------------------------------------------------------------+

double LotsOptimized(string symbol)
{  double lot = StartLot;
   int    losses = 0;
   if (LotStep > 0)
   {  for (int c = OrdersHistoryTotal() - 1; c >= 0; c--)
      {  if (OrderSelect(c,SELECT_BY_POS,MODE_HISTORY) == false) break;
         if (OrderSymbol() != symbol) continue;
         //----
         if (OrderProfit() > 0) break;
         if (OrderProfit() < 0) losses++;
      }
      if (losses >= 1) lot = NormalizeDouble(lot + LotStep * losses,2);
   }
   if (lot < MarketInfo(symbol,MODE_MINLOT)) lot = MarketInfo(symbol,MODE_MINLOT);
   return (lot);
}

//+------------------------------------------------------------------+ 
 
deboir:

Olá, aqui está o problema.

O mesmo Expert Advisor opera normalmente em uma conta demo e no tester, mas se recusa a trabalhar ou trabalha incorretamente em uma conta real.

O que devo fazer para consertá-lo?


Os milagres não acontecem. Que empresa de corretagem você tem? Algumas corretoras não permitem que você coloque ordens de mercado se sua ordem contiver instruções para definir um stop loss e/ou obter lucros. Broco, por exemplo, é assim. Lá, você tem que abrir uma ordem de mercado primeiro e somente após esse lugar, as ordens de parada via modificação.
 
Eu fiz um teste especificamente com o parâmetro x=1, depois com o parâmetro x=2, depois otimizei x de 1 a 2 passo 1. todas as caixas de seleção estão desligadas, pulando cortes inúteis também. o algoritmo genético foi ligado e desligado. os resultados são diferentes, impotentes!

eu desmarquei "pular cortes inúteis" e os cortes aparecem. somente eles diferem de um teste simples. por exemplo, com o parâmetro x=1 um teste simples resulta em 500 negócios, com x=2 - 700 negócios. Eu deveria otimizar este parâmetro e x=1 agora recebe 1 negócio, x=2 também recebe 1 negócio. Meu Expert Advisor está usando modificação gráfica virtual, é possível que a otimização não consiga criar um objeto gráfico?

aconselhar o que poderia ser, eu tentei no testador, as ordens estão abrindo e fechando normalmente, selecionei o parâmetro, testei todos os resultados são rejeitados, alterei manualmente este parâmetro no teste, tudo está bem. Ativei o algoritmo genético durante a otimização e o desabilitei, alterei minhas configurações.
 

dzhini, eddy

Advertência para postos duplicados. Eliminação de postos duplicados. A partir daqui, haverá uma proibição.