Função Cross Order

 

Olá pessoal, 

Estou montando um EA com funções baseadas em conceitos de tape reading . Entretanto me deparei com uma questão o desenvolvimento do modo cross order, o qual é muito eficiente para quem gosta de visualizar as entradas em ativos pares. Ou mesmo para quem utiliza ativos sintéticos (Renko por exemplo) para aquisição de sinais mas necessita enviar a ordem para  ativo real. 

Coloquei a opção de inserir o ativo em todos as solicitações de ordens e volumes que tem no EA ( utilizo a biblioteca CTRADE) entretanto no Back Test consigo visualizar que algumas operações foram enviadas com o ativo sintético o que na realidade não seria possível. Alguém que já se deparou com o problema poderia me auxiliar nesta questão ? Ou ao menos dar alguma sugestão de como implementar esta alternativa? 

 
Lauro Cerqueira:

Olá pessoal, 

Estou montando um EA com funções baseadas em conceitos de tape reading . Entretanto me deparei com uma questão o desenvolvimento do modo cross order, o qual é muito eficiente para quem gosta de visualizar as entradas em ativos pares. Ou mesmo para quem utiliza ativos sintéticos (Renko por exemplo) para aquisição de sinais mas necessita enviar a ordem para  ativo real. 

Coloquei a opção de inserir o ativo em todos as solicitações de ordens e volumes que tem no EA ( utilizo a biblioteca CTRADE) entretanto no Back Test consigo visualizar que algumas operações foram enviadas com o ativo sintético o que na realidade não seria possível. Alguém que já se deparou com o problema poderia me auxiliar nesta questão ? Ou ao menos dar alguma sugestão de como implementar esta alternativa? 

Bom se entendi certo a sua dúvida, acredito que se vc esta rodando o EA no ativo sintético não poderá usar Symbol() na chamada da CTrade, e sim o nome do ativo que quer executar a ordem.

 
Lauro Cerqueira:

Olá pessoal, 

Estou montando um EA com funções baseadas em conceitos de tape reading . Entretanto me deparei com uma questão o desenvolvimento do modo cross order, o qual é muito eficiente para quem gosta de visualizar as entradas em ativos pares. Ou mesmo para quem utiliza ativos sintéticos (Renko por exemplo) para aquisição de sinais mas necessita enviar a ordem para  ativo real. 

Coloquei a opção de inserir o ativo em todos as solicitações de ordens e volumes que tem no EA ( utilizo a biblioteca CTRADE) entretanto no Back Test consigo visualizar que algumas operações foram enviadas com o ativo sintético o que na realidade não seria possível. Alguém que já se deparou com o problema poderia me auxiliar nesta questão ? Ou ao menos dar alguma sugestão de como implementar esta alternativa? 

Nada a ver com o Cross Order, só um lembrete, caso você não saiba, a profundidade do Book do MT5 é péssima. Tentar qualquer coisa de TR no MT5 é frustrante...

Se sabe, ok... vai fundo!

;)

 
Flavio Jarabeck:

Nada a ver com o Cross Order, só um lembrete, caso você não saiba, a profundidade do Book do MT5 é péssima. Tentar qualquer coisa de TR no MT5 é frustrante...

Se sabe, ok... vai fundo!

;)

Infelizmente sabemos que temos esse disparate, a ideia seria mesmo montar algo que pudesse unir alguns conceitos como de absorsão e de agressão, utilizar defesa de "pontos naturais  da técnica"  como VWAP , Ajuste do dia, fechamento anterior etc... Realmente a profundidade é algo que deixa a desejar.

 
Jonathan Pereira:

Bom se entendi certo a sua dúvida, acredito que se vc esta rodando o EA no ativo sintético não poderá usar Symbol() na chamada da CTrade, e sim o nome do ativo que quer executar a ordem.

Oi Jonathan, acabei utilizando o recurso #define para uma lógica simples de substituição (#define SIMBOLO  Ativo_Negociar!="Ativo" ? Ativo_Negociar : _Symbol) . Eu me referia ao modo de fazer isso nativamente ou algo neste sentido .

 
Lauro Cerqueira:

Oi Jonathan, acabei utilizando o recurso #define para uma lógica simples de substituição (#define SIMBOLO  Ativo_Negociar!="Ativo" ? Ativo_Negociar : _Symbol) . Eu me referia ao modo de fazer isso nativamente ou algo neste sentido .

Lauro, conseguiu resolver essa questão? eu tenho um codigo que roda em renko e executa a ordem no "ativo de negociação". Não sou programador, mas na ocasião eu contratei um cara que resolveu isso para mim. Posso partilhar com você. Em várias partes do código ele fez isso:


if(!m_symbol.Name(AtivoDeNegociação)) // sets symbol name

if(m_position.Symbol()==AtivoDeNegociação && m_position.Magic()==m_magic)

if(m_trade.Buy(check_open_long_lot,AtivoDeNegociação,m_symbol.Ask(),sl,tp))

if(m_trade.Sell(check_open_short_lot,AtivoDeNegociação,m_symbol.Bid(),sl,tp))

 TimeToStruct(iTime(AtivoDeNegociação,PERIOD_M1,0),STimeCurrent);

 
Eduardo Silva Vian:

Lauro, conseguiu resolver essa questão? eu tenho um codigo que roda em renko e executa a ordem no "ativo de negociação". Não sou programador, mas na ocasião eu contratei um cara que resolveu isso para mim. Posso partilhar com você. Em várias partes do código ele fez isso:


if(!m_symbol.Name(AtivoDeNegociação)) // sets symbol name

if(m_position.Symbol()==AtivoDeNegociação && m_position.Magic()==m_magic)

if(m_trade.Buy(check_open_long_lot,AtivoDeNegociação,m_symbol.Ask(),sl,tp))

if(m_trade.Sell(check_open_short_lot,AtivoDeNegociação,m_symbol.Bid(),sl,tp))

 TimeToStruct(iTime(AtivoDeNegociação,PERIOD_M1,0),STimeCurrent);

veja como ficou

Veja como ficou

Razão: