[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 600

 
evillive: Não poderia ser mais simples, poderia?

Acho que sim. Eu te disse - sou um boneco, sou um boneco... O lucro na linha superior é mostrado em pips, apenas em 3 dígitos:


Tanto quanto entendi, PipProfit = USDprofit/lot/ponto para EURUSD. Para pares com cotação inversa, temos que pegar a diferença entre o preço de abertura e o preço atual e multiplicar por Dígitos: Pips = OrderOpenPrice()-Bid*Digits_coefficient; onde
Digits_coefficient = MathPow(10,Digits);

Você não precisa fazer a diferença, existe a função OrderProfit().

Vamos rever isso de novo para que fique preso em seu cérebro. Então, vamos comprar GBPJPY.

1. OrderProfit() igual a -15,27 USD = -1228,32 JPY (para conversão em iene, multiplicar pela taxa de câmbio USDJPY).

2. Dividindo o lucro pelo lote, igual a 0,1.

3. Dividimos o resultado pelo preço de 1 pip de 1 lote, igual a 0,01 JPY * 100000 = 1000 JPY. Obtemos -12,28 pontos, ou seja, como é necessário.

Este é um erro sutil, pois os números não são tomados em um mesmo momento, mas o iene está se fortalecendo bruscamente.

Fórmula para XXXYYY:

pips = ( USDYYY ou 1/YYYUSD ) * OrderProfit() / ( OrderLots( ) * Ponto ).

Aqui o ponto é o preço de 1 lote em moeda YYYY, igual a 100000 * MathPow( 10, - Dígitos ).

 

Boa tarde.

Quais poderiam ser as razões pelas quais a EA não é otimizada?

Há um parâmetro otimizado, os indicadores são padrão.

O teste está funcionando normalmente.

 
DOCTORS:

Você pode me dar uma dica?

O roteiro fecha as ordens sobrepostas. Mas há um senão - por alguma razão não fecha pedidos com lotes de tamanhos diferentes...

Você pode nos dizer onde está o problema?


Primeiro, substituir a direção do controle por

for(int i=1; i<=OrdensTotal(); i++) // loop a ordem

em

for(int i=OrdensTotal() - 1; i>=0; i--) // Laço de encomenda


em todos os lugares

 
sting-igor:

Por que alguns EAs funcionam bem primeiro no testador e depois não abrem um único negócio? Não me lembro dos nomes dos EAs, mas eu tinha três deles, talvez esteja fazendo algo errado? mt4

Se a sua EA for escrita erroneamente, ela pode realizar uma divisão por zero e depois parar de funcionar. Procure no registro por erro ZeroDevide...
 
ilunga:

Bem, para começar, substitua a direção de verificação por

for(int i=1; i<=OrdensTotal(); i++) // Laço de encomenda

em

for(int i=OrdensTotal() - 1; i>=0; i++) // Laço de encomenda


em todos os lugares


Retirado, pois o roteiro estava extremamente incorreto... Muito o que fazer... Queria que sobrepusesse as trocas a zero... mas apenas se sobrepunha... Muito obrigado por sua ajuda... ...quando eu fizer a sobreposição zero, eu afixarei para perguntas.
 

Mathemat, se você só precisa do número de pips em lucro/perda você pode fazê-lo de uma maneira ainda mais simples, eu estava apenas dormindo ontem quando escrevi ))))

Elas parecem ser fórmulas universais, adequadas para todos os pares de moedas:

double tickvalue = MarketInfo(OrderSymbol(),MODE_POINT); //если нужно значение тика для инструмента в окне которого установлен эксперт, то просто используем Point в дальнейшем

Pips = (OrderOpenPrice()-Ask)/tickvalue; // order short

Pips = (Bid - OrderOpenPrice())/tickvalue; // order long

.

 

Cavalheiros, por favor, ajudem.

Eu preciso de uma função que verifique se o preço tocou o pulso durante as últimas X barras?

Por favor, não me chute com muita força, pois eu sou um completo boneco.

 

Como reescrever o indicador Awesome apenas para 1H. Suponha que eu anexe Awesome a 4H, eu quero que o indicador exiba dados relacionados a 1H e não a 4H.

//
name for DataWindow and indicator subwindow label IndicatorShortName("AO");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);

ExtBuffer0[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i);

Mudo o NULL para PeriodH1, mas isso não ajuda.

 
flintz:

Como reescrever o indicador Awesome apenas para 1H. Suponha que eu anexe Awesome a 4H, eu quero indicador para exibir dados relacionados a 1H e não a 4H.

//---- nome para DataWindow e subwindow do indicador
IndicatorShortName("AO");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);

ExtBuffer0[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i);

Mudo o NULL para PeriodH1, mas isso não ajuda.

Mudança de NULL para "0" (o parâmetro ao lado de NULL).
 
Obrigado!!!