Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от waterfall



Советник скальпер. Комментариев 1
2018-04-04 14:39:04Рейтинг 0

Добавить в советник (profit_canal) недостающие функции.

Здравствуйте уважаемые мастера.
Прошу вставить в код советника функции _Magic Number_ и _Comments_
с возможностью менять как число так и комментарий.
Архив с советником (profit_canal) прилагается.
profit_canal.rar (10 Kb)
P.S. прошу не судить строго, это мой первый топик.
  • 0
  • Просмотров: 3374
  • 14 сентября 2017, 21:56
  • waterfall
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Скрипт
Следующая запись в группе  
скрипт
14 сентября 2017
15 сентября 2017

Брокер для ваших роботов, 15 лет на рынке

Комментарии (11)

+
0
//+------------------------------------------------------------------+
//|                                                           17.mq4 |
//|                                                               gi |
//|                                                                  |
//+------------------------------------------------------------------+
//|анализ всех ордеров на наличие подходяих                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+


#property copyright "gi"
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
input   int Dist_TP=11;                              // Заданный TP (pt)
input   double Lot=0.01;                          // Лоты
input   string CM = "Expert Name";
input   int MN = 123;
//+------------------------------------------------------------------+
double Old_Price;                   // Ценa (Bid,округленная)
double Price;                     // Цены открываемых ордеров
double TP;                        // Цены ТР
int dig;                     // к-во знаков при округлении 3 или 1
int i,k,l,p,r;
double Poin;                     // Вес пункта (для TP)
string Symb;                        // Финанс. инструмент
string Order_Tip[4];
int Order_Type;
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//   Alert ("Начинаем-----------------------------");
   Symb=Symbol();
   dig=Digits-1;
   Poin=Point;
   if(dig==2 || dig==4)
     {
      dig--;
      Poin*=10;
     }
//   Order_Type[] = {2,4,3,5};         // Типы устанавлтваемых ордеров:
//   2-байлимит, 4-байстоп, 3-селл лимит,5- селл стоп
//   Order_Tip[4] = {"BUYLIMIT","BUYSTOP","SELLLIMIT","SELLSTOP"};

//---
   return(0);
  }
