Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 122

 
Mickey Moose: Terminei o que eu queria e posso enviá-lo para você para revisão. É ótimo. Mas é proibido afixá-lo aqui.

pessoalmente... Eu adoro um vazamento... Eu o fiz de propósito. Quando a demonstração aumentar o depósito 15 vezes em um dia, então eu o drenarei de volta. Quero ter resultados comparáveis amanhã.

 
STARIJ:
Exigências no testador? É a primeira vez que ouço falar de...

Aqui está a prova. Início:


e o fim:

e o fim:




"Então coloque na EA que, se assim for, saia e no próximo tique continue."Isto está no código.

 
novichok2018:

Aqui está a prova. O início:


e o fim:

e o fim:




"Então coloque na EA que, se assim for, saia e no próximo tick continue." - Isto está no código.

Bem e escreva se (testador) se (25 ou 26 de janeiro) voltar

 
STARIJ:

Bem e escreva se (testador) se (25 ou 26 de janeiro) voltar

Eu não entendo por que. O quê, ajudará a evitar uma repetição do fracasso? O principal é que as posições se fecham, e se a razão para a execução do comando difuso é uma falha do testador, então tudo está bem. Para ter certeza de que a causa do outro, provavelmente terá que esperar pela repetição da situação, quando com um Sell(BAY) aberto abrirá o BAY(SEL), e ver como eles fecharão.

 
novichok2018:

Isto é exatamente o que eu preciso, ou melhor, apenas paraComprar e Vender. Para minha estratégia simples, o mais importante é que as posições abertas não interfiram nas condições de fechamento um do outro. Talvez possamos passar sem matrizes? Eu não os entendo: como criá-los, como abordá-los - estou no escuro. Talvez minha situação se torne mais clara para você na captura de tela:

Tudo parece ser simples e claro no código, mas é o único caso de confusão.

Se precisarmos dividir a contabilidade dos pedidos de Venda e Compra, declararemos duas matrizes e dois balcões para cada um deles:

int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

Como resultado, o ciclo de coleta de dados será o seguinte:

g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
      continue;

   if (OrderMagicNumber != i_nMagicNumber)  // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
      continue;

   if (OrderType() == OP_BUY)
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if (OrderType() == OP_SELL)
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
      return;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
   arrstOrderInfo[nOrdersCnt].nType = OrderType();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();

   ++nOrdersCnt;
}

Então só precisamos fazer o seguinte no Expert Advisor para determinar se existe uma ordem de Compra ou Venda:

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

Afinal de contas, podemos passar sem matrizes?

As matrizes só podem ser dispensadas se não for esperada mais de uma ordem de cada tipo em um momento. Então a matriz degenera em uma variável do tipo de estrutura OrderInfo (ou uma matriz com tamanho 1).

Mas, como vejo na figura acima, este não é o caso. Você pode ter mais de um pedido de cada tipo ao mesmo tempo.
 
novichok2018:

Aqui está a prova. Comece:

Isto mostra que quando uma ordem é fechada, não é o preço de mercado. Por exemplo, a Buy is closed at Ask, enquanto a Sell is closed at Bid. Se você olhar para seu código, este pode ser o caso, pois não há verificação do tipo de pedido antes da operação de fechamento.

 

Boa noite novamente. Síntese completa da pergunta.

Estou colocando uma EA (trabalhando) no mercado. Plataforma MT4. Eu posso exibir um único arquivo. Um arquivo do Consultor Especialista. Deve passar a validade, mas não pode porque é uma EA sem indicadores. Eles estão em arquivos separados. O Expert Advisor trabalha com quatro indicadores. Eles têm que estar de alguma forma ligados ao Consultor Especialista. Você tem que especificar o caminho, ou seja, escreva-os no Consultor Especialista. O quê? e onde? Por favor, informe qual forma e como fazer isso.

Pelo que entendi, temos que usar os "Recursos" . Não sei como registrá-lo corretamente no Expert Advisor. Talvez você conheça algumas outras soluções.

Obrigado .

Aqui está o que diz quando não passa a validade

 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\HA_Smooth'.ex4' [2] 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:00 não pode abrir o arquivo 'MQL4\indicators\TrendLord'.ex4' [2] 2016.04.01 00:00:00:05 não pode abrir o arquivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00:05 não pode abrir o arquivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00:0504.01 00:00:05 não pode abrir o arquivo 'MQL4\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00:05 não pode abrir o arquivo 'MQL4\MA in Color_wAppliedPrice.ex4' [2] 2016.04.0101 00:00:05 não pode abrir o arquivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 não pode abrir o arquivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 não pode abrir o arquivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.0101 00:00:05 não pode abrir o arquivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:10 não pode abrir o arquivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 não pode abrir o arquivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime'.ex4' [2] 2016.04.01 00:00:10 não pode abrir o arquivo 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10 não pode abrir o arquivo 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]

 
Ihor Herasko:


Muito obrigado por suas respostas abrangentes e muito claras.

 
Ihor Herasko:

Se precisarmos dividir a contabilidade dos pedidos em Compra e Venda, declaramos duas matrizes e dois balcões para cada um deles:

Como resultado, o ciclo de coleta de dados será o seguinte:

Então só precisamos fazer o seguinte no Expert Advisor para determinar se existe uma ordem de Compra ou Venda:

Você poderia explicar esta linha de seu código:OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; Por queOrderInfo não tem parênteses e nenhum tipo especificado? e tudo isso é declarado em nível global?

E a determinação da disponibilidade do pedido é inserida na função de fechamento de posição? Onde? E talvez a função de fechar posições com arrays deva parecer de alguma forma diferente? É um pouco complicado para mim. Obrigado.


Tentei usar seu exemplo, mas o compilador me jura...

E também jura pelos exemplos do tutorial.

Razão: