Automatikkan dagangan anda
Bahasa Anda
Peraturan Anda

Ubah idea dagangan anda menjadi realiti dengan API GMI Edge – cipta kod dan automatikkan bot dagangan anda dalam pelbagai bahasa pilihan anda, termasuk Python, C, C++, C# dan banyak lagi.

Faedah Bot Dagangan vs Dagangan Manual

Pergerakan Pasaran 24/7

Bot anda sentiasa aktif — rebut peluang pasaran 24/7, walaupun semasa anda sedang berehat.

Dagangan Tanpa Emosi

Hapuskan rasa takut dan tamak; bot melaksanakan pelan anda tanpa ragu-ragu.

Tindak Balas Segera terhadap Peristiwa Pasaran

Bertindak secara automatik terhadap lonjakan harga, berita, atau volatiliti — lebih pantas daripada manusia.

Kebolehskalaan

Urus strategi kompleks atau dagangan frekuensi tinggi pada skala yang mustahil dilakukan secara manual.

Bagaimana Ia Berfungsi

Daftar atau Log Masuk ke Member Area GMI

Dapatkan Maklumat Akaun Dagangan GMI EDGE anda

Baca dokumentasi dan mula tulis strategi dagangan anda

Lancarkan bot dagangan anda dan lihat ia berdagang untuk anda

Ciri-Ciri

Kebebasan Pelbagai Bahasa

Bina bot anda dalam mana-mana bahasa pengaturcaraan — Python, C++, C#, Java, JavaScript, Go dan banyak lagi. Tiada sekatan.

Potensi Automasi Tanpa Had

Tiada had pada bilangan atau kerumitan bot — kembangkan daripada bots ringkas kepada strategi pelbagai aset dan akaun yang lebih canggih.

Keserasian Merentas Platform

Gunakan API dari Windows, Mac, Linux atau bahkan pelayan awan — jalankan bot anda di mana-mana sahaja.

Seni Bina Moden & Telus

Tiada lapisan tersembunyi atau bahasa skrip eksklusif. Kod anda berkomunikasi terus dengan API kami untuk fleksibiliti dan ketelusan sepenuhnya.

SOALAN LAZIM

Apakah itu API GMI Edge?
API GMI Edge ialah alat berkuasa yang membolehkan anda mengautomatikkan dagangan dengan membina bot dalam mana-mana bahasa pengaturcaraan (programming) . Sambungkan terus ke akaun GMI anda, terima data pasaran dalam masa nyata, dan laksanakan dagangan secara programatik.
Bahasa pengaturcaraan (programming) manakah yang boleh saya gunakan dengan API GMI Edge?
Anda boleh menggunakan mana-mana bahasa pengaturcaraan. Sama ada anda menulis kod dalam Python, C++, C#, Java, JavaScript, atau bahasa lain, API GMI Edge cukup fleksibel untuk disesuaikan dengan aliran kerja anda.
Sejauh mana selamatnya sambungan API ini?
Semua komunikasi melalui API adalah disulitkan sepenuhnya demi keselamatan anda. Tidak lama lagi, kami akan memperkenalkan pengesahan melalui kunci API untuk menambah satu lagi lapisan keselamatan dan kawalan.
Apakah sokongan yang tersedia untuk pengguna API?
Anda akan mendapat akses kepada sokongan teknikal khusus, dokumentasi terperinci, contoh kod, serta komuniti pembangun yang aktif. Sokongan keutamaan disediakan untuk pengguna lanjutan.
Adakah terdapat had penggunaan atau caj untuk API ini?
API GMI Edge adalah 100% percuma untuk semua pelanggan GMI Edge — tiada yuran tersembunyi atau caj tambahan.
Bolehkah saya menguji bot dagangan saya tanpa risiko wang sebenar?
Ya, GMI Edge menyediakan akaun demo yang membolehkan anda menguji strategi dan bereksperimen dengan selamat tanpa menggunakan dana sebenar.

Contoh Kod Bot Dagangan

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

Kod yang diterangkan ini menetapkan urutan tindakan untuk Bot Dagangan:


  • 1. Sambung ke API Dagangan bagi akaun tertentu
  • 2. Pilih simbol sasaran
  • 3. Kenal pasti semua kedudukan yang dibuka oleh bot untuk simbol-simbol tersebut
  • 4. Tutup semua kedudukan sedia ada yang dimulakan oleh bot pada simbol yang dipilih
  • 5. Buka 2 kedudukan bertentangan untuk satu simbol:
    • Kedudukan BELI (BUY)
    • Kedudukan JUAL (SELL)
  • 6. Selepas 1 minit: Tutup kedudukan yang mengalami kerugian (berdasarkan PnL semasa)
  • 7. Selepas 1 minit: Ulang keseluruhan kitaran dari Langkah 1

Platform Dagangan GMI Edge baharu kami!

Direka bentuk untuk memperkasakan pengalaman dagangan anda, Platform Dagangan Edge membawa era baharu kemungkinan kepada dunia perdagangan forex.

Automatikkan dagangan anda. Bahasa Anda. Peraturan Anda.

Ubah idea dagangan anda menjadi realiti dengan API GMI Edge – cipta kod dan automatikkan bot dagangan anda dalam pelbagai bahasa pilihan anda, termasuk Python, C, C++, C# dan banyak lagi.