Максисальная длина названия символа на FOREX - страница 7

 
prostotrader:

У меня ни разу не возникало потребности выяснить какой советник сколько наторговал.

Каждый советник имеет свой процент риска и прибыли - вот что интересует.

Это Вы, ФОРЕКСники, всё время озабочены какими-то магическими подсчётами.

99% ищут "Грааль", которого НЕТ и быть НЕ МОЖЕТ, а 1% совсем новички, которые смотрят в рот бывалым сливаторам.

Объяснение, скорее всего в том, что "торговля" на ФОРТС идет "не за свои" и "не за копейки"?

 
aleger:

Объяснение, скорее всего в том, что "торговля" на ФОРТС идет "не на свои"?

Почему же не на свои? Как раз на свои, кровные.

Но, естественно, чтобы уверенно торговать на ФОРТС вначале, необходимо как минимум 250 000 - 300 000 руб.

И не нужно слово ТОРГОВЛЯ, в применении в ФОРТС, брать в кавычки, кавычки нужно ставить для ФОРЕКС.

 
prostotrader:

Почему же не на свои? Как раз на свои, кровные.

Но, естественно, чтобы уверенно торговать на ФОРТС вначале, необходимо как минимум 250 000 - 300 000 руб.

И не нужно слово ТОРГОВЛЯ, в применении в ФОРТС, брать в кавычки, кавычки нужно ставить для ФОРЕКС.

Лично я считаю Форекс исключительно "наблюдением за изменениями курсов валют".

 
prostotrader:

У меня ни разу не возникало потребности выяснить какой советник сколько наторговал.

Каждый советник имеет свой процент риска и прибыли - вот что интересует.

Это Вы, ФОРЕКСники, всё время озабочены какими-то магическими подсчётами.

99% ищут "Грааль", которого НЕТ и быть НЕ МОЖЕТ, а 1% совсем новички, которые смотрят в рот бывалым сливаторам.

Нет никакой разницы между форексниками, биржевиками и криптофилами. Везде ставки на изменение курса.

prostotrader:

Для ФОРТС два младшие байта позволяют (65535) каждому новому ордеру присваивать свой магик, искать ордер быстро и просто и

всё понятно.

Вы можете так же два байта освободить под свои нужды в CRC-решении. Зачем каждому ордеру свой магик - не понял.

 
fxsaber:

Нет никакой разницы между форексниками, биржевиками и криптофилами. Везде ставки на изменение курса.

Ну-ну...

Вы можете так же два байта освободить под свои нужды в CRC-решении. Зачем каждому ордеру свой магик - не понял.

Я использую OrderSendAsync(), а ТМ5 очень часто делает огромные задержки, по ID реквеста невозможно отслеживать

ордер, а по магику можно 

 
prostotrader:

Я использую OrderSendAsync(), а ТМ5 очень часто делает огромные задержки, по ID реквеста невозможно отслеживать

ордер, а по магику можно 

Получается, что несколько забиваете на работу OnTradeTransaction и смотрите наличие ордера с нужным магиком среди живых/мертвых?

 
fxsaber:

Получается, что несколько забиваете на работу OnTradeTransaction и смотрите наличие ордера с нужным магиком среди живых/мертвых?

Нет, не забиваю, просто если в течении секунды не сработал OnTradeTransaction, что включается функция поиска ордера по магику.

Запоминаю времена,а потом сравниваю

//+------------------------------------------------------------------+
//| 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) == true)
  {
    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);
  }
}
 
prostotrader:

Нет, не забиваю, просто если в течении секунды не сработал OnTradeTransaction, что включается функция поиска ордера по магику.

Фактически, это забивание. Т.к. можно не дожидаясь отслеживать. Единственная безальтернативность OnTradeTransaction, это если ордер отклонен. Например, по нехватке денег.


Получается, что сделали сотню Async-операций, заполнив массив (список) соответствующими мэджиками и реквестами. Как только в OnTradeTransaction получили ответ по реквесту, убрали элемент из списка. Как только увидели засвет мэджика из списка среди живых/мертвецов - убрали запись. Так достигается контроль более-менее. Правильно понял?


Вы можете вместо мэджика еще использовать другие поля - SL/TP, Comment.

 
fxsaber:

Фактически, это забивание. Т.к. можно не дожидаясь отслеживать. Единственная безальтернативность OnTradeTransaction, это если ордер отклонен. Например, по нехватке денег.

Если Вам так нравится, то пусть будет "забивание", но после первой проверки, опять ждем 1 сек OnTradeTransaction, а потом опять проверка.

Я бы не назвал это "забиванием" . 

 
prostotrader:

Если Вам так нравится, то пусть будет "забивание", но после первой проверки, опять ждем 1 сек OnTradeTransaction, а потом опять проверка.

А зачем ждать, когда можно проверять на каждом On-пуке?

Если правильно понимаю, OnTradeTransaction пропускает реквесты только в случае обрывов связи?

А так, конечно, список не отвалившихся мэджиков/реквестов нужно всегда сохранять при выходе из советника.