Novo API MetaTrader 4 DISPONÍVEL - página 6

 
yewnix:

Eu não entendo algo aqui...

Eu posso fazer pedidos Envia o dia todo...

No entanto, estou tendo um grande problema ao fazer um OrderClose...


Você pode, por favor, dar um exemplo sobre estes.


Eu realmente não acho que seja meu .NET wrapper DLL.

Olá yewnix!


Você pode dar uma olhada em <Arquivos de Programas>\TZMT4API-4.zip


este simples código mql, feche todas as ordens abertas, uma vez que você inclua <orderproxy.mqh>


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

Cordiais cumprimentos.

 
TradeZone:

Olá yewnix!


Você pode dar uma olhada no C:\Arquivos de programas\TZMT4API\Short_Sample_MQL4.zip


este simples código mql, feche todas as ordens abertas, uma vez que você inclua <orderproxy.mqh>


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

Cordiais cumprimentos.

Estou tentando fazer isto em C#.

Eu assumi suas funções e escrevi um wrapper dll para .NET

ou seja


preço duplo = MT4ApiNet.MarketInfo_MT4(h, "GBPUSD", (int)MT4ApiNet.MarketInfoType.MODE_ASK)

MT4ApiNet.OrderSend_MT4(h, "GBPUSD", (int)MT4ApiNet.OrderType.OP_BUY, 1, askprice, 3, (askprice - 0,0050), (askprice + 0,0050), "Meu Programa", 100, 0);


Isto funciona perfeitamente. Esta ordem aparece perfeitamente.

Agora... Se eu receber o pedido# do MetaTrader(usando 1234 como pedido# por exemplo)


MT4ApiNet.OrderClose_MT4(h, 1234, 1, MT4ApiNet.OrderClosePrice_MT4(h,1234), 20);


Isto não cancela o pedido...

Mesmo que eu faça um ciclo através dos pedidos... e faça um MT4ApiNet.OrderGet_MT4 ele ainda não funciona

 

FYI.

Depois de fazer o OrderClose, se eu receber o último erro...

MessageBox.Show(MT4ApiNet.ErrorDescription_MT4(MT4ApiNet.GetLastError_MT4(h)));


Este retorno Erro Geral



Você pode pelo menos mostrar um OrderClose em delphi ?

Mesmo em delphi meu código está pendurado

 
TradeZone:

Oi juso,


<Arquivos de programa>>ZONA DE COMÉRCIO TZMT4API}Developer=MetaTrader4 API.txt contém o que você quer.


Cordiais cumprimentos.

Olá TradeZone


do quex para uma resposta rápida. A última vez que eu estava desenvolvendo ativamente o c++ foi há 8 anos e naquela época era necessário ter *.h e *.lib da dll para poder exercitar a api naturalmente. Caso você tenha o arquivo *.h e não tenha *.lib, você ainda pode fazê-lo resolvendo dinamicamente o endereço da função, embora o processo seja mais enfadonho. Portanto, eu mesmo posso criar o arquivo *.h, embora ainda falte o *.lib. Talvez haja uma maneira fácil de criar o arquivo *.lib a partir da própria dll, da qual eu não tenho conhecimento.


Tome cuidado

Juso

 

Zona de comércio,


Você poderia, por favor, postar um comando OrderClose_MT4 de amostra de trabalho sendo enviado do aplicativo Delphi.

Como dito anteriormente, eu não consigo fazer isto funcionar.


Obrigado!

 
solavanco... solavanco...
 

Bem, porque ainda não recebi uma resposta a isto, comecei a investigar como sua DLL realmente funciona.

Bastante boa idéia, na verdade.

Carregue 10 gráficos cada um anexado a um EA diferente.

Estes EAs rodam e criam arquivos no diretório experts/files.

A DLL lê esses arquivos de volta para mostrar os dados em seu aplicativo programado.

A EA verifica a existência de arquivos (produzidos pelas chamadas DLL) e se existem transações de processo, então crie outros arquivos para devolver os dados de resposta e depois apague o arquivo criado pela DLL para que saibamos que a transação foi concluída ou falhou.


Se não me engano, seu Handle retornou do comando Login_MT4 é apenas um índice para o nome do diretório gerado aleatoriamente. Desta forma você sabe qual o processo terminal.exe a controlar e onde colocar seus arquivos gerados.


Eu poderia estar errado com tudo isso, só quero corrigir a questão OrderClose que tenho tido...


Entretanto, ao invés de criar arquivos repetidamente... Eu recomendaria muito o uso do Memory Mapping(Create / Open Memory Map based on Pair Name_Handle)

A propósito, um bom trabalho... apenas que você poderia me falar sobre o OrderClose para que eu não tenha que codificar meus próprios EAs e a interface DLL do Memory Map.


Aí estão, pessoal, minha análise sobre este API.


Abraço!

 

Gente,

Eu tenho uma integração como esta funcionando bem e testada (não este código). Ela é feita através de um especialista e expõe a funcionalidade através de um módulo C++/ Gerenciado C++ a um módulo .NET. Ele permite uma gestão suave das negociações, informa erros, dá cotações em tempo real, etc. A comunicação é feita através de TCP, portanto, é rápida e confiável.

Ele será postado totalmente gratuito como parte de uma nova plataforma de negociação de código aberto (.NET based, pode usar o MT4 para receber dados ou executar ordens). Você pode escolher usar a plataforma, ou simplesmente uma pequena parte da integração - isso depende de você.

Se você estiver interessado, ponha as mãos no ar, e eu lhe darei mais detalhes :)

O lançamento da plataforma está previsto para dentro de alguns dias (aprox. 15.Out).

 

Peer2k,


Legal, eu pensei em usar TCP em vez de Mapeamento de Memória.

Se você quiser enviar um link para o código, eu não me importaria de olhar para ele.

Mas isso depende de você :)


Saúde!

yewnix@gmail.com

 
hey, peer2k, isso seria muito legal, por favor, me poste com os detalhes, yuryrub@gmail.com.