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

 
Snower: A linha amarela é o canal de preço que o preço deveria quebrar, e que a ordem abriria com uma vela sorridente, e todos os anteriores seriam ignorados.

em seu código, o preço channel_top e channel_bottom do canal está definido acima? Onde está a definição de uma barra de pino?

 
Vitaly Muzichenko:

Resposta

Artyom, você não leu com atenção: o TS precisa abrir apenas em uma quebra de barra de pino, respectivamente, se você prescrever uma barra de pino (corpo pequeno e sombras grandes), a condição pode ser atendida

Vitaly, eu estava respondendo a isto:

e ignorou todos os anteriores...

Se todos os que antes eram barras de pinos, então como ignorá-los quando eram correntes, eram barras de pinos que atravessavam a linha?

 
Sergey Likho:

Como é tratada a função iCustom no MT4? Por favor, responda àqueles que sabem disso!


Por exemplo, no testador de estratégia, um EA chama o indicador a cada tique.

Quando a função é chamada, o indicador é carregado na memória, recalcula todos os valores da barra zero a Barras e então retorna o valor no offset requerido.

Se eu solicitar o valor de 1 barra no primeiro tick e o valor da segunda barra no segundo tick, então meu consultor especializado calculará o indicador duas vezes em todo o histórico?


Se o Expert Advisor acessar o indicador1, e ele tiver iCustom para o indicador2. Quantas vezes o indicador2 será recalculado ao solicitar o valor do indicador1?


Talvez, o Strategy Tester e o terminal MT4 armazene os valores indicadores em cada barra, para que não sejam recalculados a pedido repetido?

Tudo depende da realização do indicador. Se o cálculo estiver correto, então o indicador calcula apenas a barra atual - as outras foram calculadas a (taxas_total-prev_calculado)>1

 

como calcular a média do iMAOnArray sobre uma matriz se houver valoresVAZIO_VALOR na matriz ?

 
Максим Дмитриев:

como calcular a média do iMAOnArray sobre uma matriz se houver valoresVAZIO_VALOR na matriz ?


Se pelo menos um valor na amostra média éVAZIO_VALOR, então o valor do iMAOnArray nesse ponto também éVAZIO_VALOR.

 

Bom dia a todos vocês. Estou testando um EA. Não vou negociar com ela, mas apenas para verificar alguma regularidade. A EA abre um pedido a cada minuto em um castiçal e se o pedido for fechado em um SL, abre outro pedido de COMPRA a preço fechado em um SL.


int start()                                             
{
if(Bid == iOpen(NULL,PERIOD_M1,0))
if ( G != Minute() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,Y10,123 );
G  =  Minute();
}
////*******   Если в списке закрытых ордеров есть ордер закрытый по СЛ - открыть другой ордер
int Счетф=0,  Номерф=OrdersHistoryTotal()-1;
for( ; Номерф>=0; Номерф--)
{
if(!OrderSelect(Номерф, SELECT_BY_POS, MODE_HISTORY)) continue;
if(OrderProfit()>=0) break;
Счетф++;
if(Счетф>0)
if(TimeCurrent()==OrderCloseTime())
OrderSend(Symbol(),OP_BUY,1,Ask,1,Bid-400*Point,Bid+200*Point,Y11,123 );
}
return;
}

Oproblema é que... Se vários pedidos forem fechados em uma só vez e o último pedido for fechado em um PI, o pedido de COMPRA que eu preciso não é aberto. Isto porque o programa pensa que o último pedido foi fechado por um TP, não por um SL. Aqui está um exemplo de uma situação desse tipo

13:38:15.859 2008.01.02 15:01.46 Testador: pare a perda #232 a 1.46566 (1.46560 / 1.46562)

13:38:15.859 2008.01.02 15:01:46 Testador: pare o prejuízo #233 em 1.46566 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:01:46 Testador: pare o prejuízo #302 em 1.46562 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:02:00 MACD Amostra EURUSD,M1: aberta #347 venda 0,10 EURUSD a 1.46570 sl: 1,46972 tp: 1.46372 ok
Você poderia explicar qual estrutura de idioma deve ser usada para abrir um pedido de COMPRA em um tick logo após o fechamento do pedido de SL no mesmo tick com o pedido de SL.

Obrigado.

 

Olá!

Eu já estou com os miolos em franja. Como posso verificar se há um certo preço na matriz dupla?

Escrevi-o assim para o teste:


double prmas[5] = {11,22,33,44,99};

ArrayBsearch(prmas,OrderOpenPrice(),WHOLE_ARRAY,0,MODE_ASCEND));


O roteiro encontra 11, 22, 33, 44 sem nenhum problema (o terminal tem tais ordens). Entretanto, se o roteiro processar o preço de 45, por exemplo, ele ainda mostra 3 (posição do preço 44 na matriz).

O que eu realmente preciso é de um bool - se houver um preço do pedido sendo processado na matriz, ele deve retornar verdadeiro, se não, ele deve retornar falso. Mas eu ainda não encontrei tal função no idioma.

 

Boa tarde. Você pode me dizer por que o arquivo não está sendo criado e os dados não estão sendo escritos:

   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   string file_name=terminal_data_path+"\\MQL4\\Files\\VolC(Symbol(),Period())";
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
YarTrade: Boa tarde. Você pode me dizer por que o arquivo não está sendo criado e os dados escritos nele?

Examinem cuidadosamente a pasta de Arquivos!!! Sempre escreva para a caixa de areia = pasta de arquivo . Tente desta forma:

   string file_name=VolC(Symbol(),Period());  // А кто такой ВолК = VolC  ???
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
STARIJ:

Examinem cuidadosamente a pasta de Arquivos!!! Sempre escreva para a caixa de areia = pasta de arquivo . Experimente assim:


VolC - Eu dei esse nome ao arquivo. O nome do arquivo não é necessário?

Razão: