O que há de errado com isso? - página 5

 
sss2019:


Uau, obrigado, eu acho que este método é mais versátil.

A propósito, como declarar na EA que o pedido foi aberto, a OrderSend, pelo que entendi, envia apenas o bilhete de pedido. Talvez, isto possa ser implementado usando OrderSelect?


Antes do bloco de inicialização, declaramos uma variável que levará o bilhete de pedido. Por exemplo:

int Ticket;

Na função inicial (), antes de chamar OrderSend(), nós escrevemos:

Bilhete=-1;

Como a função OrderSend() devolve um ticket do pedido, então verificamos se a variável Ticket é maior que zero, então o pedido foi feito. Caso contrário, não temos ordem - ver referência OrderSend - está escrito ali que se a ordem não puder ser definida, a função retornará o valor = (-1), não um tique. No próximo tick, como a variável é inicializada primeiro com valor = -1 e nenhuma ordem é definida, a variável permanecerá negativa até o final do código. E isto continua até que um novo pedido seja feito.

 
Poderia me dar um exemplo, porque estou passando por um momento difícil?
 
sss2019:
Poderia me dar um exemplo, porque estou passando por um momento difícil?
#property copyright ""
#property link      ""

int Ticket;
//+------------------------------------------------------------------+
//|                  Блок инициализации                              |
//+------------------------------------------------------------------+
int init(){
        return(0);
}
//+------------------------------------------------------------------+
//|                  Блок деинициализации                            |
//+------------------------------------------------------------------+
int deinit(){
        return(0);
}
//+------------------------------------------------------------------+
//|                  Старт работы советника                          |
//+------------------------------------------------------------------+
int start(){
        Ticket=(-1);
        
        if(если есть торговый сигнал){
                Ticket=OrderSend();
        }
        if(Ticket>0){// тикет более нуля - ордер встал
                // выполняем какие-то действия
        }
        return(0);
}
//+------------------------------------------------------------------+
//|                  Пользовательские подпрограммы                   |
//+------------------------------------------------------------------+
 

Por que o Ticket=(-1); entre parênteses?

Que tipo de bobagem é essa, o pedido está aberto e o bilhete ainda é -1.

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int Ticket;
int init()
  {

  }



int deinit()
  {

  }

int start()
  {
  Ticket=(-1);
  double MyPoint = Point;
   if(Digits == 3 || Digits == 5)
      {
      MyPoint = Point * 10;
      }
      
double MaFast0 = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow0 = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   
   if(OrdersTotal() == 0 && MaFast0 > MaSlow0 && Ticket==(-1))
      {
      Ticket=OrderSend(Symbol(),0,0.1,Ask,30,Ask-StopLoss*MyPoint,Ask+TakeProfit*MyPoint,"CommentA",0,0,Green);
      return(Ticket);
      }
  Alert("Ticket = ",Ticket); 
   return(0);
  }
 
Por que você escreve Então o programa não vai além, e você não receberá um alerta
return(Ticket);?
 
Acontece que a janela de alerta só aparecerá se não houver nenhum sinal para abrir uma posição, e necessariamente exibirá -1
 
Então, uma vez que um pedido tenha atribuído seu número à variável Bilhete, não há necessidade de emiti-la com retorno, a variável não será apagada mais adiante no próximo tick?
 

É possível abrir vários pedidos ao mesmo tempo? Por exemplo, como este

if(условие выполнено)
{
OrderSend()
OrderSend()
OrderSend()
}
 
sss2019:

É possível abrir vários pedidos ao mesmo tempo? Por exemplo, como este

Pode não funcionar dessa forma, pois a primeira solicitação será tratada pelo servidor e as próximas receberão um erro. Seria melhor usar seus próprios pedidos com manipulação de erros.
 
sss2019:

É possível abrir vários pedidos ao mesmo tempo? Por exemplo, como este?


Não se pode fazer tudo de uma só vez.

Somente consecutivamente.