[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 599

 
alsu:
anote o que você recebe e quais mensagens você imprime no diário de bordo



mostrei onde deve entrar, mas não entrou, que fractais devem ser verificados. eu também anexei no código do arquivo e saí no arquivo de teste txt (mudei-o, adicionei o meu, mas o problema ainda permanece). eu sinceramente não sei nem mesmo que variáveis monitorar (e há uma imagem do local

)

Arquivos anexados:
ik.zip  4 kb
 

Eu assumi a função GetLot (no arquivo) de outra EA. Na minha antiga EA não há erro em si, mas na minha EA ela gera

(' - definição de função inesperada C:\Program Files\BCS Trade Station Experts\ SovetnikStochastic.mq4 (106, 15)
'Livre' - variável não definida C:\Program Files\BCS Trade Station Experts\ SovetnikStochastic.mq4 (112, 28)
'Risco' - variável não definida C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Livre' - variável não definida C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)

Qual é o problema?

Arquivos anexados:
 
Por que todos vocês amam tanto os arquivistas? Você tem 100500 linhas de código em seu código fonte?!
 

griha:

Eu assumi a função GetLot (no arquivo) de outra EA. Na minha antiga EA não há erro em si, mas na minha EA ela gera

(' - definição de função inesperada C:\Program Files\BCS Trade Station Experts\ SovetnikStochastic.mq4 (106, 15)
'Livre' - variável não definida C:\Program Files\BCS Trade Station Experts\ SovetnikStochastic.mq4 (112, 28)
'Risco' - variável não definida C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Livre' - variável não definida C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)

Qual é o problema?

Há um parêntese extra no código da função de partida antes da primeira Se é por isso que há erros. Para facilitar a leitura dos parênteses, você deve sempre tentar colocar os dois primeiro e depois escrever tudo o que precisa neles. Melhor ainda, você deve colocá-los em uma nova linha com um offset, para que blocos separados não sejam misturados (por exemplo, como no código dado na página anterior)

P.S.:

Acho que o cálculo do lote por esta fórmula

 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;    // откидываем лишние знаки после запятой, оставляем 2 знака
não funcionará corretamente para 0,1 lote com um passo a mais de 0,01, talvez eu tenha perdido algo, mas então o lote sempre será igual a 0 ( MathFloor (900*2/100/1324/0,02=0,67975831) = 0, então 0*Passo=0)...
 

Não consigo descobrir como calcular algo como OrderProfitPips( ) para uma ordem selecionada se o par for arbitrário. Isto é, lucro em pips, não em moeda de conta.

Preciso exatamente de pips - para analisar a eficácia do comércio de múltiplas moedas em diferentes pares. Preciso de pips de quatro dígitos (ou de dois dígitos, respectivamente, se o par estiver em iene). Considere que a moeda da conta é USD, e o tamanho do contrato é de 100 000 unidades.

Se o par é EURUSD, tudo é simples:

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


Se o par é AUDCHF, é um pouco mais complicado. Se a conta fosse uma conta em francos, a fórmula seria exatamente a mesma. Mas a conta é uma conta em francos, ou seja, OrderProfit() retorna em dólares. Portanto, meu lucro deve ser convertido em francos:

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

Certo?

 
Mathemat:

Não consigo descobrir como calcular algo como OrderProfitPips( ) para a ordem selecionada se o par for arbitrário. Isto é, lucro em pips, não em moeda de conta.

Preciso exatamente de pips - para analisar a eficácia do comércio de múltiplas moedas em diferentes pares. Preciso de pips de quatro dígitos (ou apropriadamente dois dígitos, se o par estiver em iene). Considere que a moeda da conta é USD, e o tamanho do contrato é de 100 000 unidades.

Se o par de moedas é EURUSD, tudo é simples:

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


Se o par é AUDCHF, é um pouco mais complicado. Se a conta fosse uma conta em francos, a fórmula seria exatamente a mesma. Mas a conta é uma conta em dólares, ou seja, OrderProfit() retorna em dólares. Portanto, meu lucro deve ser convertido em francos:

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

Certo?


Você leu http://www.fxtrademaker.com/fx_calculation.htm? Ou é http://thismatter.com/money/forex/leverage-margin-pips.htm?

Tanto quanto entendi, PipProfit = USDprofit/lot/ponto para EURUSD. Para pares cotados ao contrário, precisamos pegar a diferença entre preço de abertura e preço atual e multiplicar por Dígitos: Pips = OrderOpenPrice()-Bid*Digits_coefficient; onde
Digits_coefficient = MathPow(10,Digits);


 

Sim, parece haver um uso para ambos os links. Obrigado.

P.S. Eu decidi contar não em pips mas em moeda de conta. Os pips das cruzes de iene são desproporcionais demais em relação aos usuais. E eu queria somá-las (convencionalmente, é claro)...

 
Mathemat:

Sim, parece haver um uso para ambos os links. Obrigado.

P.S. Eu decidi contar não em pips, mas em moeda de conta. Demasiado incomensuráveis são as cifras de pips de ienes cruzados com os habituais. E eu queria somá-las (condicionalmente, é claro)...


Pips são pips, como podem ser desproporcionais? Como é diferente um lucro de 20 pip em EURUSD de um lucro de 20 pip em JPY? Você deve estar contando errado... Mas é realmente mais fácil de calcular na moeda da conta.

 
evillive: Pips é pips, como eles podem ser incomensuráveis?

Bem, em seu link (segundo) tudo é visível:

Você compra 100.000 unidades de EUR/JPY = 164,09 e vende quando EUR/JPY = 164,10, e USD/JPY = 121,35.

Lucro em JPY pips = 164,10 - 164,09 = .01 ienes = 1 pip (Lembre-se da exceção do iene: 1 JPY pip = .01 ienes.)

Lucro total em JPY pips = 1 x 100.000 = 100.000 pips.
Lucro total em ienes = 100.000 pips/100= 1.000 ienes.

Como você só tem a cotação para USD/JPY = 121,35, para obter lucro em USD, você divide pela taxa de conversão da moeda cotada:

Lucro total em USD = 1.000/121,35 = 8,24 USD.

Se você só tem esta cotação, JPY/USD = 0,00824, que é equivalente ao valor acima, você usa a seguinte fórmula para converter pips em iene para moeda nacional:

Lucro total em USD = 1.000 x 0,00824 = 8,24 USD.

Um lucro de 8,24 USD (igual a 0,824 pips em 1 lote EURUSD, por exemplo) é equivalente a 100 mil ienes pips neste exemplo!

P.S. Eu me sinto como um completo novato...

 
Mathemat:

Bem, seu link (o segundo) mostra tudo isso:

Um lucro de 8,24 USD (igual a 0,824 pips em 1 lote EURUSD) é equivalente a cem mil pips!


Você está lendo errado. Para pares com cotação inversa, pegue a diferença entre o preço de abertura e o preço atual e multiplique pelo multiplicador obtido de Dígitos ( Pips = (Bid -OrderOpenPrice())*Dígitos_coeficiente; ) , que dá (80,60-80,45=0,15) * MathPow(10,Dígitos) = 15 pips, onde

Digits_coefficient  = MathPow(10,Digits);

Não poderia ser mais simples, não é mesmo?

P.S.: Embora não, poderia ser mais simples ))))

 Pips = (Bid - OrderOpenPrice())/Point; //ордер лонг
 Pips = (OrderOpenPrice() - Ask)/Point; //ордер шорт

E esta expressão é verdadeira para TODOS os pares de moedas!

Razão: