قم بأتمتة تداولاتك
لغتك أنت
قواعدك أنت

حوّل أفكارك في التداول إلى إجراءات عملية مع واجهة GMI Edge API — بَرمِج وأتمِت روبوتات التداول بأي لغة برمجة تفضلها، سواء كانت Python أو C أو ++C أو #C أو غيرها.

مزايا روبوتات التداول مقابل التداول اليدوي

نشاط مستمر على مدار الساعة

الروبوتات لا تنام — استغل الفرص في أي وقت، ليلًا ونهارًا، حتى وأنت نائم.

تداول بلا مشاعر

تخلّص من مشاعر الخوف والطمع؛ تُنفّذ الروبوتات خطتك دون تردد.

تفاعل فوري مع أحداث السوق

تفاعل تلقائي مع قفزات الأسعار أو الأخبار أو التقلبات — أسرع من أي إنسان.

قابلية التوسع

أدِر الاستراتيجيات المعقدة أو التداول عالي الكثافة على نطاق يستحيل إجراؤه يدويًا.

آليات العمل

سجّل حسابك أو سجل الدخول إلى منطقة الأعضاء في GMI

احصل على بيانات اعتماد حساب تداول GMI EDGE

اقرأ الوثائق وابدأ في كتابة استراتيجيتك الخاصة

شغّل روبوت التداول وشاهد كيف يتداول نيابةً عنك

الميزات

حرية البرمجة بعدة لغات

تستطيع بناء روبوت التداول بأي لغة برمجة — Python، ++C، #C، Java، JavaScript، Go، وأكثر. بلا قيود.

إمكانات أتمتة غير محدودة

لا توجد أي قيود على عدد أو درجة تعقيد روبوتات التداول — يمكنك البدء من النماذج البسيطة بوت التداول وصولًا إلى استراتيجيات معقدة تشمل أصولًا متعددة وحسابات متنوعة.

توافق متعدد المنصات

استخدم واجهة برمجة التطبيقات (API) من Windows أو Mac أو Linux أو حتى الخوادم السحابية - شغّل روبوتاتك أينما تشاء.

بنية شفافة وعصرية

لا توجد طبقات خفية أو لغات برمجة حصرية؛ تتواصل أكوادك البرمجية مباشرةً مع واجهة API لضمان أقصى درجات الشفافية والمرونة.

الأسئلة الشائعة

ما هي واجهة GMI Edge API؟
واجهة برمجة التطبيقات GMI Edge API هي أداة فعّالة تتيح لك أتمتة تداولاتك من خلال برمجة روبوتات بأي لغة برمجة تفضلها. يمكنك الربط مباشرة مع حساب GMI واستقبال بيانات السوق اللحظية، وتنفيذ الصفقات تلقائيًا.
ما هي لغات البرمجة التي يمكنني استخدامها مع GMI Edge API؟
تستطيع استخدام أي لغة برمجة تريدها. سواءً كنت تُبرمج باستخدام Python أو C++ أو C# أو Java أو JavaScript أو أي لغة أخرى، تظل واجهة GMI Edge API مرنة لتناسب طريقة عملك.
ما مدى أمان الاتصال عبر API؟
جميع اتصالات واجهة برمجة التطبيقات مُشفّرة لضمان أقصى درجات الأمان. سنُقدّم قريبًا خاصية المصادقة عبر مفتاح API لإضافة طبقة إضافية من الأمان والتحكم.
ما نوع الدعم المتوفر لمستخدمي API؟
ستحصل على دعم فني مُخصّص، ووثائق تفصيلية، ونماذج جاهزة للأكواد البرمجية، إلى جانب مجتمع نشط من المطورين. يستفيد المستخدمون المتقدمون من أولوية الحصول على الدعم.
هل هناك أي حدود أو رسوم على استخدام API؟
واجهة برمجة التطبيقات GMI Edge API مجانية تمامًا لجميع عملاء GMI Edge، دون أي رسوم أو تكاليف خفية.
هل يمكنني تجربة روبوتات التداول دون المخاطرة بأموال حقيقية؟
نعم، توفر GMI Edge حسابات تجريبية تتيح لك اختبار استراتيجياتك بأمان تام ودون أي مخاطرة برأس المال الحقيقي.

مثال على كود روبوت التداول:

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

الشرح

يُحدد الكود المذكورة تسلسل الإجراءات لروبوت التداول:


  • 1. الاتصال بواجهة برمجة تطبيقات التداول لحساب مُحدد.
  • 2. اختيار الرموز المستهدفة.
  • 3. تحديد جميع الصفقات المفتوحة بواسطة الروبوت على هذه الرموز.
  • 4. إغلاق جميع الصفقات المفتوحة بواسطة الروبوت على الرموز المُحددة.
  • 5. فتح صفقتين متعاكستين على رمز واحد:
    • صفقة شراء
    • صفقة بيع
  • 6. بعد دقيقة واحدة: إغلاق الصفقة الخاسرة (وفقًا للربح/الخسارة الحالي – PnL).
  • 7. بعد دقيقة واحدة: إعادة تكرار الدورة كاملة من الخطوة 1

منصة التداول GMI Edge

الجديدة الخاصة بنا! مصممة لتمكين تجربة التداول الخاصة بك، تجلب منصة التداول Edge عصرًا جديدًا من الإمكانيات إلى عالم تداول الفوركس.

.قم بأتمتة تداولاتك. لغتك أنت. قواعدك أنت

حوّل أفكارك في التداول إلى إجراءات عملية مع واجهة GMI Edge API — بَرمِج وأتمِت روبوتات التداول بأي لغة برمجة تفضلها، سواء كانت Python أو C أو ++C أو #C أو غيرها.