Estou aprendendo a escrever um conselheiro... - página 3

 
Ainda há 1 OrderSend error 130... De que depende?
 
paukas >> :

Baixar velas de minutos (por exemplo, da Alpari) e fazer um teste em velas de minutos.

Como vou fazer um teste em minutos se tenho um MTS para H4?

Você não pode testar em castiçais de 4 horas com 5 pips stop.

Por que não?
 

No artigo Automated Trading Championship 2007: Erros Comuns em Peritos
Li que OrderSend error 130 (ERR_INVALID_STOPS) está errado ou paradas muito próximas.

Chamaram o CD, perguntaram a que distância mínima uma parada pode ser estabelecida - disseram que não havia tal limite... Estranho!

Eu também não entendo uma coisa. Se eu abro manualmente uma ordem, não posso realmente colocar parada e lucro nela... Então como a OrderSend() faz isso?

Eu verifiquei se faço um pedido manualmente e depois coloco uma parada... Um mínimo de 4 pips é definido a partir do preço aberto - ou seja, o preço atual...

Agora eu tenho que torcer OrderModify(). Por que precisamos de um stoploss na OrderSend() então ?

 
ALex2008 >> :

Como vou fazer um teste em minutos se tenho um MTS para H4?

Por que não?

O teste no menor TF é feito da seguinte forma

Você escreve chamadas como esta (por exemplo)

   wpr[1] =   iWPR ( Symbol(), 10, PERIOD_H4, 1 );
   wpr[2] =   iWPR ( Symbol(), 20, PERIOD_H4, 1 );
   wpr[3] =   iWPR ( Symbol(), 40, PERIOD_H4, 1 );
   wpr[4] =   iWPR ( Symbol(), 60, PERIOD_H4, 1 );


O teste será o mais eficiente e correto se você o fizer em um minuto!

será o mais correto!

---

Infelizmente, você não pode fazer isso em carrapatos! Porque não há histórico de carrapatos no testador MT4


---

Aprenda a escrever o TF imediatamente! E então seu EA não se importará com o TF que ele foi executado!

é razoável escrever parâmetros em vez de constantes - para um código mais simples e uma percepção mais clara, coloco constantes

 

Yuri) Eu não sou um profissional nisto...) Pelo menos descreva o que significa para mim. wpr[1] = iWPR ( Symbol(), 10, PERÍODO_H4, 1 );

 
ALex2008 >> :

Yury) Eu não sou um profissional neste negócio...) Pelo menos descreva o que significa. wpr[1] = iWPR ( Symbol(), 10, PERÍODO_H4, 1 );

O iWPR é um indicador embutido

duplo iWPR( símbolo de string, período int, período int, turno int)
Larry Williams' Percent Range indicator calculation.
Parâmetros:
símbolo - Nome do símbolo do instrumento, em cujos dados este indicador será calculado. NULL significa símbolo atual.
prazo - Período. Pode ser um dos períodos do gráfico. 0 significa o período do gráfico atual.
período - Período (número de barras) para calcular o indicador.
shift - Índice do valor recebido do buffer de indicadores (shift relativo à barra atual de volta por um número especificado de períodos).


Exemplo:
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1)) return(0);

está descrito na FAQ, dê uma olhada

wpr[...] é a matriz onde os resultados de cada indicador com um período diferente são resumidos

(você pode nomear a matriz como quiser)

duplo wpr[5] ;

wpr[1] = iWPR ( Symbol(), 10, PERÍODO_H4, 1 );
wpr[2] = iWPR ( Symbol(), 20, PERÍODO_H4, 1 );
wpr[3] = iWPR ( Symbol(), 40, PERÍODO_H4, 1 );
wpr[4] = iWPR ( Symbol(), 60, PERÍODO_H4, 1 );


Acabei de mostrar uma chamada com períodos diferentes...

A idéia era colocar um período em indicadores para que você pudesse testá-lo em qualquer TF

 
Se a idéia era escrever um período nos indicadores de uma vez! para que você pudesse testá-lo em qualquer TF, eu entendo... -O Expert Advisor não tem indicadores, ele só tem velas H4 (como um indicador) -TF eu agora vou tentar considerar em todos os lugares do código e então você pode testá-lo em qualquer TF)
 

Decidiu fazer uma modificação em uma ordem em aberto...

Logo após o pedidoEnviar

      if (OrderSelect(0,SELECT_BY_POS)==true)
        if (OrderType()==OP_BUY)
          OrderModify(OrderTicket(),OrderOpenPrice(), Stop, Take, colorBaySell);


Há um erro no registro:

bilhete inválido para a função OrderModify
11:43:54 2005.01.26 13:12 EURUSD: OrderModify error 4051
Por favor, informe o que está errado?

 

Os novos valores de parada devem ser definidos como segue: :

OrderModify(OrderTicket(), OrderOpenPrice(), Bid- Stop*Point,.....
                                                    
onde a nova parada é estabelecida - em pips (em números inteiros)
 

MarketInfo() usado para OrderClose é necessário para OrderModify?

Razão: