[Архив!] Напишу советника бесплатно - страница 21

 
Vinin >>:

Лучше убери. Смесь ломанного и еще неизвестно чего. Жуткая вещь получается. Хотя можешь в читабельный вид перевести.


Советник работает только Бай.

Сделайте пожалуйста, чтобы он и в Селл мог работать отложенными ордерами.


Суть работы: на расстоянии в 50 пс от текущей цены выставляются БайСтоп и Бай Лимит с ТП 100

два ордера с интервалом в 50 пс снизу и 2 ордера сверху.

Советник работает таким образом, чтобы всегда было как минимум 2 отложенных ордера в обе стороны.


Спасибо заранее :)
#property copyright "Slobodyan Oleg"
#property link      "http://www.metaquotes.net"

extern int Orders = 2;
extern double Lots = 0.01;
extern double StepLevel = 50.0;
extern int StopLoss = 3000;
extern int Profit = 100;
double gd_104 = 0.0;

int CheckBS() {
   double l_ord_open_price_12;
   double ld_20 = 0;
   int l_count_8 = 0;
   int l_ord_total_0 = OrdersTotal();
   for (int l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) {
      if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) == TRUE) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_BUY || OrderType() == OP_BUYSTOP && OrderMagicNumber() == 1) {
            if (OrderOpenPrice() - Ask > ld_20 && OrderOpenPrice() - Ask > 0.0) {
               ld_20 = OrderOpenPrice() - Ask;
               l_ord_open_price_12 = OrderOpenPrice();
               l_count_8++;
            }
         }
      }
   }
   if (l_count_8 == 0) {
      l_ord_open_price_12 = NormalizeDouble(Bid - StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_SELLSTOP, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 1, 0, Navy);
   }
   if (l_count_8 < Orders && l_count_8 != 0) {
      l_ord_open_price_12 = NormalizeDouble(l_ord_open_price_12 + StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_SELLSTOP, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 1, 0, Navy);
   }
   return (1);
}

int CheckBL() {
   double l_ord_open_price_12;
   double ld_20 = 0;
   int l_count_8 = 0;
   int l_ord_total_0 = OrdersTotal();
   for (int l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) {
      if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) == TRUE) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_SELL || OrderType() == OP_SELLLIMIT && OrderMagicNumber() == 2) {
            if (Bid - OrderOpenPrice() > ld_20 && Bid - OrderOpenPrice() > 0.0) {
               ld_20 = Bid - OrderOpenPrice();
               l_ord_open_price_12 = OrderOpenPrice();
               l_count_8++;
            }
         }
      }
   }
   if (l_count_8 == 0) {
      l_ord_open_price_12 = NormalizeDouble(Ask - StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYLIMIT, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 2, 0, Navy);
   }
   if (l_count_8 < Orders && l_count_8 != 0) {
      l_ord_open_price_12 = NormalizeDouble(l_ord_open_price_12 - StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYLIMIT, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 2, 0, Navy);
   }
   return (1);
}

int CheckBS_min() {
   double l_ord_open_price_12;
   double ld_20 = Ask;
   int l_count_8 = 0;
   int l_ord_total_0 = OrdersTotal();
   for (int l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) {
      if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) == TRUE) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_BUY || OrderType() == OP_BUYSTOP && OrderMagicNumber() == 1) {
            if (OrderOpenPrice() - Ask < ld_20 && OrderOpenPrice() - Ask > 0.0) {
               ld_20 = OrderOpenPrice() - Ask;
               l_ord_open_price_12 = OrderOpenPrice();
               l_count_8++;
            }
         }
      }
   }
   if (l_count_8 == 0) {
      l_ord_open_price_12 = NormalizeDouble(Ask + StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYSTOP, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 1, 0, Navy);
   }
   if (l_ord_open_price_12 - Ask >= 2.0 * StepLevel * Point && l_count_8 != 0) {
      l_ord_open_price_12 = NormalizeDouble(l_ord_open_price_12 - StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYSTOP, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 1, 0, Navy);
   }
   return (1);
}

int CheckBL_min() {
   double l_ord_open_price_12;
   double ld_20 = Ask;
   int l_count_8 = 0;
   int l_ord_total_0 = OrdersTotal();
   for (int l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) {
      if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) == TRUE) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_BUY || OrderType() == OP_BUYLIMIT && OrderMagicNumber() == 2) {
            if (Ask - OrderOpenPrice() < ld_20 && Ask - OrderOpenPrice() >= 0.0) {
               ld_20 = Ask - OrderOpenPrice();
               l_ord_open_price_12 = OrderOpenPrice();
               l_count_8++;
            }
         }
      
 
}
   }
   if (l_count_8 == 0) {
      l_ord_open_price_12 = NormalizeDouble(Ask - StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYLIMIT, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 2, 0, Navy);
   }
   if (Ask - l_ord_open_price_12 >= 2.0 * StepLevel * Point - 2.0 * (Ask - Bid) && l_count_8 != 0) {
      l_ord_open_price_12 = NormalizeDouble(l_ord_open_price_12 + StepLevel * Point, Digits);
      OrderSend(Symbol(), OP_BUYLIMIT, Lots, l_ord_open_price_12, 3, l_ord_open_price_12 - StopLoss * Point - 2.0 * gd_104, l_ord_open_price_12 + Profit * Point + gd_104, "", 2, 0, Navy);
   }
   return (1);
}

int init() {
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   gd_104 = 0;
   CheckBS();
   CheckBL();
   CheckBS_min();
   CheckBL_min();
   return (0);
}

Файлы:
yolka_1.mq4  6 kb
 
Vinin писал(а) >>

Посмотри. ВРоде нормально работает

Ошибочку одну исправил

Файлы:
[Удален]  
Vinin >>:

Ошибочку одну исправил

Спасибо Виктор если что буду обращатся

Gintaras

Vilnius.

[Удален]  
Vinin >>:

Ошибочку одну исправил

Виктор, когда будет время, кинь пожалосто то же самое и на другую машку

С уважением.

 
dadi писал(а) >>

Виктор, когда будет время, кинь пожалосто то же самое и на другую машку

С уважением.

Попробую, только вот зачем

[Удален]  
Vinin >>:

Попробую, только вот зачем

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

Файлы:
[Удален]  
тут смотрю почему то к названиям добавляетса ненужные буквы а может и к лучшему...
 
dadi писал(а) >>

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

Тогда может точки не нужны совсем?

 
dadi писал(а) >>

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

Файлы: