Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1304

 
Николай Никитюк:
Alô, 2020.11.15_05:51 GMT+3. Algo sobre meu testador de estratégia no MT4 ser muito lento. Parecia estar testando fino por três meses de história na tabela horária do GBPUSD não muito longa. Eu estava testando meu Conselheiro Especialista. E recentemente testei minha EA em GOLD,M15 durante um mês de história. Levei uma hora e quarenta e sete minutos para verificar, mas no testador foi um dia e meio. O que posso fazer para que meu testador de estratégia funcione rapidamente? Devo escrever para o Service Desk? Quem sabe o que fazer? Vou esperar por uma resposta. 06:04 GMT+3. Sim. Posso anexar o registro de teste do MT4.

Depende de qual indicador é instalado. Há indicadores que não só atrasam o testador, mas também o computador inteiro desliga.

 
SanAlex:

Depende de qual indicador é instalado. Existem tais Indicadores, que não apenas o testador abranda, mas também o computador inteiro fica pendurado.

Não é esperar por uma resposta - acabou o tempo!

Mensagem escrita:2020.11.15_05:51 GMT+3

A resposta também era esperada no dia 15:"Estarei esperando por uma resposta. 06:04 GMT+3"

testador de estratégia no MT4 ser muito lento. Parecia correr bem nos meus três meses de história na tabela horária do GBPUSD não muito longa. Eu estava testando meu Conselheiro Especialista. E recentemente testei minha EA em GOLD,M15 durante um mês de história. Levei uma hora e quarenta e sete minutos para verificar, mas no testador foi um dia e meio. O que posso fazer para que meu testador de estratégia funcione rapidamente? Devo escrever para o Service Desk? Quem sabe o que fazer? Vou esperar por uma resposta. 06:04 GMT+3. Sim. Posso anexar o registro de teste do MT4.


Portanto, se você quiser ajudar, responda rapidamente e dentro do prazo!

P.S. Eu mesmo não tive tempo de responder - dormi demais.

 
Vitaly Muzichenko:

Ele não está mais esperando por uma resposta - acabou o tempo!

Mensagem escrita:2020.11.15_05:51 GMT+3

A resposta também era esperada no dia 15:"Estarei esperando por uma resposta. 06:04 GMT+3".


Portanto, se você quiser ajudar, responda rapidamente e dentro do prazo!

P.S. Eu mesmo não tive tempo de responder - dormi até o fim.

acontece - o que um pergunta e o outro encontra a resposta.

 
Gudgeon:
Por favor, me diga como calcular a raiz do cubo? expressão MathPow(x,1/3)=1

1/3=0 portanto um dos valores deve ser do tipo duplo ou seja, 1/3.0 ou 1.0/3 ou 1.0/3.0

 
Alexey Viktorov:

1/3=0 portanto é necessário colocar um dos valores no tipo duplo ou seja, 1/3.0 ou 1.0/3 ou 1.0/3.0

Obrigado!

 

Olá.

Decidi começar com uma EA, para a primeira, para refazê-la, que poria um fim à perda no breakeven.

Acho que tudo está correto, ele compila, mas não traduz, por favor, ajude.

//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Average sample expert advisor"
#property strict
//#define MAGICMA  20131111
//--- Inputs
input double Lots          = 0.1;
input double MaximumRisk   = 0.02;
input double DecreaseFactor= 3;
input int    SL            = 600;
input int    Slip          = 50;
input int    MovingPeriod  = 12;
input int    MovingShift   = 6;
//extern string Trailing_Funcion   = "Main_step_tral";
//extern bool   tral               =true;
extern int    TralStop       = 40; // Растояние в пунктах, откуда начнем тралить : если цена прошла в плюс 40 пунктов, то стоп передвинется на 5 пунктов в плюсовом поле
extern int    Tral           = 5; // Шаг трала
extern int    MAGICMA        = 12345;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys,sells;
   buys=0;
   sells=0;
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//--- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//--- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//--- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
            continue;
         //---
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Функция выставления стоп лосс  в БУ                              |
//+------------------------------------------------------------------+
void T_SL()
{
int i=0;
for(i=0; i<OrdersTotal(); i++)
{
if((OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber()!=MAGICMA) continue;
if(OrderType()==OP_BUY)
{
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TralStop*Point,Digits))
//if(OrderOpenPrice()<=(Bid-TralStop))//&&OrderOpenPrice()>OrderStopLoss())
{      
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Tral*Point,Digits),OrderTakeProfit(),0,Green);
}
}  
if(OrderType()==OP_SELL)
{
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TralStop*Point,Digits))
//if(OrderOpenPrice()>=(Ask+TralStop))//&&OrderOpenPrice()<OrderStopLoss()) 
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Tral*Point,Digits),OrderTakeProfit(),0,Red);
}
} 
}
}
//| Конец функции тралл стоп лосс |  
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//--- sell conditions
   if(Open[1]>ma && Close[1]<ma)
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slip,NormalizeDouble(Bid+SL*Point,Digits),0,"",MAGICMA,0,clrDarkRed);
      return;
     }
//--- buy conditions
   if(Open[1]<ma && Close[1]>ma)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slip,NormalizeDouble(Ask-SL*Point,Digits),0,"",MAGICMA,0,clrDarkGreen);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for start trall
   if (TralStop!=0) T_SL();
 //  if(tral){T_SL();}  // это строка запуска тралла
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- calculate open orders by current symbol
   if(CalculateCurrentOrders( Symbol())==0) CheckForOpen();
   else                                  CheckForClose();
//---
  }
//+------------------------------------------------------------------+
 



double   Fibo_Level= ObjectGetDouble(
                       0,          // идентификатор графика
                       n,              // имя объекта
                       OBJPROP_LEVELVALUE,           // идентификатор свойства
                       4     // модификатор свойства
                    );

Olá!! Você pode me dizer como obter o preço de 61,8 Fibonacci nível?

Por que existe uma função queretorna uma descrição do nível do objeto Fibonacci? Se essa descrição não tem nenhuma referência ao preço, como ela pode ser usada do ponto de vista prático?)


O preço teria que ser calculado por si só com base na distância entre os pontos de ancoragem???

Документация по MQL5: Операции с графиками / ChartID
Документация по MQL5: Операции с графиками / ChartID
  • www.mql5.com
ChartID - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Kira27:

Olá!! Você pode me dizer como obter o preço de 61,8 Fibonacci nível?

Por que existe uma função queretorna uma descrição do nível do objeto Fibonacci? Se essa descrição não tem nenhuma referência ao preço, como ela pode ser usada do ponto de vista prático?)


O preço teria que ser calculado por si só pela distância entre os pontos de ancoragem???

Entre os preços das coordenadas do objeto é 100%. O nível 61,8 é o preço do nível 0 mais 61,8%. Esta não é uma operação de mapeamento.

 
Alexey Viktorov:

Entre objetos, os preços coordenados são 100%. O nível 61,8 é o preço do nível 0 mais 61,8%. Não se trata de uma operação gráfica.

Obrigado!!! Foi o que eu pensei.

 

Olá. A função MarketInfo() é utilizada em mql4 para obter as informações atuais do mercado. Que função devo usar para obter MODE_LOTSIZE, MODE_TICKVALUE e MODE_TICKSIZE não para o momento atual, mas de acordo com os preços de fechamento dos bares na história?