Erros, bugs, perguntas - página 112

 
sandex:

Quem utilizou a função OrderCheck.

Esta é uma construção:

           MqlTradeRequest request;
           request.action=TRADE_ACTION_DEAL;
           request.symbol=_Symbol;
           request.volume=volume_exe;
           request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
           request.sl=0;
           request.tp=0;
           request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
           request.type=ORDER_TYPE_BUY;
           request.type_filling=ORDER_FILLING_CANCEL;
           MqlTradeResult result;
           OrderCheck(request, result);
           if(OrderSend(request, result)==false)

Ao compilar, recebo um erro: 'resultado' - a conversão de parâmetros não é permitida.

Se remover OrderCheck, tudo se compila normalmente e a posição abre no testador.

Veja-se a descrição da função. Diz sobre a estrutura de resposta MqlTradeCheckResult.
 
Yedelkin:
Dê uma vista de olhos à descrição da função. Diz sobre a estrutura de resposta MqlTradeCheckResult.

Muito obrigado.

 
Dmitriy2:

Eis o que é...

Deve contar os lucros dos negócios a partir da data especificada. Dá um resultado completamente diferente do que realmente é. Por exemplo, obtive 611 em vez de um resultado de cerca de 2000. Comecei a verificar por dia (linha comentada). Há(!!) dias em que o resultado é o mesmo, mas normalmente não é o que deveria ser...(não consegui encontrar qualquer regularidade). E o depurador produz o mesmo ciclo exacto para toda a quantidade de negócios. Embora só possa rastrear apenas este número de negócios porque não são exibidos valores para quaisquer outras variáveis excepto para as variáveis int (Expressão não pôde ser avaliada).

Este código está correcto e estou a usar correctamente o depurador?

O circuito de transacção deve ser

for(i=0;i<HistoryDealsTotal();i=i++)
No depurador, utilizar 'Step in' (F11). Depois, a introdução de uma função onde uma variável ou expressão é definida, mostrará o seu valor.
 
Valmars:

O ciclo de transacção deve ser

No depurador, utilizar 'Passo com Entrada' (F11). Depois, quando se introduz uma função onde uma variável ou expressão é definida, ela mostrará o seu valor.

digamos que o ciclo começa do zero... embora onde está escrito que os números do negócio começam de zero? A julgar pelo facto de agora termos 10611 (antes era 611, em vez de cerca de 2000), ou seja, mais o tamanho do depósito original, não tenho a certeza ... mesmo que seja zero mesmo um ainda não entendo de onde vem 10.000

Depurador, estou a ver, F11.

 
Dmitriy2:

digamos que o ciclo começa do zero... embora onde está escrito que os números do negócio começam de zero? A julgar pelo facto de agora recebermos 10611 (antes era 611, em vez de cerca de 2000), ou seja, mais o tamanho do depósito original, não tenho a certeza ... mesmo que seja zero mesmo um ainda não entendo de onde vem 10.000

Depurador, estou a ver, F11.

O primeiro negócio é normalmente um depósito. Parece que os negócios são contados na história a partir do 0. Assim, se não me engano, o 0-ésimo negócio será um depósito.

Posso esclarecer a fórmula pela qual é calculado o lucro do negócio?

PS

Se a memória me serve correctamente, o resultado deve ser calculado desta forma - TotalProfit = Lucro+Swap-Commision;


 
Kos:
Porque é que SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), devolve zero?
0 significa sem restrições.
 
Interesting:

A primeira transacção é normalmente um depósito. Portanto, se não estou enganado, o 0º comércio será um depósito.

Pode especificar a fórmula utilizada para calcular o lucro sobre o negócio?

PS

Se a memória me serve correctamente, o resultado deve ser calculado desta forma - TotalProfit = Lucro+Swap-Commision;


na última página em código completo

por este código, o depósito não deve em caso algum ser tido em conta

a comissão é também mais - é menos.

 
Yedelkin:

No início o compilador queixou-se que "#importar "lbS7N_Servis.ex5"" estava em falta.

Depois de apagar esta linha, ela cedeu:

2010.08.28 22:19:51 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

Quando substituí o número de conta no código pelo meu número de conta, recebi:

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) A=101699 B=101699 C=101699

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

Servidor MQ, construir 316.

Obrigado. Tudo está a funcionar como deve ser consigo. Ainda não o descobri.
 
sergey1294:

e a minha M1 não correspondeu.

Significa que também tem um insecto, mas menos do que eu.

Talvez devesse procurá-lo na ligação do programa ao sistema.

Que tipo de sistema tem?

Tenho uma licença Core2duo 1.3 Ghz 64 Win7 HB, 4GB ddr 2 RAM, construir. 316

 
simpleton:

E existem até três situações únicas. Estes são os detectados. E quantos não foram detectados?

E com este estado de coisas a MetaQuotes vai começar o Campeonato 2010 dentro de um mês?

Oh, quantas "maravilhas" o MetaTrader 5 nos reserva...

Os vencedores serão aqueles cujos programas contêm tantos erros que, em combinação com pequenas falhas no programa, terão um efeito tal que ninguém jamais os alcançará.