Что творится с SL - в чём прикол?!

 
Господа, обьясните. Почему, в подавляющем большинстве тестированных мной советников - при отключении уровля StopLoss они вообще перестают торговать?
 

Код в студию!

---

А в журнале есть записи об ошибках?

 

Да запросто! Вот к примеру.

И таких советников как я уже убедился - сотни!

extern double TP = 10.0;
extern double SL = 35.0;
int g_index_92 = 0;
int gi_96;
int gi_100;
int g_timeframe_104;
int gi_108;
int gi_112;
double gd_116;
double gd_124;
double gda_132[];

double LotsOptimized() {
   gd_116 = NormalizeDouble(AccountFreeMargin() / 10000.0, 1);
   if (gd_116 < 0.1) gd_116 = 0.1;
   return (gd_116);
}

int init() {
   gd_124 = MarketInfo(Symbol(), MODE_SPREAD) * Point;
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   g_timeframe_104 = 30;
   gi_108 = iBands(NULL, g_timeframe_104, 18, 2, 0, PRICE_HIGH, MODE_UPPER, 0) - iBands(NULL, g_timeframe_104, 18, 2, 0, PRICE_LOW, MODE_LOWER, 0);
   gi_112 = gi_108 / 2 + iBands(NULL, g_timeframe_104, 18, 2, 0, PRICE_LOW, MODE_LOWER, 0);
   gi_96 = ArrayMaximum(gda_132);
   gi_100 = ArrayMinimum(gda_132);
   if (OrdersTotal() == 0) {
      if (gi_112 > gda_132[gi_96]) {
         OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, 3, Ask - SL * Point, Ask + gd_124 + TP * Point, 0, 16384, 0, Blue);
         g_index_92 = 0;
         ArrayResize(gda_132, 0);
      }
      if (gi_112 < gda_132[gi_100]) {
         OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, 3, Bid + SL * Point, Bid - gd_124 - TP * Point, 0, 16384, 0, Red);
         g_index_92 = 0;
         ArrayResize(gda_132, 0);
      }
   }
   gda_132[g_index_92] = gi_112;
   g_index_92++;
   return (0);
}

Попробуйте прогнать его за прошедший месяц с настройками по умолчанию, а затем - поставьте Sl=0

В чем прикол?

Файлы:
uoksrq.mq4  2 kb
 
tim21701 писал(а) >>

Да запросто! Вот к примеру.

И таких советников как я уже убедился - сотни!

Попробуйте прогнать его за прошедший месяц с настройками по умолчанию, а затем - поставьте Sl=0

В чем прикол?

Вероятно, ваш брокер не позволяет открывать позиции, в которых SL совпадает с ценой открытия.

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

 
OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, 3, Ask - SL * Point, Ask + gd_124 + TP * Point, 0,

OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, 3, Ask - 0 * Point, Ask + gd_124 + TP * Point, 0,

Ошибка здесь, посмотрите сами что будет если SL = 0;

 
Лови!
Файлы:
uoksrq_1.mq4  2 kb
 

Брокер позволяет, в чем можно убедиться в этой теме. И как Sl может совпадать с ценой открытия, если установлено 0! О чем в учебнике сказано для StopLoss: "0 - значимых критериев нет".

 
tim21701 писал(а) >>

Брокер позволяет, в чем можно убедиться в этой теме. И как Sl может совпадать с ценой открытия, если установлено 0! О чем в учебнике сказано для StopLoss: "0 - значимых критериев нет".

У вас не 0 а Ask посмотрите внимательно

 
tim21701 писал(а) >>

Брокер позволяет, в чем можно убедиться в этой теме. И как Sl может совпадать с ценой открытия, если установлено 0! О чем в учебнике сказано для StopLoss: "0 - значимых критериев нет".

1) Когда я писал "SL" (специально сделал оба символа заглавными), то имел ввиду параметр "stoploss" команды OrderSend

2) Предлагаете изучить 13 страниц постов ради определения того, что позволяет Ваш брокер?

 
zxc >>:
Лови!

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

 
Prival >>:

У вас не 0 а Ask посмотрите внимательно

Да. Посмотрел не туда просто.

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