//--------------------------------------------------------------- 1 --
void OnTick() // Спец.функция OnTick
  {
//+------------------------------------------------------------------+
// Alert("tik!");
//+------------------------------------------------------------------+
   Old_Price=NormalizeDouble(Bid,dig); // Округление цены 
   double Price_Minus=Old_Price-10*Poin;
   double Price_Plus=Old_Price+10*Poin;
   int Flag[4]={0,0,0,0};                // Выставляем флаги необходимости открытия ордеров
   l=0;//к-во проанализированных ордеров
   p=0;//результат анализа цены открытия ордера 1 при-10, 2 при +10,0- иначе
   r=0;
   int Ord_Tot=OrdersTotal();                 // Всего ордеров
//--------------------------------------------------------------- 2 --
   for(k=1; k<=Ord_Tot; k++) // Цикл перебора ордер
     {
      if((Flag[0]+Flag[1]+Flag[2]+Flag[3])==4) break;                     // Найдены все 4 ордера 
      if(OrderSelect(k-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:                         
         l++;
         string Ord_Sy=OrderSymbol();
         if(Ord_Sy!=Symb) continue;    // Не наш фин.инструм.
         int Tip=OrderType();                   // Тип ордера
         double Open_Price=NormalizeDouble(OrderOpenPrice(),dig); // Цена открытия анализируемого ордера
         p=GI_01(Open_Price,Price_Minus,Price_Plus);
         if(p==0)continue;
         r++;     // Есть подходящая цена
         if(p==1 && (Tip==0 || Tip==2)) // Ордер BuyLimit не нужен
           {
            Flag[0]=1;
            //               Alert("Ордер BuyLimit не нужен");
            continue;
           }
         if(p==1 && (Tip==1 || Tip==5)) // Ордер SellStop не нужен
           {
            Flag[3]=1;
            //             Alert("Ордер SellStop не нужен"); 
            continue;
           }
         if(p==2 && (Tip==0 || Tip==4))
           {
            Flag[1]=1;
            //             Alert("Ордер BuyStop не нужен");      // Ордер BuyStop не нужен
            continue;
           }
         if(p==2 && (Tip==1 || Tip==3)) // Ордер SellLimit не нужен
           {
            Flag[2]=1;
            //               Alert("Ордер SellLimit не нужен"); 
           }
        }

     }                                          //Конец перебора орд.
//---------------------------------------------------------  --
// При необходимости отдаем приказы на открытие
// и фиксируем исполнение
//---------------------------------------------------------  --
   for(i=0;i<=3;i++)
     {
      if(Flag[i]==0)
        {
         // Вычисляем цены открытия и профиты ордеров
         switch(i)
           {
            case 0: Price=Old_Price-10*Poin;
            TP=Old_Price+(Dist_TP-10)*Poin;
            Order_Type=2;
            break;
            case 1: Price=Old_Price+10*Poin;
            TP=Old_Price+(Dist_TP+10)*Poin;
            Order_Type=4;
            break;
            case 2: Price=Old_Price+Dist_TP*Poin;
            TP=Old_Price;
            Order_Type=3;
            break;
            case 3: Price=Old_Price+(Dist_TP-20)*Poin;
            TP=Old_Price-20*Poin;
            Order_Type=5;
           }
         //            Alert("Торговый приказ отправлен на сервер ",Order_Tip[i],"  ",Price,"  ",TP);
         int ticket=OrderSend(Symb,Order_Type,Lot,Price,0,0,TP,CM,MN);
         //--------------------------------------------------------- 7 --
         //            if (ticket>0)                             // Получилось <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '> 
         //              {
         //               Alert ("Установлен ордер  ",ticket," Цена ",Price," Профит ",TP);
         //             }                                 
        }
     }
//-------------------------------------------------------------- 10 --
//   Alert (" закончил работу -----------------------------");
   return;                                      // Выход из OnTick
  }
//--------------------------------------------------------------- 1 --
int GI_01(double a,double b,double c)
//+------------------------------------------------------------------+
//|сравнение a b c   с точностью до 0.00004                                                 |
//|возвращает 1, если a=b                                            |
//|           2       a=c                                            |
//|           0 - иначе                                              |
//+------------------------------------------------------------------+
  {
   int d=0;
   if(MathAbs(a-b)<0.0001) d=1;
   else if(MathAbs(a-c)<0.0001) d=2;
   return(d);
  }
//+------------------------------------------------------------------+
avatar

  35  AM2 Сообщений: 16252 - Андрей

  • 14 сентября 2017, 22:09
+
0
Андрей здравствуйте. Вашего комментария не вижу. Что не так?
avatar

  10  waterfall Автор Сообщений: 80

  • 15 сентября 2017, 08:48
+
0
Не видите сообщения с кодом выше? Это что-то новенькое. Попробуйте в другом браузере.
avatar

  45  Bishop Сообщений: 5802 - АЛЬФАХАМЕЦ-Машковод

  • 15 сентября 2017, 08:55
комментарий был удален 2017-09-20 16:33:28 waterfall

комментарий был удален 2017-09-20 16:32:49 waterfall

+
0
Добавте пожалуйста еще настройки_
1.Допустимый спред для начала торговли (настройка _MaxSpred_)
2.Установка проскальзывания (настройка _Slippage_)
avatar

  10  waterfall Автор Сообщений: 80

  • 20 сентября 2017, 12:16
+
0
avatar

  35  AM2 Сообщений: 16252 - Андрей

  • 20 сентября 2017, 13:32
+
0
Спасибо. Сова капризная, со временем придется добавлять еще настройки…
avatar

  10  waterfall Автор Сообщений: 80

  • 20 сентября 2017, 16:39
+
0
Советник проблемный. Далеко уходит в просадку. Добавте, пожалуйста, ему ограничения.
1.Советник начинает свою работу через функцию задержки по времени (настройка_TimeOut_) (в минутах)
Эта функция должна отключатся (настройка _UseTimeOut _false\true_)
2.Ограничение на количество открытых ордеров (настройка _MaxOrders_) открытие дальнейших ордеров запрещено.
3.При наборе лотности всех открытых ордеров (настройка _MaxLot_) открытие дальнейших ордеров запрещено.
4.Закрываем общую прибыль всех открытых ордеров (настройка _TargetProfitAll)_ (в пипсах)
Закрываются все открытые ордера и удаляются отложенные ордера. Запуск в работу через (настройка _UseTimeOut _false\true_)
5.Для страховки депозита функция (настройка _StopLoc)_ общий убыток открытых ордеров при котором выставляется
на каждый открытый ордер свой локирующий ордер (для дробления локирующих ордеров)
Удаляются отложенные ордера. Работа советника запрещена.
6.Общий убыток при котором усредняются все открытые ордера (настройка _TargetLoss_).
_при достижении уровня _TargetLoss_ все отложенные ордера удаляются.
_советник торгует усредняя все открытые ордера по (Bau Sell вместе)
объемом с коэффициентом усреднения (настройка _(LotExponent)_ с регулируемым шагом (настройка _(PipStep)_
_достигнув общей прибыли (настройка _TargetProfit_) ордера переводятся в б\у и при включенном трале (настройка _UseTrailingStop _false\true_)
ордера тралятся с шагом (настройка _TralStep_). Все ордера закрываются по тралу. Запуск в работу через (настройка _UseTimeOut _false\true_)
_если трал отключен (_UseTrailingStop _false_) ордера закрываются по настройке (_TargetProfitAll_)

Примечание_Общий убыток и прибыль должны относится только к магику советника _Profit Canal_
avatar

  10  waterfall Автор Сообщений: 80

  • 21 сентября 2017, 14:27
+
0
Это уже в следующем топике через месяц.
avatar

  35  AM2 Сообщений: 16252 - Андрей

  • 21 сентября 2017, 16:34
+
0
Спасибо. Будем ждать сколько нужно.
avatar

  10  waterfall Автор Сообщений: 80

  • 21 сентября 2017, 19:32

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий