Always one position (swing) - всегда только одна позиция в рынке = 200 ордеров
Any position - любые позиции = 185 ордеров
При условии "любые позиции" должно быть ордеров больше, чем при условии "всегда только одна позиция в рынке"
При Any position - любые позиции - срабатывает ограничение по максимально-разрешённому общему объёму на счёте - ведь он открывает все позиции без разбору. И когда-то наступает момент переполнения общего дозволенного объёма на счёте, и позиции перестают открываться.
А при Always one position (swing) - "только одна позиция" - ограничение может сработать лишь при изначально заданном объёме открываемой позиции больше максимально-разрешённого. Да и то, советник, как обещает автор, просто этот лот скорректирует до возможного.
Может вам проще в визуальном режиме поглядеть, а не пытаться по количеству ордеров в отчётах делать преждевременные выводы? ;)
intOnInit()
{
//--- Установка торговых параметровif(!SetTradeParameters())
returnINIT_FAILED;
Сама функция. Режим, при котором может возникать то, о чём вы намекаете, отключен.
//+------------------------------------------------------------------+//| Установка торговых параметров |//+------------------------------------------------------------------+bool SetTradeParameters()
{
//--- Установка символаResetLastError();
if(!symbol_info.Name(Symbol()))
{
Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
returnfalse;
}
//--- Получение ценResetLastError();
if(!symbol_info.RefreshRates())
{
Print(__FUNCTION__,": Error obtaining ",symbol_info.Name()," data: ",GetLastError());
returnfalse;
}
if(account_info.MarginMode()==ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
{
Print(__FUNCTION__,": ",account_info.MarginModeDescription(),"-account. EA should work on a hedge account.");
returnfalse;
}
//--- Автоматическая установка типа заполнения
trade.SetTypeFilling(GetTypeFilling());
//--- Установка магика
trade.SetExpertMagicNumber(InpMagic);
//--- Установка проскальзывания
trade.SetDeviationInPoints(InpDeviation);
//--- Установка лота с корректировкой введённого значения
lot=CorrectLots(InpVolume);
//--- Асинхронный режим отправки ордеров выключенtrade.SetAsyncMode(false);//---returntrue;
}
//+------------------------------------------------------------------+
kwlin_089: Этот режим работы не работает в этом советнике: InpModeOpened==OPENED_MODE_SWING
Почему?
Гляжу код и вижу:
//+------------------------------------------------------------------+//| Торговая функция |//+------------------------------------------------------------------+int Trade(const ENUM_PATTERN_TYPE &pattern_type,constint index)
{
ENUM_POSITION_TYPE type=patt.PositionPattern(pattern_type);
int number=0,last_total=list_trade_patt.Total();
//--- Всегда одна позиция в рынке Buy или Sellif(InpModeOpened==OPENED_MODE_SWING)
{
if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
}
//--- Только одна позиция Buyif(InpModeOpened==OPENED_MODE_BUY_ONE)
{
if(NumberBuy()>0) returnWRONG_VALUE;
if(type==POSITION_TYPE_SELL) return last_total;
}
//--- Любое количество Buyif(InpModeOpened==OPENED_MODE_BUY_MANY)
if(type==POSITION_TYPE_SELL) return last_total;
//--- Только одна позиция Sellif(InpModeOpened==OPENED_MODE_SELL_ONE)
{
if(NumberSell()>0) returnWRONG_VALUE;
if(type==POSITION_TYPE_BUY) return last_total;
}
//--- Любое количество Sellif(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();
}
//+------------------------------------------------------------------+
Если режим свинг, то
если нужно открыть покупку, и есть продажи, то закрыть продажи
если нужно открыть продажу, и есть покупки, то закрыть покупки
Если все проверки пройдены, открыть нужную позицию
Смотреть пункты режимов.
п.5 = 3 трейдов
п.3 = 18 тр.
п.5 + п.3 = 21 тр. п.5 + п.3 <= п.2
но п.2 = 200 тр. и не <= 21 тр.
Советник же для хэджевых счетов. В нём невозможно одну позицию развернуть. Нужно одну закрыть, другую открыть.
Идет оптимизация.
Always one position (swing) - всегда только одна позиция в рынке = 200 ордеров
Any position - любые позиции = 185 ордеров
При условии "любые позиции" должно быть ордеров больше, чем при условии "всегда только одна позиция в рынке"
Идет оптимизация.
Always one position (swing) - всегда только одна позиция в рынке = 200 ордеров
Any position - любые позиции = 185 ордеров
При условии "любые позиции" должно быть ордеров больше, чем при условии "всегда только одна позиция в рынке"
При Any position - любые позиции - срабатывает ограничение по максимально-разрешённому общему объёму на счёте - ведь он открывает все позиции без разбору. И когда-то наступает момент переполнения общего дозволенного объёма на счёте, и позиции перестают открываться.
А при Always one position (swing) - "только одна позиция" - ограничение может сработать лишь при изначально заданном объёме открываемой позиции больше максимально-разрешённого. Да и то, советник, как обещает автор, просто этот лот скорректирует до возможного.
Может вам проще в визуальном режиме поглядеть, а не пытаться по количеству ордеров в отчётах делать преждевременные выводы? ;)
Вот от-туда, из кода:
Сама функция. Режим, при котором может возникать то, о чём вы намекаете, отключен.
Или я не так понял ваш намёк?
Вот от-туда, из кода:
Сама функция. Режим, при котором может возникать то, о чём вы намекаете, отключен.
Или я не так понял ваш намёк?
Эта ситуация касается синхронного режима.
Этот режим работы не работает в этом советнике: InpModeOpened==OPENED_MODE_SWING
Почему?
Гляжу код и вижу:
- Если режим свинг, то
- если нужно открыть покупку, и есть продажи, то закрыть продажи
- если нужно открыть продажу, и есть покупки, то закрыть покупки
- Если все проверки пройдены, открыть нужную позицию
Или я что-то не так тут понимаю? Поясните.Почему?
Гляжу код и вижу:
- Если режим свинг, то
- если нужно открыть покупку, и есть продажи, то закрыть продажи
- если нужно открыть продажу, и есть покупки, то закрыть покупки
- Если все проверки пройдены, открыть нужную позицию
Или я что-то не так тут понимаю? ПояснитАртем, речь, как я понимаю, об "исчезающих" позициях. В мт4 это SL и TP. Насчет мт5 не берусь судить...
Артем, речь, как я понимаю, об "исчезающих" позициях. В мт4 это SL и TP. Насчет мт5 не берусь судить...
Так и в МТ5 то же самое будет. Если есть покупка 0.1, то стоп - это стоповый ордер на продажу 0.1
Тебе виднее, но иногда кто-то предпочитает проверить.