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

 
Artyom Trishkin:

No testador sobre um símbolo diferente? Ou em demonstração/real em um símbolo diferente? Ou no testador sobre este símbolo? Ou em demonstração/real sobre este símbolo?

Por que você tem que tirar tudo de você?

Qual é o seu objetivo? Que diferença isso faz onde você tentou? A questão é se Ponto = 0. E se puder, como escrever o código corretamente para que não encontre um erro: divisão por zero?
 
LuckySith:

Desculpe, eu sou muito nerd - eu realmente não entendo.
Talvez você tenha o indicador mais simples com um código de alguns, eu tenho uma analogia para entender? Porque eu não consegui encontrar um.

Eu tenho um código muito simples que coloca pontos no meio da barra. Como faço para que o texto apareça quando pairo sobre eles, ou sobre uma caixa, o que quer que seja.



#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//---- input parameters
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars;
//----  
   for(int i=limit; i>=0; i--)
     {
      double       fabody0 = fabs(Close[i]-Open[i]);
      double       fabody1 = fabs(Close[i+1]-Open[i+1]);
      double       fabody2 = fabs(Close[i+2]-Open[i+2]);
      double       fabody3 = fabs(Close[i+3]-Open[i+3]);
      double       fabody4 = fabs(Close[i+4]-Open[i+4]);
      double       fabody5 = fabs(Close[i+5]-Open[i+5]);
      double       fabody6 = fabs(Close[i+6]-Open[i+6]);
      double       fabody7 = fabs(Close[i+7]-Open[i+7]);
      if((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&(Volume[i]>Volume[i+1]))
      {  
         if (((Close[i]>Open[i])&&(Low[i]+(High[i]-Low[i])/2>Low[i+1]+(High[i+1]-Low[i+1])*0.9))||((Close[i]<Open[i])&&(Low[i]+(High[i]-Low[i])/2<Low[i+1]+(High[i+1]-Low[i+1])*0.1)))
         ExtMapBuffer1[i]=(iHigh(Symbol(),0,i)+iLow(Symbol(),0,i))/2;
      }
     }
//----
   return(0);
  }
Tente
Arquivos anexados:
gmxdk8j.mq4  6 kb
 
Gevorg Hakobyan:
Qual é o seu objetivo? Que diferença isso faz onde você tentou? A questão é se Ponto = 0. E se puder, como devo escrever o código correto para não encontrar um erro: divisão por zero?
Como quiser.
Portanto, verifique o divisor a zero antes de dividir.
Pensei que você estava interessado na causa, não no efeito, e na muleta apropriada.
 
Artyom Trishkin:
Como quiser.
Portanto, verifique o divisor a zero antes de dividir.
Pensei que você estava interessado na causa, não no efeito, e na muleta apropriada.
Eu não li todo o diálogo, mas suspeito de um problema com a impressão do quinto ponto decimal.
 
Alexey Viktorov:
Eu não li todo o diálogo, mas suspeito de um problema com a impressão da quinta casa decimal.
Não, ele se divide por ponto() e recebe uma divisão por zero.
É por isso que estou tentando obter uma resposta coerente sobre como e onde obtém os dados do símbolo.

 
Artyom Trishkin:
Não, ele se divide por Ponto() e recebe divisão por zero.
Estou tentando obter uma resposta clara de como e para onde leva os dados para o símbolo.

if(v==="NZD")
{
h=(iClose("NZDUSD",p,b)-iOpen("NZDUSD",p,b))/MarketInfo("NZDUSD",MODE_POINT)+
(iOpen("EURNZD",p,b)-iClose("EURNZD",p,b))/MarketInfo("EURNZD",MODE_POINT)+
(iOpen("GBPNZD",p,b)-iClose("GBPNZD",p,b))/MarketInfo("GBPNZD",MODE_POINT)+
(iOpen("AUDNZD",p,b)-iClose("AUDNZD",p,b))/MarketInfo("AUDNZD",MODE_POINT)+
(iClose("NZDJPY",p,b)-iOpen("NZDJPY",p,b))/MarketInfo("NZDJPY",MODE_POINT)+
(iClose("NZDCAD",p,b)-iOpen("NZDCAD",p,b))/MarketInfo("NZDCAD",MODE_POINT)+
(iClose("NZDCHF",p,b)-iOpen("NZDCHF",p,b))/MarketInfo("NZDCHF",MODE_POINT);
}
 
Alexey Viktorov:
Eu não li todo o diálogo, mas suspeito de um problema com a impressão do quinto ponto decimal.
Poderia ser esse o problema?
 
Gevorg Hakobyan:
Poderia ser esse o problema?
Não. É apenas a invisibilidade do quinto dígito ao imprimir e nos alertas.
 
Alekseu Fedotov:
Tente
Em geral, é o que você precisa, mas o problema é que a descrição será bastante grande, e este método pode literalmente escrever um par de palavras - o resto simplesmente não aparece
 

Olá.

Por favor, ajude.

Agora o lote de cada ordem seguinte está aumentando em 1, 2, 3, 4, 5...

Quero que o lote de cada ordem não aumente cada ordem, mas em incrementos de 3, portanto 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3...


extern double   LotStop        = 0.01;
extern double   Plus_LotStop   = 0.01;
extern double   Plus_N_ORD  = 3;        //каждые N ордеров
void OnTick()
  {
//---
      for (int i=1; i<=OrdersStop; i++)
   {
         if((Close[1]<Open[1]&&Close[2]>Open[2]&&NumberOfPositions(Symbol(), -1,_Magic)<1))
         {
            OPENORDER (OP_BUYSTOP,PriceBS,LOTs,_Magic,i);
            numB++;
            PriceBS = NormalizeDouble(PriceBS+Step_Stop*Point,Digits);
          
            OPENORDER (OP_SELLSTOP,PriceSS,LOTs,_Magic,i);
            numS++;
            PriceSS = NormalizeDouble(PriceSS-Step_Stop*Point,Digits);
         }
      
      LOTs=LOTs+Plus_LotStop;
      }
  }
Razão: