order_send

Bir alım-satım işlemi gerçekleştirmek için terminalden işlem sunucusuna bir istek gönderir. Fonksiyon, OrderSend'e benzerdir.

order_send(
   request      // istek yapısı
   );

Parametreler

request

[in]  Gerekli alım-satım eylemini tanımlayan MqlTradeRequest tipi yapısı. Gerekli adsız parametre. Talebin doldurulması ve sayım içeriği için bir örnek aşağıda verilmiştir.

Geri dönüş değeri

İşlem gerçekleştirme sonucu MqlTradeResult yapısı olarak geri döndürülür. Yanıttaki request alanı, order_send()'e iletilen bir alım-satım talebinin yapısını içerir. Bir hata durumunda None geri döndürülür. Hata ile ilgili bilgiler last_error() kullanılarak elde edilebilir.

MqlTradeRequest işlem istek yapısı

Alan

Açıklama

action

İşlem tipi. Değer, TRADE_REQUEST_ACTIONS sayımının değerlerinden biri olabilir.

magic

Uzman Danışman ID'si. Alım-satım emirlerinin analitik olarak işlenmesine olanak tanır. Her bir uzman danışman bir işlem isteği gönderirken benzersiz bir ID belirleyebilir.

order

Emir etiketi. Bekleyen emirleri değiştirmek için gereklidir.

symbol

Emrin yerleştirileceği alım-satım enstrümanının adı. Emirleri değiştirmek ve pozisyonları kapatmak için gerekli değildir.

volume

İstenen işlem hacmi (lot cinsinden). Bir işlem yaparken gerçek hacim, emir gerçekleştirme tipine bağlıdır.

price

Bir emrin gerçekleştirilmesi gereken fiyat. TRADE_ACTION_DEAL tipine sahip "Piyasa Fiyatından İşlem Gerçekleştirme" (SYMBOL_TRADE_EXECUTION_MARKET) tipindeki enstrümanlara ilişkin piyasa emirleri için fiyat belirlenmez.

stoplimit

Fiyat 'price' değerine ulaştığında, bekleyen Limit emrinin yerleştirildiği fiyat (bu koşul zorunludur). Bekleyen emir o ana kadar alım-satım sistemine geçirilmez.

sl

Fiyat olumsuz yönde hareket ettiğinde Zararı Durdur emrinin etkinleştirileceği fiyat

tp

Fiyat olumlu yönde hareket ettiğinde Kar Al emrinin etkinleştirileceği fiyat

deviation

İstenen fiyattan kabul edilebilir maksimum sapma (puan cinsinden belirtilir)

type

Emir tipi. Değer, ORDER_TYPE sayımının değerlerinden biri olabilir.

type_filling

Emrin gerçekleştirilme tipi. Değer, ORDER_TYPE_FILLING değerlerinden biri olabilir.

type_time

Emrin sona erme tipi. Değer, ORDER_TYPE_TIME değerlerinden biri olabilir.

expiration

Bekleyen emrin sona erme zamanı (TIME_SPECIFIED tipi emirler için)

comment

Emre yorum ekleme

position

Pozisyon etiketi. Açık bir şekilde tanımlanması için pozisyonu değiştirirken ve kapatırken doldurun. Genellikle, pozisyonu açan emrin etiketi ile aynıdır.

position_by

Zıt pozisyonun etiketi. Bir pozisyonu zıt yönde bir pozisyonla kapatırken kullanılır (aynı sembolde fakat zıt yönde açılır).

Not

Bir alım-satım isteği, işlem sunucusunda birkaç doğrulama aşamasından geçer. İlk olarak, gerekli tüm istek alanlarının geçerliliği kontrol edilir. Hata yoksa, sunucu ileri işleme için emri kabul eder. Alım-satım işlemlerinin gerçekleştirilmesiyle ilgili ayrıntılar için OrderSend fonksiyonunun açıklamasına bakın.

Örnek:

import time
import MetaTrader5 as mt5
 
# MetaTrader 5 paketi ile ilgili verileri görüntüle
print("MetaTrader5 package author: "mt5.__author__)
print("MetaTrader5 package version: "mt5.__version__)
 
# MetaTrader 5 terminaline bağlantı kur
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# alış istek yapısını hazırla
symbol = "USDJPY"
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
    print(symbol, "not found, can not call order_check()")
    mt5.shutdown()
    quit()
 
# sembol MarketWatch'te yoksa, ekle
if not symbol_info.visible:
    print(symbol, "is not visible, trying to switch on")
    if not mt5.symbol_select(symbol,True):
        print("symbol_select({}}) failed, exit",symbol)
        mt5.shutdown()
        quit()
 
lot = 0.1
point = mt5.symbol_info(symbol).point
price = mt5.symbol_info_tick(symbol).ask
deviation = 20
request = {
    "action"mt5.TRADE_ACTION_DEAL,
    "symbol"symbol,
    "volume"lot,
    "type"mt5.ORDER_TYPE_BUY,
    "price"price,
    "sl"price - 100 * point,
    "tp"price + 100 * point,
    "deviation"deviation,
    "magic"234000,
    "comment""python script open",
    "type_time"mt5.ORDER_TIME_GTC,
    "type_filling"mt5.ORDER_FILLING_RETURN,
}
 
# işlem isteği gönder
result = mt5.order_send(request)
# işlem gerçekleştirme sonucunu kontrol et
print("1. order_send(): by {} {} lots at {} with deviation={} points".format(symbol,lot,price,deviation));
if result.retcode != mt5.TRADE_RETCODE_DONE:
    print("2. order_send failed, retcode={}".format(result.retcode))
   # sonucu sözlük olarak talep et ve tek tek görüntüle
    result_dict=result._asdict()
    for field in result_dict.keys():
        print("   {}={}".format(field,result_dict[field]))
        # eğer bu bir alım-satım talebi yapısı ise, onu da tek tek görüntüle
        if field=="request":
            traderequest_dict=result_dict[field]._asdict()
            for tradereq_filed in traderequest_dict:
                print("       traderequest: {}={}".format(tradereq_filed,traderequest_dict[tradereq_filed]))
    print("shutdown() and quit")
    mt5.shutdown()
    quit()
 
print("2. order_send done, "result)
print("   opened position with POSITION_TICKET={}".format(result.order))
print("   sleep 2 seconds before closing position #{}".format(result.order))
time.sleep(2)
# kapat isteği oluştur
position_id=result.order
price=mt5.symbol_info_tick(symbol).bid
deviation=20
request={
    "action"mt5.TRADE_ACTION_DEAL,
    "symbol"symbol,
    "volume"lot,
    "type"mt5.ORDER_TYPE_SELL,
    "position"position_id,
    "price"price,
    "deviation"deviation,
    "magic"234000,
    "comment""python script close",
    "type_time"mt5.ORDER_TIME_GTC,
    "type_filling"mt5.ORDER_FILLING_RETURN,
}
# işlem isteği gönder
result=mt5.order_send(request)
# işlem gerçekleştirme sonucunu kontrol et
print("3. close position #{}: sell {} {} lots at {} with deviation={} points".format(position_id,symbol,lot,price,deviation));
if result.retcode != mt5.TRADE_RETCODE_DONE:
    print("4. order_send failed, retcode={}".format(result.retcode))
    print("   result",result)
else:
    print("4. position #{} closed, {}".format(position_id,result))
   # sonucu sözlük olarak talep et ve tek tek görüntüle
    result_dict=result._asdict()
    for field in result_dict.keys():
        print("   {}={}".format(field,result_dict[field]))
        # eğer bu bir alım-satım talebi yapısı ise, onu da tek tek görüntüle
        if field=="request":
            traderequest_dict=result_dict[field]._asdict()
            for tradereq_filed in traderequest_dict:
                print("       traderequest: {}={}".format(tradereq_filed,traderequest_dict[tradereq_filed]))
 
# MetaTrader 5 terminaline olan bağlantıyı kapat
mt5.shutdown()
 
Sonuç:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
1. order_send(): by USDJPY 0.1 lots at 108.023 with deviation=20 points
2. order_send done,  OrderSendResult(retcode=10009, deal=535084512, order=557416535, volume=0.1, price=108.023, ...
   opened position with POSITION_TICKET=557416535
   sleep 2 seconds before closing position #557416535
3. close position #557416535: sell USDJPY 0.1 lots at 108.018 with deviation=20 points
4. position #557416535 closed, OrderSendResult(retcode=10009, deal=535084631, order=557416654, volume=0.1, price=...
   retcode=10009
   deal=535084631
   order=557416654
   volume=0.1
   price=108.015
   bid=108.015
   ask=108.02
   comment=Request executed
   request_id=55
   retcode_external=0
   request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=0.1, price=108.018, stoplimit=0.0, ...
       traderequest: action=1
       traderequest: magic=234000
       traderequest: order=0
       traderequest: symbol=USDJPY
       traderequest: volume=0.1
       traderequest: price=108.018
       traderequest: stoplimit=0.0
       traderequest: sl=0.0
       traderequest: tp=0.0
       traderequest: deviation=20
       traderequest: type=1
       traderequest: type_filling=2
       traderequest: type_time=0
       traderequest: expiration=0
       traderequest: comment=python script close
       traderequest: position=557416535
       traderequest: position_by=0

Ayrıca bakınız

order_check, OrderSend,Alım-satım işlem tipleri, Alım-satım isteği yapısı, Sonuç kontrolü isteğinin yapısı, Alım-satım isteği sonucunun yapısı