Automatize seu trading
Sua Linguagem
Suas Regras

Coloque suas ideias de trading em ação com a API GMI Edge - codifique e automatize seus bots (robôs) de trading em qualquer linguagem, incluindo Python, C, C++, C# e muito mais.

Benefícios dos Bots de Trading vs. Trading Manual

Ação no Mercado 24/7

Os robôs nunca dormem. Aproveite oportunidades durante todo o dia, mesmo enquanto descansa.

Trading Sem Emoções

Elimine o medo e a ganância. Os robôs executam seu plano sem hesitação.

Reação Imediata a Eventos de Mercado

Responda automaticamente a subidas nos preços, notícias ou volatilidade - mais rápido que qualquer humano.

Escalabilidade

Gerencie estratégias complexas ou trading de alta frequência em grande escala, impossível ao negociar manualmente.

Como Funciona

Registre-se ou Inicie Sessão na Área de Membros da GMI

Receba seus Dados de Acesso para a Conta de Trading GMI EDGE

Leia a documentação e comece a escrever (codificar) sua estratégia de trading

Execute seu bot de trading e observe ele negociar por você

Funcionalidades

Liberdade com Várias Linguagens

Desenvolva seu robô em qualquer linguagem de programação - Python, C++, C#, Java, JavaScript, Go e muito mais. Sem restrições.

Potencial Ilimitado de Automação

Sem limites no número ou complexidade dos bots - evolua dos bots simples até estratégias avançadas com múltiplos ativos e múltiplas contas.

Compatibilidade Multiplataforma

Use a API no Windows, Mac, Linux ou até mesmo em servidores na nuvem - execute seus bots em qualquer plataforma.

Arquitetura Transparente e Moderna

Sem camadas ocultas ou linguagens de script proprietárias. Seu código comunica diretamente com nossa API, garantindo total transparência e flexibilidade.

FAQ

O que é a API GMI Edge?
A API GMI Edge é uma ferramenta poderosa que lhe permite automatizar completamente sua atividade de trading, desenvolvendo bots (robôs) em qualquer linguagem de programação. Conecte-se diretamente à sua conta GMI, receba dados de mercado em tempo real e execute suas negociações automaticamente.
Que linguagens de programação posso utilizar com a API GMI Edge?
Você pode utilizar qualquer linguagem de programação. Tem experiência com Python, C++, C#, Java, JavaScript ou outra linguagem? A API GMI Edge é flexível para se adaptar ao seu fluxo de trabalho.
A ligação da API é segura?
Todas as comunicações via API são criptografadas para sua segurança. Em breve, introduziremos a autenticação por chave de API para uma camada adicional de segurança e controle.
Que tipo de suporte está disponível para os usuários da API?
Você terá acesso a suporte técnico dedicado, documentação detalhada, exemplos de códigos e uma comunidade ativa de programadores. Existe um sistema de suporte prioritário para usuários avançados.
Existem alguns limites de utilização ou taxas para a API?
A API GMI Edge é completamente gratuita para todos os clientes GMI Edge, sem taxas ocultas.
Consigo testar meus bots de trading sem arriscar dinheiro real?
Sim, a GMI Edge oferece contas demo, que lhe permitem experimentar em segurança e otimizar suas estratégias sem colocar seu dinheiro em risco.

Exemplo de código para um Bot de Trading

import yaml

import httpx

import sys

import ssl

from datetime import datetime, timedelta

import time



def read_config(filename):

with open(filename, "r") as file:

return yaml.safe_load(file)



def check_response(response):

if response.status_code == httpx.codes.OK:

return

error_body = response.json()

error_code = error_body["Code"]

error_message = error_body["Error"]

print(f"[{error_code}] {error_message}")

sys.exit(-1)



def report_position(position):

order_id = position["OrderId"]

amount = position["Amount"]

symbol = position["Symbol"]

order_side = position["OrderSide"]

order_status = position["OrderStatus"]

print(f"#{order_id} {symbol} {amount} {order_side} {order_status}")



def time_to_seconds(time_text):

t = datetime.strptime(time_text, "%M:%S")

delta = timedelta(minutes=t.minute, seconds=t.second)

return delta.total_seconds()



def find_position_profit(orders_state, order_id):

pos_state = next(

order for order in orders_state if order["OrderId"] == order_id

)

return pos_state["Profit"]



if __name__ == "__main__":

print("Reading bot configuration...")

config = read_config("bot-config.yaml")

api_url = config["api-url"]

account = config["account"]

password = config["password"]

symbols = config["symbols"]

pause1 = config["pause1"]

pause1_sec = time_to_seconds(pause1)

pause2 = config["pause2"]

pause2_sec = time_to_seconds(pause2)

print("Done.")


print(f"Connecting to account {account} via {api_url}...")

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)

ssl_context.load_default_certs()

http = httpx.Client(verify=ssl_context)

login_response = http.post(

api_url + "/login", json={"BotId": account, "Password": password}

)

check_response(login_response)


print("Connected.")

access_token = login_response.json()["AccessToken"]

auth_headers = {"Authorization": "Bearer " + access_token}


try:

while True:

print("Checking my open positions...")

open_pos_response = http.get(

api_url + "/positionlist", headers=auth_headers

)

check_response(open_pos_response)

all_positions = open_pos_response.json()["Orders"]

my_positions = [

p for p in all_positions if p["OrderSource"] == "TRADING_API"

]


if len(my_positions) == 0:

print("No open positions.")

else:

for position in my_positions:

report_position(position)


print("Closing my open positions...")

for position in my_positions:

order_id = position["OrderId"]

close_pos_response = http.post(

api_url + "/closeposition",

json={"OrderId": order_id},

headers=auth_headers,

)

check_response(close_pos_response)


print("Closed.")


for symbol in symbols:

print(f"Checking symbol {symbol}...")

syminfo_response = http.post(

api_url + "/symbolinfo",

json={"Symbol": symbol},

headers=auth_headers,

)

check_response(syminfo_response)

min_lots = syminfo_response.json()["MinTradeAmount"]

lot_size = syminfo_response.json()["ContractSize"]

min_amount = min_lots * lot_size


print(f"Minimum tradable amount for {symbol}: {min_amount}")


print("Opening positions")

pos_ids = []

for symbol in symbols:

buy_pos_response = http.post(

api_url + "/sendorder",

json={

"Symbol": symbol,

"OrderSide": "BUY",

"OrderType": "MARKET",

"Amount": min_amount,

},

headers=auth_headers,

)

check_response(buy_pos_response)

report_position(buy_pos_response.json())

buy_pos_id = buy_pos_response.json()["OrderId"]


sell_pos_response = http.post(

api_url + "/sendorder",

json={

"Symbol": symbol,

"OrderSide": "SELL",

"OrderType": "MARKET",

"Amount": min_amount,

},

headers=auth_headers,

)

check_response(sell_pos_response)

report_position(sell_pos_response.json())

sell_pos_id = sell_pos_response.json()["OrderId"]

pos_ids.append((buy_pos_id, sell_pos_id))


print(f"Wait {pause1}...")

time.sleep(pause1_sec)

print("Checking profit and loss...")

account_state_response = http.get(

api_url + "/accountstate", headers=auth_headers

)

check_response(account_state_response)

balance = account_state_response.json()["AccountState"]["Balance"]

print(f"Account balance: {balance}")

orders_state = account_state_response.json()["OrderStates"]


to_close = []

for buy_pos_id, sell_pos_id in pos_ids:

buy_pos_profit = find_position_profit(orders_state, buy_pos_id)

sell_pos_profit = find_position_profit(

orders_state, sell_pos_id

)

print(f"#{buy_pos_id} PROFIT {buy_pos_profit}")

print(f"#{sell_pos_id} PROFIT {sell_pos_profit}")


if buy_pos_profit <= sell_pos_profit:

to_close.append(buy_pos_id)

else:

to_close.append(sell_pos_id)


print("Close less profitable position in each pair...")


for order_id in to_close:

print(f"Closing #{order_id}...")

close_response = http.post(

api_url + "/closeposition",

json={"OrderId": order_id},

headers=auth_headers,

)

check_response(close_response)

print("Done.")

Explicação

O código apresentado define a sequência de ações para o Bot de Trading:


  • 1. Associe uma conta específica à API de Trading
  • 2. Selecione os símbolos a negociar
  • 3. Identifique todas as posições abertas por bots (robôs) para esses símbolos
  • 4. Encerre todas as posições iniciadas por bots nos símbolos selecionados
  • 5. Abra 2 posições opostas para um símbolo:
    • Posição de COMPRA (BUY)
    • Posição de VENDA (SELL)
  • 6. Após 1 minuto: Encerre a posição perdedora (com base no PnL atual)
  • 7. Após 1 minuto: Repita o ciclo desde o Passo 1

Nossa nova plataforma de negociação GMI Edge!

Projetada para capacitar sua experiência de negociação, a Edge Platform traz uma nova era de possibilidades para o mundo da negociação forex.

Automatize seu trading. Sua Linguagem. Suas Regras.

Coloque suas ideias de trading em ação com a API GMI Edge - codifique e automatize seus bots (robôs) de trading em qualquer linguagem, incluindo Python, C, C++, C# e muito mais.