Erros, bugs, perguntas - página 106

 
Rosh:

Isto é provavelmente para aqueles símbolos que não estão na MarketWatch, como diz para SymbolName:

Produzir o nome do símbolo pelo qual se obtém um resultado inesperado e comparar com a lista na MarketWatch.
Todos os símbolos estão presentes na MarketWatch, em particular, retorna zero para os instrumentos do tipo #AA, eu ponho especificamente falso no guião
string symbol=SymbolName(i,false);
Se não houver nenhum símbolo na janela do MarketWatch, a função
if(SymbolInfoTick(symbol,last_tick))
retorna erro 4302, a ajuda não especifica que para o funcionamento bem sucedido desta função, o símbolo deve estar presente na janela MarketWatch
[Excluído]  
sergey1294:
...não é mencionado na ajuda, que para o trabalho bem sucedido desta função é necessário que a ferramenta esteja presente na janela do MarketWatch

A ajuda precisa realmente de ser provida de pessoal com exemplos e estrangulamentos normais.

PS

Além disso, há frequentemente situações em que, após efectuar alterações na língua, alguns EAs da base deixam de funcionar (ou geram erros de compilação).

 

Notado hoje...MT5(access.metatrader5.com:443)

EURJPY, Daily:

Por exemplo GBPJPY, Daily: Aqui tudo está bem.

E aqui está um screenshot de EURJPY, Diário de um MT4 DC:

A diferença é visível a olho nu....

Como é que isto pode ser corrigido?

[Excluído]  
Rosh:

Isto é provavelmente para aqueles símbolos que não estão presentes na MarketWatch, como para SymbolName diz:

Produzir o nome do símbolo pelo qual se obtém um resultado inesperado e compará-lo com a lista da MarketWatch.

Para símbolos que não estão presentes na MarketWatch, SymbolInfoTick() devolve um erro ERR_MARKET_SELECT_ERROR "Símbolo não seleccionado na MarketWatch" (código 4302). Apenas EURUSD e GBPUSD são seleccionados na MarketWatch. Uma execução elementar mostra que SymbolInfoTick() retorna um erro ERR_MARKET_SELECT_ERRORpara símbolos não seleccionados :

IS      0       1 (EURUSD,M15)  01:53:21        ************************************************
MF      0       1 (EURUSD,M15)  01:53:21        Инструмент - EURUSD
RR      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
RG      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = EUR
QM      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = EUR
CH      0       1 (EURUSD,M15)  01:53:21        Маржа для покупки = 1271.23
QG      0       1 (EURUSD,M15)  01:53:21        Маржа для продажи = 1271.05
CQ      0       1 (EURUSD,M15)  01:53:21        ************************************************
JQ      0       1 (EURUSD,M15)  01:53:21        Инструмент - GBPUSD
HQ      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
EH      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = GBP
RN      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = GBP
MI      0       1 (EURUSD,M15)  01:53:21        Маржа для покупки = 1553.53
DP      0       1 (EURUSD,M15)  01:53:21        Маржа для продажи = 1553.25
MG      0       1 (EURUSD,M15)  01:53:21        ************************************************
LR      0       1 (EURUSD,M15)  01:53:21        Инструмент - USDCHF
NG      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
NJ      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = USD
EQ      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = USD
RI      0       1 (EURUSD,M15)  01:53:21        SymbolInfoTick() failed, error = 4302
GL      0       1 (EURUSD,M15)  01:53:21        ************************************************
PE      0       1 (EURUSD,M15)  01:53:21        Инструмент - USDJPY
DL      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
DF      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = USD
OL      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = USD
HL      0       1 (EURUSD,M15)  01:53:21        SymbolInfoTick() failed, error = 4302
QH      0       1 (EURUSD,M15)  01:53:21        ************************************************

...

A propósito, o último bloco de dados em sergey1294 é diferente dos outros: primeiro, SymbolInfoTick() devolve o mesmo código de erro desta vez, e segundo, - não acha que o instrumento, moeda base e moeda margem têm alguns nomes estranhos neste bloco de dados?

Isto é um insecto? Já notou esta esquisitice de todo?

CE      0       OrderCalcMargin (EURUSD,M1)     20:44:27        ************************************************
IG      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Инструмент - 
LS      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Валюта депозита = USD
DD      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Базовая валюта = 
CL      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Валюта маржи = 
RG      0       OrderCalcMargin (EURUSD,M1)     20:44:27        SymbolInfoTick() failed, error = 4302
 
Quanto ao último bloco de dados, isto é apenas uma pequena falha no laço, e na última consulta de dados acedeu a um instrumento inexistente, pelo que todos os campos, excepto a moeda de depósito, estão vazios
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
[Excluído]  
sergey1294:
Quanto ao último bloco de dados, é apenas o laço de força bruta que se rasgou um pouco e na última consulta de dados acedeu a um símbolo inexistente, pelo que todos os campos, excepto a moeda de depósito, estão vazios

Como é isto? Quer dizer, o registo não é da versão do código que foi dado?

A julgar pelo código, aí tudo está bem.

Ou SymbolsTotal() retornou um valor, mas durante a execução do script, algures no meio do ciclo, por um terrível acidente, o corretor, definindo a parte do servidor, removeu um símbolo do disponível, e o SymbolsTotal() - se o script o pedisse - retornaria um novo valor, um a menos, mas, uma vez que a condição de fim de loop era baseada no valor antigo armazenado na variável Total, então as funções correspondentes na última iteração ao aceder ao símbolo agora inexistente retornaram linhas vazias? :)

Até agora, apenas este cenário surgiu para que isto acontecesse. :)

 
Não sei como aconteceu, mas ainda não aconteceu
 
simpleton:

... Depois o valor calculado é explicitamente convertido em ulong. Exactamente ao ulong, porque há uma garantia de que o valor a ser fundido não é negativo.

Ao ser lançada a um tipo inteiro, a parte fracionária do tipo real é descartada. Não é o arredondamento para o mais próximo, mas precisamente o deitar fora a parte fracionária que garante o não aumento do valor máximo dos lotes, que a margem livre permite. É exactamente o que precisamos.

Simpleton, também tenho seguido um caminho semelhante, mas utilizando uma conversão explícita para int tipo. Assumi que o tamanho máximo possível do lote será limitado, quer pelo corretor/negociante, quer pelo tamanho dos meus próprios fundos. Assim, a utilização de int deve ser suficiente. Acha que existem algumas armadilhas com esta abordagem (arredondamento "a partir de baixo" usando int)?
[Excluído]  

Desenvolvedores.

Como faço aparecer parâmetros nos guiões (sou demasiado preguiçoso para mudar constantemente o código para novas condições)?

 
Interesting:

Desenvolvedores.

Como faço aparecer parâmetros nos guiões (sou demasiado preguiçoso para mudar constantemente o código para novas condições)?


#property script_show_inputs