Как правильно анализировать Result.Deal() и Result.Order() - страница 4

 
fxsaber #:

Можете поделиться?

Ответил в ЛС
 
Sergey Chalyshev #:

Дмитрий,

это вы такую пилу устраиваете? ))

Да там и без меня есть кому)
 
fxsaber #:

Можете поделиться?

А может быть для понимания как человек торгует?

 
prostotrader #:

А может быть для понимания как человек торгует?

Речь шла про следующее. Заходите в папку с логами и смотрите, как меняются размеры log-файлов. Далее пишите здесь наименьшее и наибольшее значение.

Мои данные:

Много понимания?

 
Я их удаляю периодически. Из того, что за последние 2 месяца - мин 3.4 Мб, макс 267 Мб.
 

Вариантов, что происходит гораздо больше. Чем вы думаете. Анализировать  OnTradeTransaction плохая идея. На сегодня у меня сложилось такое мнение. Лучше заглянуть в историю сделок. 

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

 

Здравствуйте.

Подскажите в чём я не прав. Написал внизу функцию открытие ордера на селл с условием если задана цена открытия то отложенный ордер иначе открытие по рыночной цене. Все действия функции выполняются, но мне нужно ещё узнать значение result.deal. Как я понимаю, если отложенный ордер, то значение должно быть 0, а у открытого не 0 :) У меня же всегда показывает 0. Тестирую на демо-счету Спасибо за помощь, извиняюсь за свой французский.

 


long Open_Sell_Pos(string symbol, double lot, double open_price, uint stop_loss, uint take_profit, uint magic, string comment, int slipage)                   

{
      MqlTradeRequest request;         
      MqlTradeResult  result;         
      
      ZeroMemory(request);            
      ZeroMemory(result);
      
      request.symbol = symbol;                                             //символ
      double current_bid = SymbolInfoDouble(request.symbol, SYMBOL_BID);   //текущее значение цены     
      if (open_price <= 0)                                                 //если цена не задана, то (изначально 0,0)
      {
            Print ("открытие по рыночной цене ");
            request.action = TRADE_ACTION_DEAL;                            //открытие ордера по рынку  
            request.type = ORDER_TYPE_SELL;                                //SELL
            request.price = current_bid;                                   //по текущей цене на рынке
      }
      else                                                                  //если цена открытия задана
      {
      request.price = open_price;
      Print ("открытие отложенного ордера ");
            request.action = TRADE_ACTION_PENDING;                         //открытие отложенного ордера
            if (open_price > current_bid) request.type = ORDER_TYPE_SELL_LIMIT;                   
            else request.type = ORDER_TYPE_SELL_STOP;
      }
      if (stop_loss > 0) request.sl = NormalizeDouble(request.price + stop_loss * _Point, _Digits);   //приводим пункты стопа 
      if (take_profit > 0)request.tp = NormalizeDouble(request.price - take_profit * _Point, _Digits);//приводим пункты тэйка
      request.volume = lot;                                                                           // лот
      request.type_filling = ORDER_FILLING_FOK;                                                       //открытие в полном объёме
      if (comment != NULL && comment != "") request.comment = comment;                                //коментарии
      if (magic > 0) request.magic = magic;                                                           //инд. робота
      if (slipage > 0) request.deviation = slipage;                                                   //проскальзывание
      if (!OrderSend(request, result)) Print ("Позиция или ордер Селл не открыт. Ошибка № ", result.retcode); //вывод ошибки
      
      ulong deal_ticket = result.deal;                           //При рыночном открытие будет значение, при отложеном ордере 0???
      Print ("Переменная deal_ticket = ", deal_ticket); //для другого обработчика
      
      
      return -1;                                                  //для другого обработчика
}
 
Проверил на реальном счету альпари стандарт. Долю секунды ордер висит как отложенный. Хочется уточнить либо у меня руки кривые, либо брокер даже при request.action = TRADE_ACTION_DEAL всё равно ставит в отложенный ордер?
 
Сергей #:
Проверил на реальном счету альпари стандарт. Долю секунды ордер висит как отложенный. Хочется уточнить либо у меня руки кривые, либо брокер даже при request.action = TRADE_ACTION_DEAL всё равно ставит в отложенный ордер?
Походу, дело в брокере. На демке MetaQuotes переменная deal_ticket возвращает корректное значение. Копировал ваш код без изменений в скрипт. Вызывал так: Open_Sell_Pos(_Symbol,0.01,0,0,0,256,"Test",0);
 
Anton Rakhmanov #:
Походу, дело в брокере. На демке MetaQuotes переменная deal_ticket возвращает корректное значение. Копировал ваш код без изменений в скрипт. Вызывал так: Open_Sell_Pos(_Symbol,0.01,0,0,0,256,"Test",0);

Спасибо за ответ.

Хотелось бы у людей кто "сидит" на брокере Альпари или Альфафорекс услышать либо подтверждение, либо отрицание, чтобы закрыть вопрос. 

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