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

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

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

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

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

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

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

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

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

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

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

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

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

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






مثال على كود روبوت التداول:
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 أو غيرها.