Советники: NewMartin - страница 3

 
Warloc1966:
Понятно, а можно это как то исправить?
Да, конечно. Я исправлю.
 
Warloc1966:
Понятно, а можно это как то исправить?
Исправил. Добавил версию V1.1. Ждем проверки ее модераторами и продолжаем зарабатывать кучи бабла)
 

Добрый день!

Идея интересная, но я пишу здесь по другому поводу. Как программист программисту, хочу поделиться методом нумерации ордеров. У вас это сделано с помощью комментария. Я тоже так делал раньше. Но поскольку брокеры могут затереть ваш комментарий или он полностью измениться (при частичном закрытии ордера), то это метод не является стабильным.

Я это делаю теперь с помощью магика. Т.е. если в советнике задан какой-то магик (а вы всё равно это сделаете), то если магик умножить на 10, потом прибавить какую-либо цифру (от 0 до 9), то у вас получится нумерованный ордер. Только потом нужно будет найти "свои" ордера и выделить нужную цифру. Привожу пример такой процедуры:

bool Good_ord(int i, int mode, int& n_mag)
{
   if (!OrderSelect(i,SELECT_BY_POS,mode))return(0);
   if (OrderSymbol()!=Symbol())return(0);
  
   if (OrderMagicNumber()>0)
   {
      int n=(int)MathMod(OrderMagicNumber(),10);
      if (Magic==(OrderMagicNumber()-n)/10)
      {
         n_mag=n;
         return(1);
      }
   }
  
   return(0);
}
//---------------------------------------------------------------

вызов этой процедуры я делаю так:

for (int i=0;i<OrdersTotal();i++)
{
   if (!Good_ord(i,MODE_TRADES,n_mag))continue;
  
   //...................
}

или так:

for (int i=OrdersHistoryTotal()-1;i>=0;i--)
{
   if (!Good_ord(i,MODE_HISTORY,n_mag))continue;
   //.............
}


Magic задаётся во вх. параметрах.
Так можно задавать любое значение для ордера. Я, например,так задаю день час и минуту открытия серии ордеров. Т.е. там у меня добавляются числа с шестью нулями.

Всё это ограничивает размер задаваемого магика (по кол-ву цифр). Это я проверяю и указываю трейдеру при старте советника.

(Может будет полезно) 

 
Evgeniy Inkov:

Добрый день!

Идея интересная, но я пишу здесь по другому поводу. Как программист программисту, хочу поделиться методом нумерации ордеров. У вас это сделано с помощью комментария. Я тоже так делал раньше. Но поскольку брокеры могут затереть ваш комментарий или он полностью измениться (при частичном закрытии ордера), то это метод не является стабильным.

Я это делаю теперь с помощью магика. Т.е. если в советнике задан какой-то магик (а вы всё равно это сделаете), то если магик умножить на 10, потом прибавить какую-либо цифру (от 0 до 9), то у вас получится нумерованный ордер. Только потом нужно будет найти "свои" ордера и выделить нужную цифру. Привожу пример такой процедуры:

bool Good_ord(int i, int mode, int& n_mag)
{
   if (!OrderSelect(i,SELECT_BY_POS,mode))return(0);
   if (OrderSymbol()!=Symbol())return(0);
  
   if (OrderMagicNumber()>0)
   {
      int n=(int)MathMod(OrderMagicNumber(),10);
      if (Magic==(OrderMagicNumber()-n)/10)
      {
         n_mag=n;
         return(1);
      }
   }
  
   return(0);
}
//---------------------------------------------------------------

вызов этой процедуры я делаю так:

for (int i=0;i<OrdersTotal();i++)
{
   if (!Good_ord(i,MODE_TRADES,n_mag))continue;
  
   //...................
}

или так:

for (int i=OrdersHistoryTotal()-1;i>=0;i--)
{
   if (!Good_ord(i,MODE_HISTORY,n_mag))continue;
   //.............
}


Magic задаётся во вх. параметрах.
 

(Может будет полезно) 

Спасибо) Действительно, идея хорошая. Возьму на заметку.
Просто часто в комментариях ордера приходится хранить не только нумерацию или не один номер, тогда ваш способ не очень подойдет. 
Но если нужно хранить один номер, то ваш вариант хорош.
 
Sergey Rashevskiy:
Спасибо) Действительно, идея хорошая. Возьму на заметку.
Просто часто в комментариях ордера приходится хранить не только нумерацию или не один номер, тогда ваш способ не очень подойдет. 
Но если нужно хранить один номер, то ваш вариант хорош.
Да, вы правы, иногда хочется ещё чего-нибудь туда засунуть.... Но это тоже можно закодировать в цифры. В принципе, этого метода мне хватает на все случаи в жизни.
 
Evgeniy Inkov:
Да, вы правы, иногда хочется ещё чего-нибудь туда засунуть.... Но это тоже можно закодировать в цифры. В принципе, этого метода мне хватает на все случаи в жизни.
Часто бывает необходимость сохранить время первого ордера серии или цену какого то уровня.
 
Sergey Rashevskiy:
Часто бывает необходимость сохранить время первого ордера серии или цену какого то уровня.

вот именно так я и задаю время первого ордера в серии:

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

И цену также задаю (предварительно превращая её в целое число, т.е. цену делю на Point
 

Здравствуйте ! У меня как то он странно работает на Альпари демо открывает сделки (5 знак) ,а на Альпари реал нано (4 знак) нет.

В журнале и в экспертах ошибок нет .

 
Artour Nikolaev:

Здравствуйте ! У меня как то он странно работает на Альпари демо открывает сделки (5 знак) ,а на Альпари реал нано (4 знак) нет.

В журнале и в экспертах ошибок нет .

Здравствуйте. Можно посмотреть ваши настройки?
 
Sergey Rashevskiy:

Я понял в чем ошибка. Многие брокеры в случае стоплосса добавляют в комментарий ордера символы "[sl]" например и это сбивает советник.

Советник из комментария закрытого ордера берет информацию о том какой номер ордера был в серии ордеров.

Не используйте комментарии... смотрите в сторону объектной модели, при желании сохраняйте в файлы... ИМХО ключевое слово не магик а тикет!
Причина обращения: