Класс для биржевой торговли - ищу соинвесторов - страница 4

 
Alexey Kozitsyn:

Не спорю, что доступно. Просто не популярно пока на MOEX торговать через МТ5.

Не думаю, что торговая библиотека должна отличаться между форексом и биржей.

 
fxsaber:

Не думаю, что торговая библиотека должна отличаться между форексом и биржей.

А стакан? Или как Вы хотите проскальзывания определять?

 
Alexey Kozitsyn:

А стакан? Или как Вы хотите проскальзывания определять?

Ну почти реклама

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2017.08.04 14:47

//   Add: Добавлены OrderOpenPriceRequest() и OrderClosePriceRequest() - возвращают цену торгового запроса при открытии/закрытии позиции.
//        С помощью данных функций возможно вычислять соответствующие проскальзывания ордеров.

Исходник (на бирже не проверял) можете посмотреть здесь. Там все вычисления, сколько денег вы получили/потеряли на проскальзываниях.

SlipPage
SlipPage
  • www.mql5.com
Exp_i-SpectrAnalysis_WPR Эксперт Exp_i-SpectrAnalysis_WPR построен на основе изменения направления движения индикатора i-SpectrAnalysis_WPR. BalanceOfPower_Histogram Индикатор Balance of Power (BOP) в виде цветной гистограммы силы и направления действующего тренда. wlxBW5ZoneAlert Семафорный сигнальный индикатор с...
 
fxsaber:

Ну почти реклама


Исходник (на бирже не проверял) можете посмотреть здесь. Там все вычисления, сколько денег вы получили/потеряли на проскальзываниях.

Насколько я понял, приведенный код для тестера? И к реальной торговле никакого отношения не имеет. Тогда и использовать его можно максимум для анализа результатов в тестере. Которые, все равно будут отличаться от реала.

 
fxsaber:

Ну почти реклама


Исходник (на бирже не проверял) можете посмотреть здесь. Там все вычисления, сколько денег вы получили/потеряли на проскальзываниях.

Также хочу отметить, что я имел ввиду вычисление вероятного проскальзывания (прогноз), а у Вас, насколько я понял, вычисляется проскальзывание по факту (т.е. работа с историей).

 
Alexey Kozitsyn:

Насколько я понял, приведенный код для тестера? И к реальной торговле никакого отношения не имеет. Тогда и использовать его можно максимум для анализа результатов в тестере. Которые, все равно будут отличаться от реала.

И для реала.

Alexey Kozitsyn:

Также хочу отметить, что я имел ввиду вычисление вероятного проскальзывания (прогноз), а у Вас, насколько я понял, вычисляется проскальзывание по факту (т.е. работа с историей).

Да, с историей.

 
Konstantin Seredkin:

Держи класс работы с ордерами и позициями, основной и часть для ассинхронного метода есть, что нужно можешь сам дописать, хотя больше и не нужно не чего.

Класс рабочий, нареканий к нему нет, не знаю как на форексе, под него надо смотреть и переделывать лотность на дробную, но на моекс все пашет

Можно и стандартной библиотекой пользоваться, там вообще писать не чего не нужно, все данные которые нужны все есть... только вот хаят ее, что на бирже работает не корректно может.

Позволю себе покритиковать Ваш класс.

1. Нет учета транзакций.

2. bool OK = OrderSend(m_request,m_result); - должна возвращать не BOOL, а ордер тикет (или присваивать тикет)

3. bool OK = OrderSendAsync(m_request,m_result); - должна возврашать номер реквеста. (или присваивать ID)

Установка отложенного ордера.

//+------------------------------------------------------------------+
//| Place order                                                      |
//+------------------------------------------------------------------+
void COrder::Place(const double price, const double volume, const bool buy_sell)
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  ticket = 0;
  req_id = 0;
  mem_magic = magic_storage + 1;
  check_count = 0;
  if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number;
//--- Fill structure
  request.action = TRADE_ACTION_PENDING;
  request.magic  = mem_magic;
  request.symbol = a_symbol;
  request.volume = volume;
  request.price  = price;
  if(buy_sell)
  {
    request.type = ORDER_TYPE_BUY_LIMIT;
  }
  else
  {
    request.type = ORDER_TYPE_SELL_LIMIT;
  } 
  request.comment = "Отложенный ордер...";      
  request.type_filling = ORDER_FILLING_RETURN;
  request.type_time = ORDER_TIME_DAY;
//--- Send order
  if(OrderSendAsync(request, result))
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE)) 
    {
      req_id = result.request_id;
      magic_storage = mem_magic;
      state = ORD_DO_SET;
      mem_time = GetMicrosecondCount();
      mem_start_time = TimeCurrent();
      SetTransCount();
    }
    else
    {
      mem_magic = 0;
      mem_time = 0;
      mem_start_time = 0;
      CheckError(result.retcode, "Place: Ордер не установлен! Причина: ", order_status, ticket);
    }
  }
  else
  {
    mem_magic = 0;
    mem_time = 0;
    mem_start_time = 0;
    CheckError(result.retcode, "Place: Ордер не отослан! Причина: ", order_status, ticket);
  }
}

Здесь, получаем реквест ID 

req_id = result.request_id;
 
prostotrader:

Позволю себе покритиковать Ваш класс.

1. Нет учета транзакций.

2. bool OK = OrderSend(m_request,m_result); - должна возвращать не BOOL, а ордер тикет (или присваивать тикет)

3. bool OK = OrderSendAsync(m_request,m_result); - должна возврашать номер реквеста. (или присваивать ID)

Установка отложенного ордера.

Здесь, получаем реквест ID 

Да Вы правы, класс не идеальный, я его по сути не писал, мне его подарили в месте с роботом, я просто программирую на mql5 всего без малого почти год и многого еще не знаю в нюансах биржевого исполнения, на mql4 около 5-ти лет сидел...  под форекс я использую стандартную библиотеку, она там нормально работает, а вот попробовав ее на бирже, какие то постоянно ошибки сыпались по лимиткам, по этому использую этот класс, от него мне нужно лишь установка лимитного ордера, больше с него мне не чего не нужно. Просматривал кучу разных функций по установке лимитного ордера, но однозначно так и не понял что лучше, у всех по разному, а вот найти пока какой-то идеальный торговый класс, или торговую библиотеку, который бы был признан разными прогерами как эталон, я пока не нашел... вернее нашел, тут на форуме, очень известный программист, много разной полезной информации людям дал, но дать такую библиотеку он согласен лишь за 500 баксов.

Вот эту тему человек хорошо поднял, было бы не плохо если бы профи поделились бы с общественностью чем то где все учтено просто до не могу для биржевой торговли, можно было бы собраться страждущим и скинуться  денежкой. Но пока пользуемся тем на что хватает полученных знаний, я от mql5 не ожидал просто такого, столько всего нового и столько всяких нюансов просто жуть.

 
Konstantin Seredkin:

Да Вы правы, класс не идеальный, я его по сути не писал, мне его подарили в месте с роботом, я просто программирую на mql5 всего без малого почти год и многого еще не знаю в нюансах биржевого исполнения, на mql4 около 5-ти лет сидел...  под форекс я использую стандартную библиотеку, она там нормально работает, а вот попробовав ее на бирже, какие то постоянно ошибки сыпались по лимиткам, по этому использую этот класс, от него мне нужно лишь установка лимитного ордера, больше с него мне не чего не нужно. Просматривал кучу разных функций по установке лимитного ордера, но однозначно так и не понял что лучше, у всех по разному, а вот найти пока какой-то идеальный торговый класс, или торговую библиотеку, который бы был признан разными прогерами как эталон, я пока не нашел... вернее нашел, тут на форуме, очень известный программист, много разной полезной информации людям дал, но дать такую библиотеку он согласен лишь за 500 баксов.

Вот эту тему человек хорошо поднял, было бы не плохо если бы профи поделились бы с общественностью чем то где все учтено просто до не могу для биржевой торговли, можно было бы собраться страждущим и скинуться  денежкой. Но пока пользуемся тем на что хватает полученных знаний, я от mql5 не ожидал просто такого, столько всего нового и столько всяких нюансов просто жуть.

У меня в профиле библа, попробуйте. С Вашим опытом изучать не придется...

 
prostotrader:

2. bool OK = OrderSend(m_request,m_result); - должна возвращать не BOOL, а ордер тикет (или присваивать тикет)

3. bool OK = OrderSendAsync(m_request,m_result); - должна возврашать номер реквеста. (или присваивать ID)

Такой OrderSend значительно сложнее будет в реализации, чем Async-вариант.

Причина обращения: