Otomatiskan perdagangan Anda
Bahasa Anda
Peraturan Anda

Tingkatkan ide perdagangan Anda dengan API GMI Edge - kode dan otomatisasi bot perdagangan Anda dalam bahasa apa pun yang Anda pilih, termasuk Python, C, C++ hingga C#, dan seterusnya.

Manfaat dari Perdagangan Bot vs Perdagangan Manual

Aksi Pasar 24/7

Bot tidak pernah berhenti bekerja - mengambil peluang siang dan malam, bahkan saat Anda beristirahat.

Perdagangan Bebas Emosi

Hilangkan rasa takut dan ketamakan; bot dapat mengeksekusi rencana Anda tanpa ragu-ragu.

Reaksi Langsung terhadap Peristiwa Pasar

Secara otomatis menanggapi lonjakan harga, berita, atau ketidakstabilan - jauh lebih cepat daripada manusia.

Skalabilitas

Kelola strategi kompleks atau perdagangan frekuensi tinggi pada skala yang tidak mungkin dilakukan secara manual.

Cara Kerjanya

Daftar atau Masuk ke Area Anggota GMI

Dapatkan Informasi Akun Perdagangan GMI EDGE Anda

Baca dokumentasi dan gunakan strategi perdagangan Anda

Aktifkan bot perdagangan Anda dan pantau bot tersebut melakukan perdagangan untuk Anda

Fitur

Kebebasan Multi-Bahasa

Rancang bot Anda dalam bahasa pemrograman apa pun-Python, C++, C#, Java, JavaScript, Go, dan banyak lagi. Tanpa batasan.

Potensi Otomasi Tak Terbatas

Tidak ada batasan jumlah atau kompleksitas bot, mulai dari bots sederhana hingga strategi multi-aset dan multi-akun tingkat lanjut.

Kompatibilitas Lintas Platform

Gunakan API dari Windows, Mac, Linux, atau bahkan server cloud - jalankan bot Anda di mana pun Anda suka.

Transparan, Arsitektur Modern

Tidak ada lapisan tersembunyi atau bahasa pemrograman eksklusif. Kode Anda berbicara langsung ke API kami untuk transparansi dan fleksibilitas penuh.

TANYA JAWAB

Apa yang dimaksud dengan GMI Edge API?
GMI Edge API adalah alat bantu handal yang memungkinkan Anda mengotomatiskan perdagangan Anda dengan membuat bot dalam bahasa pemrograman apa pun. Menghubungkan langsung ke akun GMI Anda, menerima data pasar waktu nyata, dan melakukan perdagangan secara terprogram.
Bahasa pemrograman apa yang dapat saya gunakan pada API GMI Edge?
Anda dapat menggunakan bahasa pemrograman apa pun. Terlepas dari bahasa pemrograman yang Anda gunakan, baik Python, C++, C#, Java, JavaScript, atau bahasa pemrograman lainnya, GMI Edge API fleksibel untuk disesuaikan dengan alur kerja Anda.
Seberapa amankah koneksi API?
Semua komunikasi API telah dienkripsi untuk keamanan Anda. Dalam waktu dekat, kami akan memperkenalkan autentikasi kunci API untuk lapisan keamanan dan kontrol tambahan.
Dukungan apa saja yang tersedia untuk pengguna API?
Anda akan memiliki akses ke dukungan teknis khusus, dokumentasi terperinci, contoh kode, dan komunitas pengembang yang aktif. Dukungan prioritas tersedia untuk pengguna tingkat lanjut.
Apakah ada batasan penggunaan atau biaya untuk API?
API GMI Edge sepenuhnya gratis untuk semua pelanggan GMI Edge, tanpa biaya atau biaya tersembunyi.
Dapatkah saya menguji bot perdagangan saya tanpa mempertaruhkan uang sungguhan?
Ya, GMI Edge menawarkan akun demo, memungkinkan Anda untuk melakukan percobaan dengan aman dan menyempurnakan strategi Anda tanpa mempertaruhkan dana sungguhan.

Contoh kode untuk Bot Perdagangan

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.")

Penjelasan

Kode yang dipaparkan mendefinisikan rangkaian tindakan untuk Bot Perdagangan:


  • 1. Terhubung ke API Perdagangan pada akun tertentu
  • 2. Pilih simbol target.
  • 3. Identifikasi semua posisi yang dibuka oleh bot untuk simbol-simbol tersebut.
  • 4. Tutup semua posisi yang dibuka oleh bot pada simbol-simbol yang dipilih.
  • 5. Buka 2 posisi berlawanan untuk satu simbol:
    • Posisi BELI
    • Posisi JUAL
  • 6. Setelah 1 menit: Tutup posisi yang mengalami kerugian (berdasarkan PnL saat ini)
  • 7. Setelah 1 menit: Ulangi seluruh rangkaian dari Langkah 1

Otomatiskan perdagangan Anda. Bahasa Anda. Peraturan Anda.

Tingkatkan ide perdagangan Anda dengan API GMI Edge - kode dan otomatisasi bot perdagangan Anda dalam bahasa apa pun yang Anda pilih, termasuk Python, C, C++ hingga C#, dan seterusnya.