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

 
Vladimir Pastushak:

Obrigado. Estou tendo dificuldade em chamar um método de classe dos pais.

Tanto quanto me lembro, isso é feito através do método dos pais :: método

O método em si tem um corpo na matriz?

 
Artyom Trishkin:

O método em si tem um corpo?

Sim, é verdade.

Aqui está o código, o que estou fazendo de errado ?

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

class A

  {

public:

   virtual int Test_A()

     {

      return 100;

     }

  };

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

class B :public A

  {

public:

   virtual int Test_A()

     {

      return 200;

     }

  };


B b;

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

void OnStart()

  {

   Comment (A::b.Test_A());

  }

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


 
Existeum indicador em ziguezague que mostra o valor do preço de um extremo, preciso traçaruma linha de tendência do extremo para o futuro (no dia seguinte), como posso fazer isso sem conhecer as coordenadas do segundo ponto e o valor de Tempo do primeiro ponto?
 
Vladimir Pastushak:

Aqui está o código, o que estou fazendo de errado ?

não, não vai funcionar dessa maneira

ao escrever o corpo de teste() na classe B, você fechou a antiga função Test() e agora quando você declara uma instância da classe e chama o método Test(), ele sempre executará B::Test(), mas se você não escrevesse B::Test(), ele sempre executaria A::Test()

aqui está um exemplo. experimente com ele

//+------------------------------------------------------------------+
class A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__); return 100;  }
  };

//+------------------------------------------------------------------+
class B :public A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__," = ", A::Test_A()); return 200;   }
  };

B b;

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

void OnStart()

  {
   Print (__FUNCSIG__," = ",b.Test_A());
  }
//+-------------------------------------------------------------
 
Hi. Como faço um cálculo ordinal? Para que no lugar da VENDA haja primeiro 1, depois 2 e assim por diante. ...até que se refresque quando não há ordens. Algumas dicas!
        if((fMarketOrderss(OP_SELL)>=1)) { 
       if( ((Bid-Opens)/ma+Times/1440) > SELL ) {
if(OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0,NULL,321,0,1)>0){} }}
 
Hmm, estranho, ninguém está respondendo.
 
Rustam Bikbulatov:
Hmm, estranho, ninguém responde.

Acho que ninguém entende seu posto :)


 

Olá, como fazer a EA abrir uma posição com um volume específico de pedidos individuais de ambas as posições, por exemplo

Especificamos o volume de um único pedido = 1,35 lotes, e o volume total das posições abertas é de 500 lotes. O EA abre um pedido de compra de 1,35 lotes, e depois abre um pedido de venda de 1,35 lotes,

e depois repete até que 500 lotes de compra e 500 lotes de venda sejam abertos, e como o número de lotes não é múltiplo de 1,35, o último pedido deve ser inferior a 1,35

 

Saudações.

Eu fiz uma função que quando um pedido atinge pontos de lucro "bezubitok", ele modifica o pedido movendo-o para o nível de abertura do pedido. Parece funcionar corretamente, mas durante os testes (e em todos os carrapatos) a cada 10-20 vezes ele envia o erro 1 para o registro.

Nenhum erro, mas o resultado é desconhecido

void Bezubitok(){
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic){
            if(OrderType()==OP_BUY){
               if (OrderStopLoss()!=OrderOpenPrice() && Ask-OrderOpenPrice()>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, Indigo)) {}
                  }
               }
            if(OrderType()==OP_SELL){
               if (OrderStopLoss()!=OrderOpenPrice() && OrderOpenPrice()-Bid>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, DeepPink)) {}
                  }
               }
            }   
         }
      }
   }

Qual é a razão disso e como derrotá-lo?

 
Andrey Sokolov:

Saudações.

Eu fiz uma função que quando um pedido atinge pontos de lucro "bezubitok", ele modifica o pedido movendo-o para o nível de abertura do pedido. Parece funcionar corretamente, mas durante os testes (e em todos os carrapatos) a cada 10-20 vezes o erro 1 é escrito para registrar.

Qual é a razão disso e como corrigi-la?

O erro 1 não é um erro, mas o resultado é desconhecido. A questão é que você está tentando modificar a parada para o mesmo preço em que já está. Antes de modificá-lo, compare o preço da parada com o preço ao qual você quer ajustá-lo. Se já está a esse preço, não há nada a modificar.

Razão: