Советники: Patterns_EA - страница 2

 
Morexod:



Смотреть пункты режимов.

п.5 = 3 трейдов

п.3 = 18 тр.

п.5 + п.3 = 21 тр.     п.5 + п.3 <=  п.2

но п.2 = 200 тр.  и  не <=  21 тр.

Советник же для хэджевых счетов. В нём невозможно одну позицию развернуть. Нужно одну закрыть, другую открыть.
 
Artyom Trishkin:
Советник же для хэджевых счетов. В нём невозможно одну позицию развернуть. Нужно одну закрыть, другую открыть.

Идет оптимизация.

Always one position (swing) - всегда только одна позиция в рынке = 200 ордеров

Any position - любые позиции = 185 ордеров

При условии "любые позиции" должно быть ордеров больше, чем при условии "всегда только одна позиция в рынке" 

 
Morexod:

Идет оптимизация.

Always one position (swing) - всегда только одна позиция в рынке = 200 ордеров

Any position - любые позиции = 185 ордеров

При условии "любые позиции" должно быть ордеров больше, чем при условии "всегда только одна позиция в рынке" 

При Any position - любые позиции - срабатывает ограничение по максимально-разрешённому общему объёму на счёте - ведь он открывает все позиции без разбору. И когда-то наступает момент переполнения общего дозволенного объёма на счёте, и позиции перестают открываться.

А при Always one position (swing) - "только одна позиция" - ограничение может сработать лишь при изначально заданном объёме открываемой позиции больше максимально-разрешённого. Да и то, советник, как обещает автор, просто этот лот скорректирует до возможного.

Может вам проще в визуальном режиме поглядеть, а не пытаться по количеству ордеров в отчётах делать преждевременные выводы? ;)

 
fxsaber:

Вот от-туда, из кода:

int OnInit()
  {
//--- Установка торговых параметров
   if(!SetTradeParameters())
      return INIT_FAILED;

Сама функция. Режим, при котором может возникать то, о чём вы намекаете, отключен.

//+------------------------------------------------------------------+
//| Установка торговых параметров                                    |
//+------------------------------------------------------------------+
bool SetTradeParameters()
  {
//--- Установка символа
   ResetLastError();
   if(!symbol_info.Name(Symbol()))
     {
      Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
      return false;
     }
//--- Получение цен
   ResetLastError();
   if(!symbol_info.RefreshRates())
     {
      Print(__FUNCTION__,": Error obtaining ",symbol_info.Name()," data: ",GetLastError());
      return false;
     }
   if(account_info.MarginMode()==ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
     {
      Print(__FUNCTION__,": ",account_info.MarginModeDescription(),"-account. EA should work on a hedge account.");
      return false;
     }
//--- Автоматическая установка типа заполнения
   trade.SetTypeFilling(GetTypeFilling());
//--- Установка магика
   trade.SetExpertMagicNumber(InpMagic);
//--- Установка проскальзывания
   trade.SetDeviationInPoints(InpDeviation);
//--- Установка лота с корректировкой введённого значения
   lot=CorrectLots(InpVolume);
//--- Асинхронный режим отправки ордеров выключен
   trade.SetAsyncMode(false);
//---
   return true;
  }
//+------------------------------------------------------------------+

Или я не так понял ваш намёк?

 
Artyom Trishkin:

Вот от-туда, из кода:

Сама функция. Режим, при котором может возникать то, о чём вы намекаете, отключен.

Или я не так понял ваш намёк?

Эта ситуация касается синхронного режима.

 
Этот режим работы не работает в этом советнике: InpModeOpened==OPENED_MODE_SWING
 
kwlin_089:
Этот режим работы не работает в этом советнике: InpModeOpened==OPENED_MODE_SWING

Почему?

Гляжу код и вижу:

//+------------------------------------------------------------------+
//| Торговая функция                                                 |
//+------------------------------------------------------------------+
int Trade(const ENUM_PATTERN_TYPE &pattern_type,const int index)
  {
   ENUM_POSITION_TYPE type=patt.PositionPattern(pattern_type);
   int number=0,last_total=list_trade_patt.Total();
//--- Всегда одна позиция в рынке Buy или Sell
   if(InpModeOpened==OPENED_MODE_SWING)
     {
      if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();
      if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
     }
//--- Только одна позиция Buy
   if(InpModeOpened==OPENED_MODE_BUY_ONE)
     {
      if(NumberBuy()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_SELL) return last_total;
     }
//--- Любое количество Buy
   if(InpModeOpened==OPENED_MODE_BUY_MANY)
      if(type==POSITION_TYPE_SELL) return last_total;
//--- Только одна позиция Sell
   if(InpModeOpened==OPENED_MODE_SELL_ONE)
     {
      if(NumberSell()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_BUY) return last_total;
     }
//--- Любое количество Sell
   if(InpModeOpened==OPENED_MODE_SELL_MANY)
      if(type==POSITION_TYPE_BUY) return last_total;
//--- Все проверки пройдены, либо выбрано любое количество любых позиций - открываем позицию
   if(to_logs)
      Print(__FUNCTION__,": To open ",(type==POSITION_TYPE_BUY ? "Buy" : "Sell")," position by pattern ",patt.DescriptPattern(pattern_type));
   if(OpenPosition(pattern_type))   
      list_trade_patt.Delete(index);
//--- Возврат количества открытых позиций
   return last_total-list_trade_patt.Total();
  }
//+------------------------------------------------------------------+
  1. Если режим свинг, то
    1. если нужно открыть покупку, и есть продажи, то закрыть продажи
    2. если нужно открыть продажу, и есть покупки, то закрыть покупки
  2. Если все проверки пройдены, открыть нужную позицию
Или я что-то не так тут понимаю? Поясните.
 
Artyom Trishkin:

Почему?

Гляжу код и вижу:

  1. Если режим свинг, то
    1. если нужно открыть покупку, и есть продажи, то закрыть продажи
    2. если нужно открыть продажу, и есть покупки, то закрыть покупки
  2. Если все проверки пройдены, открыть нужную позицию
Или я что-то не так тут понимаю? Пояснит

Артем, речь, как я понимаю, об  "исчезающих" позициях. В мт4 это SL и TP. Насчет мт5 не берусь судить... 

 
Алексей Тарабанов:

Артем, речь, как я понимаю, об  "исчезающих" позициях. В мт4 это SL и TP. Насчет мт5 не берусь судить... 

Так и в МТ5 то же самое будет. Если есть покупка 0.1, то стоп - это стоповый ордер на продажу 0.1
Позиции не будет при срабатывании. А чтобы перевернуть позицию, нужно продать 0.2
 
Artyom Trishkin:
Так и в МТ5 то же самое будет. Если есть покупка 0.1, то стоп - это стоповый ордер на продажу 0.1
Позиции не будет при срабатывании. А чтобы перевернуть позицию, нужно продать 0.2

Тебе виднее, но иногда кто-то предпочитает проверить. 

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