Jump to content
Programmer

Советник: Seregin

Recommended Posts

TarasBY

Кирилл! Вопрос к Вам.

В данном коде меня интересует правильность отработки блока ошибок совместно с Semaphore. И оператор return (выделено) уместен ли в дааном случае?

 

void CloseSeries()
{
  int i, total = OrdersTotal();
  bool res;
  int cmd, error2;
  double price;

  if (PrintCom) {Print ("Удаляем серию");}
  for (i = total - 1; i >= 0; i--)                             //справа налево, потому что удаляем
  {
      if (OrderSelect (i, SELECT_BY_POS))
      {
          if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
              if (PrintCom) {Print ("Ищем и удаляем рыночные ордера: i=", i, " OrderTicket()=", OrderTicket(), " OrderType()=", OrderType());}
              cmd = OrderType();
              if (cmd == OP_BUY || cmd == OP_SELL)
              {
                  while (true)
                  {
                      if (cmd == OP_BUY) 
                      {price = MarketInfo (OrderSymbol(), MODE_BID);}
                      else             
                      {price = MarketInfo (OrderSymbol(), MODE_ASK);}
                      SemaphoreTake ("TRADECONTEXT");
                      res = OrderClose (OrderTicket(), OrderLots(), price, slip, CLR_NONE);                       
                      if (res != TRUE) {error2 = GetLastError(); error (GetLastError());}
                      else 
                      {
                          if (PrintCom) {Print ("Удалили рыночные ордера");}
                          error2 = 0;
                      }
                      if (error2 == 135) 
                          RefreshRates();                           
                      else break;
                          SemaphoreReturn ("TRADECONTEXT");
                  }
              }
          }
      }
      else error (GetLastError());
  }
  total = OrdersTotal();
  for (i = total - 1; i >= 0; i--)                        //справа налево, потому что удаляем
  {
      OrderSelect (i, SELECT_BY_POS);
      Print ("Ищем и удаляем отложенные ордера: i=", i, " OrderTicket()=", OrderTicket(), " OrderType()=", OrderType());
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      {
          if (OrderType() != OP_BUY && OrderType() != OP_SELL)
          {
              SemaphoreTake ("TRADECONTEXT"); 
              res = OrderDelete (OrderTicket());
              SemaphoreReturn("TRADECONTEXT");
              if (res != TRUE)  {error (GetLastError()); [b]return (-1)[/b];}
              else 
              {
                  if (res == 0)
                  if (PrintCom) {Print ("Удалили отложенные ордера");}
              }
          }
      }
  }
}


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
TarasBY
Кто нибудь подскажет, когда пытаюсь сохранить данные в Exсel из вкладки результаты оптимизации некоторые значения сохраняються в виде даты. Это можно как-то исправить?

 

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

 

Оп! сорри, Пропустил как то это, похоже осталось со старых версий. Спасибо за обнаруженные ошибки, хотя компилятор это не считает похоже за ошибку. Сейчас исправим.

Видимо компилятор переводит bool в integer и не ругается...


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
sergey1294

Форматирование сработало, а вот значения заносятся неправильно.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
TarasBY

Советник у меня с данным набором функций на демке работает, вроде, нормально. Но остаётся всё та же проблема. При включении - отключении советника или при перезапуске терминала не корректное подхватывание советником своих ордеров.

Ещё у меня на демке параллельно работает ещё несколько советников и не все из них ведут себя "гостеприимно". Т.е. могут "из хороших" побуждений по эквити закрыть все ордера. В рынке ордера удаляются, а отложениики остаются, и, соответственно, - зависалово, так как новую серию советник запустить не может.

Мне видится, что флаги, как-то не корректно работают... :no:


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
sergey1294
Советник у меня с данным набором функций на демке работает, вроде, нормально. Но остаётся всё та же проблема. При включении - отключении советника или при перезапуске терминала не корректное подхватывание советником своих ордеров.

 

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

 

Ещё у меня на демке параллельно работает ещё несколько советников и не все из них ведут себя "гостеприимно". Т.е. могут "из хороших" побуждений по эквити закрыть все ордера. В рынке ордера удаляются, а отложениики остаются, и, соответственно, - зависалово, так как новую серию советник запустить не может.

Мне видится, что флаги, как-то не корректно работают... :no:

 

лучше не использовать подобные советники которые закрывают по эквити все рыночные и не удаляют отложенные совместно.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
TarasBY
Даже не знаю в чем может быть такая проблема у меня ни когда ее не было. Если вы конечно не вносили изменения в код, а потом компелировали заново, в таком случае магик советника устанавливается по умолчанию. после подобных манипуляций проверяйте в свойствах настройки советника.

 

