[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 148

 

Mas obrigado pela dica - corrigi um pouco o código e, na verdade, sem a linha de código abaixo, a EA estava abrindo posições em cada tick

e depois de ter colado a linha de código = EA abriu uma posição exatamente como eu havia planejado.

int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
 
first_may:

CME é o quê?

o_o - CME
 
BeerGod:
Isso já aconteceu antes, acho que esta é a intriga da DC para que seja problemático testar qualquer coisa.
O CD não tem nada a ver com as citações baixadas do servidor de dados históricos.
 
O CD não tem nada a ver com as citações baixadas do servidor de dados históricos.

Bem, tudo é "supostamente" baixado de um único servidor... Além disso, eu pensei que no testador a alavancagem da conta corrente não tem efeito... Mas algumas corretoras têm essa magia de rua... Pode ser que algumas corretoras também possam brincar com cotações? (Embora todos eles provavelmente tenham problemas aqui)...
 
alex12:

Mas obrigado pela dica - corrigi um pouco o código e, na verdade, sem a linha de código abaixo, a EA estava abrindo pips em cada tick

e após ter colado a linha de código = EA abriu uma posição exatamente como eu havia planejado.

Bem... esta é apenas uma correspondência aparente com o planejado. Esta construção não leva em conta o símbolo, o tipo de pedido ou seu magik. Ou seja, se houver outro EA trabalhando por conta de outro símbolo, então este não funcionará, porque já temos uma posição. Se apenas esta EA funcionar, mas houver uma posição de Venda e a posição de Compra precisar ser aberta, ela não a abrirá - a posição já existe e há muitas outras regras possíveis, por exemplo, você abriu manualmente uma posição ou definiu uma ordem pendente - ou seja, a EA subiu...

Você precisa verificar especificamente: já existe uma posição aberta sobre tal e tal símbolo, com tal e tal mágico, de tal e tal tipo? Se não - aberto.

 
artmedia70:

Bem... é apenas uma combinação aparente com o planejado. Este projeto não leva em conta o símbolo, o tipo de pedido ou seu magik. Isto significa que se houver outro EA trabalhando para outro símbolo na conta, então este não funcionará, porque já existe uma posição. Se apenas esta EA funcionar, mas houver uma posição de Venda e a posição de Compra precisar ser aberta, ela não a abrirá - a posição já existe e há muitas outras regras possíveis, por exemplo, você abriu manualmente uma posição ou definiu uma ordem pendente - ou seja, a EA subiu...

Você precisa verificar especificamente: já existe uma posição aberta sobre tal e tal símbolo, com tal e tal mágico, de tal e tal tipo? Se não houver - aberto.

Obrigado. Sim, é verdade, porque esta EA só abre posições de compra para continuar o movimento e
somente após o fechamento da posição de compra por take. Por exemplo, se a posição de compra estiver aberta e o preço descer para o nível estabelecido em
, então outra posição de compra não é aberta (e deveria ter sido aberta pela TS).
Eu prescrevi um determinado preço na seção Enviar linhas de pedido - preço, veja o código abaixo.
Minha tarefa é escrever o código correto no EA = abrir mais uma posição de compra após abrir posição de compra,
, se o preço descer para um determinado nível - para abrir mais uma posição de compra. E assim, qualquer que seja o nível
o preço não cruzou no código - sempre abrir posição de compra, não importa quantos

Há posições em aberto no momento.

extern double Lot=1;

int g=20; //тейкпрофит

double price[10];   // Заданный уровень 

//-----------------------
 
int init()
  {
  
double price[10];   // объявляем массив из 5 элементов  
           
price[0] = 1.2100; // обращаемся к первому элементу массива и 
                   // присваиваем ему цену. Обратите внимание 
                   // на то, что индекс первого элемента 
                   // начинается с 0. Это важная особенность,
                   // к которой нужно привыкнуть.   
 
price[1] = 1.2200;  // обращаемся ко второму элементу 
price[2] = 1.2300;  // и так далее 
price[3] = 1.2400; 
price[4] = 1.2500;
price[5] = 1.2600; 
price[6] = 1.2700;  
price[7] = 1.2800; 
price[8] = 1.2900;
price[9] = 1.3000;  

   return(0);
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
   
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   price[0]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[1]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[2]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2300,10,0,Ask+g*Point,"My order #",13);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[3]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2400,10,0,Ask+g*Point,"My order #",14);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[4]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2500,10,0,Ask+g*Point,"My order #",15);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[5]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2600,10,0,Ask+g*Point,"My order #",16);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[6]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2700,10,0,Ask+g*Point,"My order #",17);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[7]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2800,10,0,Ask+g*Point,"My order #",18);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[8]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2900,10,0,Ask+g*Point,"My order #",19);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[9]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.3000,10,0,Ask+g*Point,"My order #",20);
   }
      return(0);
  }
//+------------------------------------------------------------------+
 
Boa tarde. Eu gostaria de otimizar o código. Acrescentei três buffers ao indicador. Depois tenho uma longa busca de sinais neles. Primeiro busco MA1[], depois МА2[] e МА3[]. A diferença é apenas um dígito do nome do buffer utilizado para os cálculos. É possível fazer o loop do código.
 
alex12:
Sim, isso é certo, porque esta EA só abre bai na continuação da mudança e
somente após o fechamento da posição de compra no take ....
A cinta de abertura { deve ser colocada antes do preço[...]=Ask; (ver abaixo). Leia novamente sobre o operador "se". Se não houver parênteses imediatamente após o "se", ele trata apenas de uma ação (você tem preço[...]=Ask;), se você precisar de várias ações, elas devem ser colocadas em {...} imediatamente após o "se".
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   { 
      price[0]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   {
      price[1]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
 

Boa tarde.

Preciso de um histórico de 15 milhões de EURUSD antes de 2009, alguém pode compartilhar o seu? (ou seja, aquele em que você depura seus especialistas).

Eu ficaria muito grato.

 
ewoke:

Boa tarde.

Preciso de um histórico de 15 milhões de EURUSD antes de 2009, alguém pode compartilhar o seu? (ou seja, aquele em que você depura seus especialistas).

Eu ficaria muito grato.

Pressione F2 com seu terminal aberto, depois vá para Fx Majors -> EURUSD -> 1 Minuto (M1) -> Download.

Razão: