Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 747

 
TarasBY:

2) Não pode haver UPPER e LOWER fractals na mesma barra ao mesmo tempo, respectivamente, verifique

pertence à categoria de idiotice do programador.

Portanto, estas citações são apenas para idiotas.


 
TarasBY:

2) Não pode haver UPPER e LOWER fractals na mesma barra ao mesmo tempo, respectivamente, verifique

pertence à categoria de programador idiota.


Os dois fractais podem estar na mesma barra
 
Vinin:
Os dois fractais podem estar na mesma barra
ele quis dizer minutos, mas esqueceu-se de meses
 
Olá

Há a seguinte linha no código

 if (G_time_344 == Time[0]) return (0);
Tanto quanto sei, é responsável pelo fato de a EA atrasar o recálculo até que uma nova barra apareça. Até que o tempo de abertura da barra zero mude, o recálculo pára.

Assim, se eu abrir uma EA em minutos, ela será recalculada a cada novo minuto. E se eu o abrir no H4, ele será recalculado a cada 4 horas.

Como escrever esta linha corretamente, para que a EA não tome o tempo de abertura da barra atual, ou seja, a barra em que o terminal está aberto, mas aquela que eu especificarei nos ajustes? Ou seja, eu coloco o EA no H4, por exemplo, e ele recalculará a cada 5 minutos, porque eu o defini. Ou a cada minuto.


 
_new-rena:
ele quis dizer minutos, mas esqueceu-se de meses

Qual é a diferença entre minutos e meses?


 
evillive:
Do que está reclamando no registro de modificação? "Estupidamente abre novas ordens pendentes" porque não há limite, mas há um OrderSend.
Sem erros, apenas triângulos amarelos.
 
AlexeyVik:

Qual é a diferença entre minutos e meses?

Concordo, também há momentos agradáveis na M1. mas nos meses todos os bares são assim.
 
Não tenho mais perguntas, eu mesmo já resolvi isso.
 
TarasBY:

1) Qualquer estratégia deve ser definida pelo número de ordens abertas ao mesmo tempo. Assim, antes de abrir o próximo pedido, devemos verificar quantos já estão abertos.

2) Em uma barra, não pode haver UPPER e LOWER fractals ao mesmo tempo, respectivamente, o cheque é classificado como

pertence à categoria de idiotice do programador.

3) Antes de escrever as condições para retornar os valores do indicador de reserva, você precisa saber exatamente qual é o valor "vazio" para ele? Você já verificou que é 0?

4) A construção.

Embora funcione (na maioria dos casos), mas não é natural, porque é uma idéia de "livre arbítrio" do desenvolvedor, e não é informativa para o comerciante. Uma alternativa - o rastreamento de um novo bar.

5) Você tem que partir do básico, porque isto:

Indica que você não entende nada do que está escrevendo.

A melhor maneira de entender é estudar como funcionam os códigos de outras pessoas e modificá-los para seus próprios propósitos. Boa sorte.

Ele as exibe como escritas, ponto por ponto. Ele não as modifica, sobre as quais você não disse uma palavra. Aqui está o código completo:
//+------------------------------------------------------------------+
//|                                                   Strategy 3.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright ""
#property link      ""
#include <Library1.mqh>
extern int Magic=111;
extern int TP=20;
extern int SL=30;
extern int Trall_dist=10;
extern int Shag=10;
extern bool Isp_shag=false;
extern bool Isp_bezubitok=false;
extern double Lot=0.1;
double SS=0,BS=0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double tp,sl;
  if(Digits==3||Digits==5) {tp=TP*10*Point;sl=SL*10*Point;} // условие для пятизнака
  else if(Digits==2||Digits==4) {tp=TP*Point;sl=SL*Point;} // условие для четырехзнака
  double Up=iFractals(Symbol(),0,MODE_UPPER,3);       //верхний фрактал,формируется на третьей свече
  double Down=iFractals(Symbol(),0,MODE_LOWER,3);     //нижний фрактал,формируется на третьей свече                                                   
//----
  if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        {
        for (int pos=0;pos==OrdersTotal();pos++)
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        }
     
       }   
   else if(Up==0&&Down>0&&Volume[0]<2)
    {
    if((Bid-Low[3]-5*Point)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL))
    OrderSend(Symbol(),OP_SELLSTOP,Lot,Low[3]-5*Point,20,Low[3]+sl,Low[3]-tp,NULL,Magic,0,Red);
    else {SS=Low[3]-5*Point; Print("Виртуальный SS:",SS);}
         {
         for (pos=1;pos==OrdersTotal();pos++)
             {
             OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
             if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_SELLSTOP)
               {
               OrderModify(OrderTicket(),Down-5*Point,Low[3]+sl,Low[3]-tp,0,CLR_NONE);
               } 
             }
         }
    
            
    if(OrdersTotal()>0)
    Trailing_stop(Magic,Symbol(),Trall_dist,Shag,Isp_shag,Isp_bezubitok);
    return(0);
  }}
//+------------------------------------------------------------------+
Sua crítica me faz lembrar um manual MQL4 - eu só o entendo se alguém me explicar.
 
if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        { // К чему относится эта скобка???
        for (int pos=0;pos==OrdersTotal();pos++)
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
       } // это пара к той...
      }
     


E este código

if(Digits==3||Digits==5) {tp=TP*10*Point;sl=SL*10*Point;} // условие для пятизнака
  else if(Digits==2||Digits==4) {tp=TP*Point;sl=SL*Point;} // условие для четырехзнака

é melhor escrever no init() e é melhor não escrever assim

double   point; // на уровне глобальных переменных

int OnInit()
{
   point = Digits%2 == 0 ? _Point : _Point * 10;
}

e depois no início()

tp = High[3]+TP*point;