Изменений (существенных) в код я не вносил. И Richard и Seregin в подобных (описанных мной) случаях ведут себя одинаково. Могу свой код (причёсанный) показать. :roll:

 

лучше не использовать подобные советники которые закрывают по эквити все рыночные и не удаляют отложенные совместно.

 

Это не выход из положения, правильнее в коде предусмотреть такие варианты. :3:


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
sergey1294
Изменений (существенных) в код я не вносил. И Richard и Seregin в подобных (описанных мной) случаях ведут себя одинаково. Могу свой код (причёсанный) показать. :roll:

 

 

 

Это не выход из положения, правильнее в коде предусмотреть такие варианты. :3:

 

Вот у меня как раз сейчас ситуация произошла завис терменал, перезапустил все работает корректно. А код давай посмотрю.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
TarasBY

Попытался сам решить означенную мной проблему. Но что самое интересное, что версия 2.1 работает (в тестере) наиболее продуктивно... :crazy:

Seregin v2.4.1.rar


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
sergey1294

Педведем итоги:

01.06.2009 - 07.06.2009: +380,11

08.06.2009 - 14.06.2009: +374,00

------------------------------------------------------

Итого: +754,11

 

88a0b2dbeed478b6ce9af8e9a8fc512a.gif


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
oleg.74

Добрый день.Подскажите пожалуйста а где в советнике изменять уровень профита в пунктах при котором серия будет закрываться.Спасибо.


форекс-это сначала казино и уж потом работа.

Share this post


Link to post
Share on other sites
sergey1294
Добрый день.Подскажите пожалуйста а где в советнике изменять уровень профита в пунктах при котором серия будет закрываться.Спасибо.

 

Такого параметра нет в советнике, есть ProfitNorm - это уровень плавающего профита в валюте депозита.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
oleg.74
Такого параметра нет в советнике, есть ProfitNorm - это уровень плавающего профита в валюте депозита.

спасибо.поработаю с этим параметром.не заметил комменты в коде.

Edited by oleg.74

форекс-это сначала казино и уж потом работа.

Share this post


Link to post
Share on other sites
Lev050

Сергей добрый день.

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

Описание достаточно понятное прилагается.

Пулька.txt

Share this post


Link to post
Share on other sites
sergey1294
Сергей добрый день.

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

Описание достаточно понятное прилагается.

 

Если я правильно понял, ты хочешь увеличивать начальный лот в каждой последующей выставляемой серии.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
msblast

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

Share this post


Link to post
Share on other sites
sergey1294
Открыл советника, куча параметров, непонятно что к чему, на форуме скудная информация по нему... Расскажите в кратце о самом своетнике, его параметрах, глядишь и я подключусь к его разработке и тестировании

 

 

//-----------------------------------Входные параметры----------------------------------------------

Magic = 1000001;

Automat = true; // true = циклы будут повторятся, новый цикл начинается при появлении сигнала

SeriesNorm = 8; // число сработавших ордеров BUYSTOP и SELLSTOP в серии при достижении которго срабатывает ProfitDanger

SeriesMax = 10; // максимальное число отложенных ордеров BUYSTOP и SELLSTOP в серии

ProfitNorm = 100; // прибыль при достижении которой серия закрываеться

ProfitDanger = 0; // аварийная прибыль при достижении которой серия закрываеться

Lot = 0.1; // минимальный размер начального лота в серии

Delta = 300; // растояние в пунктах между отложенными ордерами

K = 2; // коэфициэнт увеличения лотов в серии

slip = 3; // максимальное отклонение от цены

MODE = 2; // Выбор режима 1 - полуавтомат, 2 - автомат

 

s_mode_1 = "---MODE=1: AUTOMATIC---"; // Режим полуавтомат

Type = 0; // тип рыночного ордера 0 - BUY, 1 - SELL

NumberOfSeries = 5; // максимальное колличество серий

 

s_mode_2 = "---MODE=2: SIGNAL---"; // Режим автомат, по сигналу МА

s5 = "Setup: MA"; // Параметры Moving Average

MA_timeframe = 0;

MA_period = 21;

MA_shift = 0;

MA_method = 0;

MA_applied_price = 1;

 

