Bibliotecas: TradeTransactions - página 6

 
Saudações a todos, cheguei aqui por meio de uma nota de rodapé do tópico "Erros típicos e maneiras de eliminá-los ao trabalhar com o ambiente de negociação".

Gostaria de usar a biblioteca e a abordagem para calcular "minhas" posições após o envio de ordens de mercado enviadas de forma assíncrona.
A maioria dos exemplos e discussões não leva em conta a situação em que a negociação ocorre em contas nas quais outros Expert Advisors estão trabalhando em paralelo e, portanto, todos os resultados de Events e OnTradeTransaction são comuns.
Essa lógica funcionará em contas HEDGING com outros EAs? Em particular, se os especialistas negociarem no mesmo instrumento, mas com seu próprio mágico?
Essa biblioteca funcionará com um Expert Advisor de várias moedas que abre negociações em instrumentos diferentes do definido?
 
Sergey Genikhov:
Essa biblioteca funcionará com um Expert Advisor de várias moedas que abre negociações em instrumentos diferentes do definido?

Funcionará.

 
Lembre-me, por favor, acho que já corrigi um erro semelhante, mas me deparei com ele novamente e perdi muitas horas. Parece que no Convert.mqh o tamanho da matriz de destino é reduzido. Eu precisava colocar a matriz uchar[39] no recurso, mas na função ArrayToStruct o receptor do tipo uint[] é obstinadamente considerado como sendo de tamanho 9, ou seja, os últimos 3 caracteres estão faltando.
 
Stanislav Korotky:
Lembre-me, por favor, acho que já corrigi um erro semelhante, mas me deparei com ele novamente e perdi muitas horas. Parece que no Convert.mqh o tamanho da matriz de destino é reduzido. Eu deveria ter colocado o array uchar[39] no recurso, mas a função ArrayToStruct considera persistentemente o receptor do tipo uint[] como tamanho 9, ou seja, os últimos 3 caracteres estão faltando.

Sim, ele está cortado. Tente isso

    const int SizeTarget = ::ArrayResize(Dst_Array, SizeSource * sizeof(SOURCE) / sizeof(TARGET) +
                                                    (bool)(SizeSource * sizeof(SOURCE) % sizeof(TARGET)));
 

De acordo com as recomendações do MQ, no arquivo ResourceData, no método GetFullName, a constante TERMINAL_DATA_PATH deve ser usada em vez de TERMINAL_PATH.

Ambos os caminhos são os mesmos para mim, apesar do fato de que o terminal é iniciado sem o modo portátil (aparentemente porque o UAC está desativado e eu tenho permissões de gravação em Arquivos de Programas). Mas se você se conectar via RDP, todas as fontes serão retiradas do Roaming. Muitos usuários provavelmente têm todas as fontes em TERMINAL_DATA_PATH (diferente de TERMINAL_PATH) por padrão.

 
Stanislav Korotky:

Com base nas recomendações do MQ, no arquivo ResourceData, o método GetFullName deve usar a constante TERMINAL_DATA_PATH em vez de TERMINAL_PATH.

Acho que sim. Eu uso portable, então não prestei atenção. Esses códigos são usados por unidades. Como você, os usuários há muito tempo corrigiram os caminhos para os corretos.

É difícil fazer o suporte da KB, a lista de trabalho se tornou extensa.

 
fxsaber:

Sim, ela está cortada. Tente isso

Fiz o alinhamento (adição) de 4 bytes no meu código de chamada e não editei o Convert.mqh - afinal, ele foi retirado da sua pasta include e pode ser sobrescrito, portanto, é melhor corrigi-lo na KB (a propósito, não entendi realmente qual projeto é o principal para os arquivos de cabeçalho Convert.mqh, Resource.mqh e ResourceData.mqh - talvez eu esteja escrevendo no lugar errado).

 
Stanislav Korotky:

Fiz o alinhamento (adição) de 4 bytes no meu código de chamada e não editei o Convert.mqh - afinal, ele foi retirado da sua pasta include e pode ser sobrescrito, portanto, é melhor corrigi-lo na KB (a propósito, não entendi realmente qual projeto é o principal para os arquivos de cabeçalho Convert.mqh, Resource.mqh e ResourceData.mqh - talvez eu esteja escrevendo no lugar errado).

TradeTransactions não é usado.


HistoryTicks - Não consigo imaginar a negociação no MT4 sem ele. Provavelmente, ele deve ser considerado o principal. Mas não posso atualizá-lo na KB.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: HistoryTicks

fxsaber, 2020.01.09 14:43

Não notei que a versão na KB é antiga. Infelizmente, não há como fazer a atualização. O autômato da KB fornece o seguinte
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
No ME, tudo é compilado sem erros.


No HistoryTicks, a responsabilidade é muito maior, pois é real. Na prática, ela foi eliminada.

 
fxsaber:

解决该错误,用 随附的 替换 Include \ fxsaber \ TradeTransactions \ Convert.mqh

const RESOURCEDATA<double>ResourceDouble("::Double_"+__FILE__);

const RESOURCEDATA<datetime>ResourceTime("::Time_"+__FILE__);

const RESOURCEDATA<string>ResourceString("::String_"+__FILE__);


'Data' - struct undefined Convert.mqh 85 49

No modelo 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificado com [SOURCE=uint,TARGET=datetime] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
No modelo 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificado com [SOURCE=datetime,TARGET=uint] Convert.mqh 29 14
string não pode ser usada como membro de união Convert.mqh 11 12
No modelo 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificado com [SOURCE=uint,TARGET=string] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 85 49
No modelo 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificado com [SOURCE=uint,TARGET=string] Convert.mqh 70 14
string não pode ser usada como membro de união Convert.mqh 13 12
No modelo 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificado com [SOURCE=uint,TARGET=string] Convert.mqh 29 14
string não pode ser usada como membro de união Convert.mqh 13 12
No modelo 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificado com [SOURCE=uint,TARGET=string] Convert.mqh 29 14
string não pode ser usada como membro de união Convert.mqh 13 12
No modelo 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificado com [SOURCE=string,TARGET=uint] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
No modelo 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificado com [SOURCE=string,TARGET=uint] Convert.mqh 29 14



Isso não funcionou no MT4 build 1320?


 
roaddust:

Ele não funcionou no MT4 build 1320?

Tente isso.