|
META-DELTA 1.2
Интерфейс за връзка с MetaTrader
Интерфейсът на "Делтасток" за връзка с MetaTrader ви позволява:
- да изпълнявате MetaTrader стратегии (Expert Advisors) в "Делтасток"
- да пишете MQL4 скриптове за търговия към "Делтасток"
- да търгувате в "Делтасток", използвайки интерфейса на MetaTrader
Meta-Delta свързва MT4 и Delta Trading™ посредством API-то нa DT - DSAPI.
Главната причина за създаването на връзката между двете платформи е да улесним трейдърите, които
са свикнали да използват MT4 и/или имат готови експерти, които искат да изпълняват в Delta Trading™.
Накратко, идеята е следната: вие използвате Demo MT4, за да търгувате, пускате експерти или скриптове.
При изпълнението на всяка една поръчка в MT4, се изпълнява абсолютно същата в Delta Trading™, така че
позициите в двете сметки да останат еднакви.
Предварителни условия:
- Пакетът работи само с Delta Trading версия 4.0.13.
- Трябва да имате активирано API. (За Демо версията то е активирано по подразбиране, за оригинала трябва да се подпише допълнително споразумение)
- MetaTrader терминал към брокер, който позволява ДЕМО сметка.
Как се инсталира пакетът?
| 1. |
Спрете MetaTrader терминала, ако работи. |
| 2. |
Изтеглете MetaDelta1.2.zip и го разархивирайте във временна директория. |
| 3. |
Стартирайте setup.exe и следвайте инструкциите.
Ако имате
MetaTrader терминали към повече от един брокер, можете да изберете брокер, като посочите директорията, в която е инсталиран терминалът му, например: C:\Program Files\Other company Meta Trader 4
|
| 4. |
Стартирайте MetaTrader.
|
Как да започна?
| 1. |
Стартирайте програмата "EditInstruments.exe". Може да намерите иконката й на десктопа или в
директория <terminal_dir>/MetaDelta.
Първо трябва да посочите номера на сметката в Делтасток, с която ще търгувате в текстовото поле най-отгоре.
(Необходимо е, тъй като Delta Trading позволява търговията с няколко сметки едновременно). Можете да го видите
на заглавната лента на Delta Trading:
След това трябва да решите с кои инструменти ще работите и да ги
зададете. По подразбирне са зададени 6-те основни валутни двойки:
EUR/USD, GBP/USD, AUD/USD, USD/JPY, USD/CHF, USD/CAD
За да добавите нов инструмент, трябва да проверите символа му в MetaTrader и съответния в "Делтасток" и да натиснете "Аdd New".
Можете също така да ИЗКЛЮЧИТЕ символ, като първо го посочете и след това изберете опцията "Изключи".
 |
| 2. |
Стартирайте DeltaTrading.exe и влезте в системата.
Препоръчително е първо да тествате стратегията си с Демо сметка.
|
| 3. |
Стартирайте MetaTrader и влезте с ДЕМО сметка (използването на Демо сметка в MetaTrader е задължително).
|
| 4. |
От "Инструменти" отворете папка "Настройки" и след това "Експерти". Трябва да активирате полето "Позволи вмъкване на DLL" и да ДЕактивирате "Потвърждавай извикването на DLL функции".

|
| 5. |
От "Навигатора" отворете папката "Скриптове" и прикачете скрипта "META-DELTA" към графиката (чрез десен клик / "Прикачване към графиката", Drag and Drop или двойно щракване с мишката).
В горния ляв ъгъл на графиката се появява жълт надпис, който показва, че скриптът работи.
Независимо че скриптът е прикачен към графиката на един инструмент, той подава поръчки за всички инструменти, зададени чрез EditInstruments.exe.
В папката "Експерти" можете да следите поръчките, подавани
към "Делтасток".

Скриптът "META-DELTA" може да бъде прикачен към графиката само на един инструмент!
|
| 6. |
Отворете папката "Потребителски индикатори" и прикачете индикаторa "Positions" към графиката, към която сте прикачили
"META-DELTA". Индикаторът показва отворените позиции в Делтасток и Metatrader, както и текущият резултат в Делтасток.

|
| 7. |
Можете да търгувате чрез MetaTrader и/или да стартирате стратегия.
Всичко, което правите, ще се дублира
в DeltaTrading и съответно ще бъде изпълнено в "Делтасток". Забележка "LIMIT" и "STOP" поръчките, пуснати в MetaTrader няма да
бъдат дублирани в Делтасток, а ще бъдат изпълнени веднага щом бъдат изпълнени в MetaTrader
Не забравяйте, че ще бъдат търгувани само инструментите, които сте задали!
Ако преди да стартирате скрипта, позициите в Meta Trader и Делтасток са различни, скриптът ще ги изравни и чак тогава ще почне да търгува.
Например, ако в Meta Trader имате две отворени поръчки EUR/USD съответно:
| Meta Trader | Deltastock |
EUR/USD BUY 0,07 LOTS
EUR/USD SELL 0,01 LOTS
|
EUR/USD 2000 UNITS
|
META-DELTA ще подаде поръчка BUY 4000 EUR/USD към Делтасток, тъй като позицията в МТ е
0,07 - 0,01 = 0,06 LOTS * 100 000 = 6000 UNITS
2000 + 4000 = 6000 UNITS в Делтасток.
|
Как работи Meta-Delta?
Пакетът се състои от
- DLL-а delta.dll, който осъществява връзка с Delta Trading.
- mql4 скрипта - META-DELTA.mq4 (можете да го намерите в "Навигатор/Скриптове").
Скриптът се прикачва към произволна графика и започва
да изчислява позицията за даден инструмент в MetaTrader и "Делтасток".
Ако има разлика, подава съответната поръчка към "Делтасток", за да изравни позициите.
Инструментите, които искате да синхронизирате, се задават чрез програмата "EditInstruments.exe"
(намира се в <terminal_dir>/MetaDelta).
По подразбирне са зададени 6-те основни валутни двойки:
EUR/USD, GBP/USD, AUD/USD, USD/JPY, USD/CHF, USD/CAD
Скриптове за търговия към Делтасток
Тази част е предназначена за потребители на MetaTrader, които имат опит в писането на скриптове и програмисти.
API-то на Delta Trading не може да се използва директно от MQL4 скрипт, тъй като
скриптът не позволява извикването на ActiveX компоненти, а само на външни библиотеки (DLL-и).
Затова сме изнесли почти всички функции от API-то в обикновен DLL (delta.dll).
Функциите в DLL-a могат да се извикват без проблем от скриптовете.
За да може да бъде намерен от Meta Trader, delta.dll трябва да бъде
в terminal_dir или windir/system32. По подразбиране се инсталира в terminal_dir.
Примери за използването на всяка една от функциите може да намерите в DELTA_Samples.mq4.
Описание на функциите, които могат да се ползват от Meta Trader скрипт
Всички фукнкции са декларирани във файла metadelta.mqh, намиращ се в terminal_dir/experts/include, и започват с "DELTA_".
Всички функции връщат int, който е различен от 0 при грешка и e 0 в противен случай.
Когато резултатът е отрицателно число между -9999 и -1, можете да проверите грешката от
таблицата с DSAPI грешките.
Ако е по-малък от -9999 - номерът е OLE грешка.
Първият параметър на всяка функция е номерът на сметката в Делтасток, с която искате да търгувате.
Ако е положително число, е номер на Exception.
За да използвате функциите от DLL-a, трябва да
включите metadelta.mqh в началото на скрипта, в който ще ги използвате чрез
#include <metadelta.mqh>
Следва описание на всяка една от функциите, включени в delta.dll:
DELTA_Init
int DELTA_Init(string DS_AccNumber)
Тази функция инициализира DSAPI. Параметърът показва към коя сметка ще се изпълняват поръчките.
Meta Trader скрипт:
DELTA_Init() трябва да се викне веднъж в началото
преди всички други извиквания на функции! Преди приключване на скрипта трябва да има сътветно
извикване на DELTA_UnInit()
Expert Advisor: Ако скриптът е Expert Advisor, това не е необходимо.
| |
DELTA_UnInit
int DELTA_UnInit()
Тази функция освобождава ресурсите, заети от DSAPI.
* За Meta Trader скрипт - DELTA_UnInit() трябва да се викне в края на скрипта, след приключване на останалите функции.
* Expert Advisor Ако скриптът е Expert Advisor, не е необходимо да се
викат DELTA_Init и DELTA_UnInit - това се прави автоматично преди
всяко извикване на функция от delta.dll, тъй като извикванията на функциите в Expert Advisor са в различни тредове(threads).
| |
 DELTA_NewOrder
int DELTA_NewOrder
(
string DS_AccNumber,
string Instrument,
int ordCount,
double ordPriceReq1,
double ordPriceReq2,
int ordType, string
ordBuySell, string ordValidity,
int & OrderID[] );
Заявява нов ордер за изпълнение
Параметри:
| DS_AccNumber |
Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775") |
| Instrument |
код на инструмент в "Делтасток" (напр.: "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" или до отмяна – "2" |
| ordID |
В OrdID се връща номерът на поръчката, ако е изпълнена успешно.
Резултат:
Връща 0 при успешно изпълнение. Иначе връща номер на грешка.
|
|
DELTA_GetOrderStatus
int DELTA_GetOrderStatus
(string DS_AccNumber,int orderID,
int & Status[]);
Запитване към сървъра за статус на ордер.
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
OrdID – номер на поръчката, чийто статус искате да проверите.
Status - Резултатът се получава в 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[], );
Връща параметрите на поръчка номер OrderID
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
Параметрите Price, Units и Status трябва да се декларират
като масиви с по един елемент, за да могат да получават резултат.
OrderID – номер на поръчката
DS_Symbol – в DS_Symbol се връща инструментът на поръчката
Oper - в Oper се връща операцията - "B" - купува, "S" - продава
PriceExecuted - цена на изпълнение
Status - статус на поръчката:
ORD_PENDING = 1; // Изпратен
ORD_CONFIRMED = 2; // потвърден Limit или Stop
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-то (напр.: "000142775")
Instrument – символ на инструмента, за който проверявате позицията.
Count - в Count се връща обемът на позицията в единици (не лотове).
Price - в Price се връща средната цена на позицията.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 – при грешка.
| |
DELTA_FreeMargin
int DELTA_FreeMargin
(string DS_AccNumber,string Currency, double& Margin[]);
Връща свободните средства в указната валута.
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
Currency – Валутата, в която да се изчисли марджинът.
Margin - в Margin се връщат свободните средства.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 – при грешка.
| |
DELTA_CancelOrder
int DELTA_CancelOrder
(string DS_AccNumber,int OrdID);
Заявява ордер за отмяна.
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
OrderID – ID на ордера, който ще се отменя.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 – при грешка.
| |
DELTA_ClosePosition
int DELTA_ClosePosition
(string DS_AccNumber,string Instrument);
Затваря позицията на даден инструмент на пазарна цена
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
Instrument – символ на инструмента, чиято позиция ще се затваря.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 – при грешка.
| |
DELTA_GetPositionRes
int DELTA_GetPositionRes
(string DS_AccNumber, string Instrument, string Currency, double& result[]);
Връща текущия резултат от позицията на даден инструмент
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
Instrument – инструмент, за който искаме резултата
Currency – валутата, в която ще бъде изчислен резултатът (напр.: InCurrency = "EUR").
Result - резултат от посочената позиция.
Резултат:
Връща 0, ако всичко е наред, и различно от 0 – при грешка.
| |
DELTA_GetErrMsg
int DELTA_GetErrMsg
(int err_no, string errMsg, int errMsgLen);
Връща описание на грешка номер err_no
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
err_no – Номер на грешката, чието описание искаме.
errMsg – Стринг, в който ще бъде записано описанието.
errMsgLen - Дължината на подадения стринг.
В MetaTrader скрипт errMsg трябва да бъде инициализиран с посочения брой символи напр.
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
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
В параметрите по-долу се връща резултатът. Параметрите трябва да се декларират
като масиви с по един елемент, за да могат да получават резултат.
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
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
Instrument
- Инструментът, за който се връща точността на котиране
Precision - В параметъра се връща резултатът. Параметърът трябва да се декларира
като масив с по един елемент, за да може да получава резултат.
Резултат:
Връща 0, при успешно изпълнение, и различно от 0 – при грешка.
| |
DELTA_Log
int DELTA_Log
( string DS_AccNumber,
int on_off
);
Включва/изключва писането на грешките в лог-файл. Лог-файлът се пише в <DeltaTrading_dir>/Logs
За да се включи лог-файлът, е необходимо да включите и опцията "Запиши в лог файл"
на DeltaTrading (намира се в меню Настройки/общи настройки/клиент).
Когато опцията е включена, при грешка се пише допълнителна информация.
Параметри:
DS_AccNumber
- Номер на сметката в "Делтасток", с която е инициализирано API-то (напр.: "000142775")
Precision
- 1 включва лога, 0 го изключва.
Резултат:
Връща 0, при успешно изпълнение, и различно от 0 – при грешка.
| |
Добавени са 2 нови параметъра към
DELTA_GetOrderParams - double& PricePlaced[ ] и double& PriceOCO[ ]
- в тях се връща съответно заявена цена при LIMIT и STOP поръчки и втората цена при ЕОД поръчки.
Моля, преинсталирайте Delta Trading и META-DELTA и добавете двата параметъра, ако ползвате DELTA_GetOrderParams в скриптове или
експерти.
Функцията
DELTA_GetOrderStatus вече връща 0 при успешно изпълнение. (В предишната версия имаше грешка и връщаше 1.)
Добавени са и 3 нови функции:
DELTA_Log - включва/изключва писането в лог файл.
DELTA_GetPrecision – връща точността на котиране за даден инстурмент.
DELTA_GetPip - връща стойността на 1 pip за даден инструмент.
|
Въпроси и отговори
|