Принцип работы советника заключается в следующем: Выставить сетку ордеров байстоп и селлстоп на одинаковом расстоянии Delta от друг от друга для первых от цены, а так же открывет один рыночный ордер по сигналу МА. как только общая прибыль всех сработавших ордеров достигнет установленного значения ProfitNorm в валюте депозита серия закрываеться и выставляется новая. Если в серии сработало колличество ордеров установленных в параметре SeriesNorm, то закрытие серии произойдет при достижении уровня установленного в параметре ProfitDanger в валюте депозита. Есть два режима работы автоматический и полуавтомат. в автомотическом тип выставляемого рыночного ордера определяется по сигналу МА и серии повтаряются бесконечно пока не будет выключен советник в ручную, в режиме полуавтомата вы задаете тип выставляемого рыночного ордера параметр Type 0 - бай, 1 - селл и колличество серий параметр NumberOfSeries, как только завершится последняя серия установленная в NumberOfSeries советник остановиться.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
Tevez

sergey1294, а каким образом вы тестируете советника в реальном времени? 24 часа в сутки на протяжении 5 дней включен комп с терминалом или вы на удаленный сервер залили его?

Share this post


Link to post
Share on other sites
sergey1294

У меня комп работает круглосуточно, иногда на выходных выключаю.


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
TarasBY
sergey1294, а каким образом вы тестируете советника в реальном времени? 24 часа в сутки на протяжении 5 дней включен комп с терминалом или вы на удаленный сервер залили его?

 

У меня на VPS крутится этот советник, правда только первую неделю, да и с версией окончательной ещё не всё ОК. :casha:


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
sergey1294
У меня на VPS крутится этот советник, правда только первую неделю, да и с версией окончательной ещё не всё ОК. :casha:

 

я посмотрел и подправил твою версию, должно все работать. держи

Seregin v2.4.2.mq4


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
TarasBY
я посмотрел и подправил твою версию, должно все работать. держи

 

Спасибо, сейчас "поковыряю" (на счёт моих ошибок)... :flower2:


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
TarasBY

Насколько я понимаю

 

if (PrintCom == true)

и

if (PrintCom)

 

это равнозначные выражения.

 

Сергей, я специально ввёл проверку на символ,

 

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

 

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

И с моей т.з. логичнее функцию (любую) использовать в соответствии с её названием.

FindSymbolOrder() - поиск ордеров, и не совсем изящно в неё засовывать CloseAll()... :roll:

А в моём варианте работать не будет (в старте её прописать)? Пока рынок не работает проверить не смогу.

Но всё равно спасибо за соучастие! :flower2:


Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
sergey1294
Насколько я понимаю

 

if (PrintCom == true)

и

if (PrintCom)

 

это равнозначные выражения.

 

Сергей, я специально ввёл проверку на символ,

 

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

 

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

И с моей т.з. логичнее функцию (любую) использовать в соответствии с её названием.

FindSymbolOrder() - поиск ордеров, и не совсем изящно в неё засовывать CloseAll()... :roll:

А в моём варианте работать не будет (в старте её прописать)? Пока рынок не работает проверить не смогу.

Но всё равно спасибо за соучастие! :flower2:

if (PrintCom == true)

и

if (PrintCom)

 

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

 

И с моей т.з. логичнее функцию (любую) использовать в соответствии с её названием.

FindSymbolOrder() - поиск ордеров, и не совсем изящно в неё засовывать CloseAll()... :roll:

А в моём варианте работать не будет (в старте её прописать)? Пока рынок не работает проверить не смогу.

 

 

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


Конструктор портфеля ПАММ-Счетов:

http://kpps.info/

Share this post


Link to post
Share on other sites
TarasBY

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

 

Я не про то будет или не будет работать твой вариант - работать он будет, я про изящество исполнения...

Почему нельзя при выполнении условий (нет рыночных, но есть отложенные) запустить удаление отложенников в int start??? :casha:

 

Я подправил свой вариант с учётом мной изложенного и тобой подправленного. Глянь, если не сложно.

Seregin v2.4.3.rar

Edited by TarasBY
Редактирование

Человек тогда готов ЗАРАБАТЫВАТЬ, когда он готов ЗАПЛАТИТЬ (в той или иной форме) за свою удачу... :yes:

Мои наработки - www.plati.ru/asp/seller.asp?id_s=178687. :cowboy:

Share this post


Link to post
Share on other sites
Tevez

а на какой паре проходит тест? просто почти 400 уе в неделю с депозита 5000 это лихо... у меня оптимизация на фунтобаксе выдавала с депозита 5000 профит 2400 за полгода. а тут за неделю почти 400 получается...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×