[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 64

 
HoBu4ek >> :
Você pode aconselhar como fazer uma EA abrir um pedido de múltiplos símbolos ao mesmo tempo? >> Obrigado de antemão!

Isto não é possível porque a EA pode abrir uma ordem para apenas um símbolo, e então você tem que esperar que a negociação (e nem sempre é bem sucedida e nem sempre rápida) libere o fluxo comercial para outras ordens.

 
Drugoy писал(а) >>

Cavalheiros, por favor, avisem um novato! Eu baixei o tutorial MQl4BookRussian.chm (autor Sergey Kovalev), o problema é que a impressão a partir deste formato é muito confusa. O Proby copiou este texto para o formato doc, as imagens desaparecem. Você sabe se o livro didático está disponível em um formato adequado para impressão (para ler em um monitor, os olhos estão ficando cansados)?

Experimente a versão on-line do livro-texto diretamente do site - https://book.mql4.com/ru/. E você pode transferi-lo para a doca sem nenhum problema.

 
Reshetov >> :

Isto não é possível porque um EA só pode abrir uma ordem em um símbolo, depois do qual você tem que esperar que a operação comercial passe (e nem sempre é bem sucedida e nem sempre rápida) e o fluxo comercial se tornará livre para outras ordens.

Com o fluxo comercial eu entendo tudo, mas como fazer sucessivamente em 3 instrumentos com intervalos mínimos de abertura de negócios (de acordo com o algoritmo de abertura do assessor deve começar em um certo segundo em três moedas de uma só vez)? Se você não se importa, você poderia postar um trecho de código como exemplo? Eu ficaria muito grato!

 
Dimoncheg >> :

int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}


Alguém pode me dizer por que nenhuma ordem abre aqui? O que eu estou fazendo de errado?

Se este for o código completo, ele nem sequer é compilado. Se você substituir um número por Lot, o Expert Advisor trabalha bem.


 
HoBu4ek >> :

Eu entendo tudo com o fluxo comercial, mas como fazer negócios abertos consecutivamente em 3 símbolos com intervalos mínimos (de acordo com o algoritmo da EA, a abertura deve começar em um certo segundo em três moedas de uma só vez)? Se você não se importa, você poderia postar um trecho de código como exemplo? Ficarei muito grato!

Acho que você só precisa de 3 pedidos para abrir para diferentes instrumentos? Por que não fazer uma variável de bandeira, por exemplo

Criar em variáveis globais

int flag=0;
string Symb;

///////////////

mais

int start()
{
if (условие открытия)
{flag=1;}

if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}

if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}

if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}


Também seria bom acrescentar um cheque aberto e só mover a bandeira depois que o cheque for bem sucedido.

 
Inzer >> :

Se este for o código completo, ele nem sequer é compilado. Se você colocar um número no lugar de Lot, a EA funciona bem.


Verifique o tipo de dados do lote. Deve ser o dobro.

 
TheXpert >> :

Portanto, só com uma olhada. Não entendi os termos, mas não há crossover na segunda variante.

Mais uma coisa - a função OrderSend devolve um bilhete int, portanto é correto verificar o sucesso desta forma:

No seu caso, você precisa verificar a existência de incorreções:

______

Sim, eu não sei como os outros, mas para mim a palavra "especialistas" soa como um escárnio. Talvez seja por isso que você não tenha ouvido falar de volta por tanto tempo. ;)

Olá!!!!!!!!!!!!!!

Sim, o que quer que você diga, não lhe chame "........", então não lhe chame ".....". Embora os especialistas sejam abreviados por especialistas (pessoas com conhecimento, professores, por assim dizer).

Eu não me importo...... Eu quis dizer apenas positivo e gentil ........

Mas não se preocupe........

Logo no início desta linha eu perguntei sobre o MA. As respostas foram muito inteligentes. Agora estou de volta a ele novamente.

Surgiu uma idéia.....

int start()
  {
//----
    double MA_0=iMA(NULL, 0, pMA, pSh, mode, price,0);
    double MA_1=iMA(NULL, 0, pMA, pSh, mode, price,1);
        
    if( MA_1< Open[1] && MA_0>Open[0])
     if( CheckOrders(OP_SELL))//продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if( MA_1>Open[1] && MA_0<Open[0])
     if( CheckOrders(OP_BUY))//покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }

Decidi afinar um pouco as condições comerciais. Mas não funcionou(((((((( Eu queria colocar open_1 e open_0 (preço aberto na primeira barra e

Preço aberto em uma barra zero) Quando verifiquei que dava erros, tive que voltar à versão original (que eu dei acima).

Como me foi explicado, aberto[1] é uma chamada de célula de matriz com nome aberto e índice [1]. Tudo isso é bom...... mas só precisa de um preço aberto em 1(2,0) bar

Dicas para o manequim.....)))))))).....

 
Como posso rastrear se uma ordem pendente foi acionada (por exemplo, ordem de compra)? É melhor procurá-la por id no histórico ou há uma opção mais curta?
 
fima_ >> :
Como rastrear que a ordem pendente foi acionada (por exemplo, na compra)? É melhor pesquisá-la por sua identificação no histórico ou há uma opção mais curta?

Você poderia tentar isto

OrderSelect(1, SELECT_BY_POS)

if(OrderOpenTime()!=0)

{

///необходимая операция

}

Mas esta é apenas uma opção se você tiver apenas 1 pedido!

 
Que função é usada para determinar o valor do pip de um instrumento financeiro? Por exemplo, para EURUSD, o valor de 0,0001 é de $10 (quando se negocia 1 lote)
Razão: