|
|
DS_API за MetaTrader 4
Скриптове за търговия към Делтасток
Тази част е предназначена както за потребители на MetaTrader, които имат опит в писането на скриптове, така и за програмисти.
API-то на Delta Trading не може да се използва директно от MQL4 скрипт, тъй като скриптът не позволява извикването на ActiveX компоненти, а само на външни библиотеки (DLL-и).
Затова сме създали обикновен DLL (delta.dll). В него сме включили повечето API функции от DSAPI. По този начин можете да ги използвате в свойте MQL4 скриптове. "delta.dll" трябва да бъде поставен в <terminal_dir> или <WINDIR>\system32. Файлът DLL автоматично се инсталира в <terminal_dir>.
Примери за ползването на функциите може да намерите в DELTA_Samples.mq4.
 | Всички фукции започват с "DELTA_" и са декларирани в metadelta.mqh (което е в <terminal_dir/experts/include>). |
 | Всички функции връщат int, която е различна от 0 при грешка и 0 в противен случай. Стойности между -500 и -1 дава информация за DSAPI грешка, която може да проверите в таблицата с DSAPI грешки. Стойности под -500, показват OLE грешка. Ако стойността е по-голяма от 0, това е Exception number. |
 | Всички функции взимат като първи параметър номера на Делтасток сметката, с която търгува даденото API. Това е необходимо, тъй като Delta Trading позволява едновременно да работят няколко копия и по този номер се разбира кое копие използва API-то в момента. |
 | За да използвате функциите от DLL-а, трябва да включите metadelta.mqh в началото на скрипта, в който ще го използвате чрез #include <metadelta.mqh>. |
 |
Ако сте решили да използвате API функциите в Meta Trader скрипта трябва да извикате DELTA_Init(AccNumber) преди да извиквате, която и да е от другите функции. В края на скрипта трябва да извикате DELTA_Uninit(). Ако скриптът е автоматизирана стратегия (Expert Advisor), това не е необходимо.
|
Следва описание на всяка една от функциите, включени в delta.dll:
DELTA_Init()
int DELTA_Init(string DS_AccNumber)
Тази функция инициализира API.
Параметри:
DS_AccNumber: Номерът на сметката в "Делтасток", с която ще търгува API-то.
Meta Trader скрипт: DELTA_Init() трябва да се извика веднъж в началото преди всички други функции. И съответно, преди края на скрипта да се извика DELTA_UnInit().
Expert Advisor: Ако скриптът е Expert Advisor, няма нужда да извиквате DELTA_Init() или DELTA_UnInit(). | |
DELTA_UnInit()
int DELTA_UnInit()
Освобождава ресурсите, използвани от DSAPI.
* Meta Trader скрипт: - DELTA_UnInit() трябва да бъде извикан в края на скрипта след всички други функции.
* Expert Advisors: няма нужда да извиквате DELTA_Init или DELTA_UnInit. | |
 DELTA_NewOrder
int DELTA_NewOrder(string DS_AccNumber,string Instrument,
int ordCount,
double ordPriceReq1, double ordPriceReq2,
int ordType, stringordBuySell, string ordValidity,
int & OrderID[] );
Подаване на поръчка за изпълнение
Параметри:
| DS_AccNumber |
Номерът на сметката в "Делтасток", с която търгува API-то. |
| Instrument |
Код на инструмента в Delta Trading™ (напр.: EUR/USD). |
| ordCount |
Количеството в единици (не лотове). Трябва да е кратно на 1000.
|
| ordPriceReq1 |
Цена |
| ordPriceReq2 |
Цена 2 (За ЕОД поръчки) |
| ordType |
Типовете поръчки: 1 – маркет, 2 – лимит, 3 – стоп, 4 – ЕОД, са описани като следните константи в metadelta.mqh: int DELTA_MARKET = 1; int DELTA_LIMIT = 2; int DELTA_STOP = 3; int DELTA_OCO = 4; |
| ordBuySell |
Купува – "B" или продава – "S" |
| ordValidity |
За деня – "1" или до отмяна (GTC) – "2" |
| ordID |
Номер на поръчката, ако е изпълнена успешно. |
Резултат: Връща 0, ако всичко е наред, и различно от 0 - при грешка.
|
|
DELTA_GetOrderStatus
int DELTA_GetOrderStatus( string DS_AccNumber, int orderID, int & Status[]);
Връща статуса на поръчката.
Параметри:
OrdID Номер на поръчката, чийто статус проверявате. Status - Дава статуса на поръчката: 1, 2, 3, 4, 5 –изпратен/потвърден/изпълнен/отменен/заявен за отмяна. Можете също да използвате дефинираните константи в metadelta.mqh: int ORD_PENDING = 1; int ORD_CONFIRMED = 2; int ORD_EXECUTED = 3; int ORD_CANCELED = 4; int ORD_AWAITING_CANCELATION = 5;
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_GetOrderParams
int DELTA_GetOrderParams( string DS_AccNumber, int OrderID, string DS_Symbol, string Oper, double& PriceExecuted[],int& Units[]),int& Status[],int& Type[],double& PricePlaced[],double& PriceOCO[]);
Връща параметрите на поръчката
Параметри:
DS_AccNumber- Номер на сметката в "Делтасток"(напр.: "000142775").
Параметрите Price, Units и Status трябва да бъдат декларирани като елементи на масив с един елемент, за да може функцията да върне резултат в тях.
OrderID – Номер на поръчката
DS_Symbol – Код на поръчката
Oper - Операции по поръчки - "B" - КУПУВА, "S" - ПРОДАВА
Price - Цена на изпълнение
Status - Статус на поръчката: ORD_PENDING= 1; ORD_CONFIRMED= 2; ORD_EXECUTED= 3; ORD_CANCELED= 4; ORD_AWAITING_CANCELATION = 5;
Type - Тип на поръчката: 1-маркет,2-лимит,3-стоп,4-ЕОД
PricePlaced - Заявена цена (за лимит и стоп поръчки)
PriceOCO - Втора цена при ЕОД поръчки
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_GetPosition
int DELTA_GetPosition(string DS_AccNumber, string Instrument, double& Count[],double& Price[]);
Функцията връща количество и средна цена на позиция.
Параметри:
DS_AccNumber - Номерът на сметката в "Делтасток", с която търгува API-то. Instrument – Код на инструмента, чиято позиция се проверява. Count - Обем на позицията в единици (не лотове). Price - Средна цена на позицията.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_FreeMargin
int DELTA_FreeMargin(string DS_AccNumber, string Currency, double& Margin[]); Връща свободните средства по сметката в указаната валута.
Параметри:
DS_AccNumber - Номер на сметката в "Делтасток". Currency – Валутата, в която е изчислен марджинът. Margin - Свободните средства в указаната валута.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_CancelOrder
int DELTA_CancelOrder(string DS_AccNumber, int OrdID); Заявява поръчка за отмяна.
Параметри:
DS_AccNumber - Номер на сметката в "Делтасток" OrderID – Номер на поръчката, която искате да отмените.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_ClosePosition
int DELTA_ClosePosition(string DS_AccNumber, string Instrument); Тази функция затваря позицията на даден инструмент на текуща пазарна цена.
Параметри:
DS_AccNumber - Номер на сметката в "Делтасток" Instrument – Код на инструмента.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_GetPositionRes
int DELTA_GetPositionRes(string DS_AccNumber, string Instrument, string Currency, double&result[]);
Функцията връща текущия резултат на позицията.
Параметри:
DS_AccNumber - Номер на сметката в "Делтасток". Instrument – Код на инструмента. Currency – Валутата, в която ще бъде изчислен резултатът (напр.: InCurrency = "EUR"). Result - Текущ резултат от позицията.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_GetErrMsg
int DELTA_GetErrMsg(string DS_AccNumber, int err_no, string errMsg, int errMsgLen);
Функцията връща описание на грешка номер err_no.
Параметри:
DS_AccNumber - Номерът на сметката в "Делтасток", с която търгува API-то.
err_no – Номер на грешката, чието описание се иска.
errMsg – Описание на грешката.
errMsgLen - Дължина на стринга errMsg. Стрингът errMsg трябва да бъде инициализиран с брой символи равен на errMsgLen: string ErrMsg = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_GetQuote
int DELTA_GetQuote(string DS_AccNumber,string Instrument, double& QBid[],double& QAsk[],double& QHi[],double& QLow[]););
Връща котировките за даден инструмент.
Параметри:
DS_AccNumber - Номер на сметката в "Делтасток"
Функцията връща резултата в параметрите по-долу. Параметрите трябва да бъдат декларирани като масиви от един елемент, за да може функцията да върне съответния резултат. QBid – Купува QAsk – Продава QHi - Най-високо QLow - Най-ниско
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка.
Пример:
double QBid[1], QAsk[1], QHi[1], QLow[1]; err = DELTA_GetQuote(Instrument, QBid, QAsk, QHi, QLow); if(err != 0) { Print("ERROR calling DELTA_GetQuote: ", err); return(-1); } else { Print ("bid = " + QBid[0] + "ask = " + QAsk[0] + "hi = " + QHi[0] + "low = " + QLow[0]); } | |
DELTA_GetPrecision
int DELTA_GetPrecision(string DS_AccNumber,string Instrument, double& Precision[]);
Връща точността на котиране за даден инструмент (брой цифри след десетичния знак).
Параметри:
DS_AccNumber- Номер на сметката в "Делтасток" (напр.: "000142775").
Instrument- Инструментът, чиято точност на котиране определяме.
Precision - Резултатът за точността се връща тук. Параметърът трябва да се декларира като масив с един елемент, за да може да го получава (например: double prec[1]).
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_Log
int DELTA_Log(string DS_AccNumber,int on_off);
Включва/изключва писането на грешките в лог-файл. Лог-файлът се пише в <DeltaTrading_dir>/Logs. За да се включи лог-файл, е необходимо да включите и опцията "Запиши в лог файл" на Delta Trading (намира се в меню настройки/ общи настройки/ клиент). Когато опцията е включена, при грешка се пише допълнителна информация.
Параметри:
DS_AccNumber- Номер на сметката в "Делтасток" (напр.: "000142775")
Precision- 1 включва лога, 0 го изключва.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
DELTA_GetPip
int DELTA_GetPip(string DS_AccNumber,double& pip[]);
Връща стойността на един пункт от дадения инструмент.
Параметри:
DS_AccNumber- Номер на сметката в "Делтасток" (напр.: "000142775").
pip- Стойността на един пункт (point value) от инструмента.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 - при грешка. | |
|
Въпроси и отговори за Meta-Delta
|