vsv2675
Fotini

 
Уровень 4

  Торгую в компаниях:


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

Рейтинг 2081



РЕКОМЕНДУЮ



Прошу Вас написать советник по индикатору МА2_signalIV2 (4-5 знаков)

Добрый день!
Прошу Вас написать советник по индикатору МА2_signalIV2,(с учетом настроек индикатора)
ТЗ
Вход на пересечении по стрелке 3-мя ордерами, каждый ордер имеет свой ТР, безубыток, тралл не нужен.

Кол-во ордеров — 3 (от 1 до 3-х)
Ордер 1 ТР — " " пунктов
Ордер 2 ТР — " " пунктов
Ордер 3 ТР — " " пунктов
Б.У — 80 пунктов
Вход на 1 баре

Спасибо.
MA2_Signal_ver2.1.mq4 (5 Kb)
  • +4
  • Просмотров: 5263
  • 8 ноября 2016, 09:47
  • vsv2675
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
А не проще использовать стандартный индикатор
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 8 ноября 2016, 12:45
+
0
нет. Пожалуйста может просто сделайте, открыть по стрелке 3 ордера, ТР, Б\у и всё.
Я скачала несколько сов похожих… но немного не то…
avatar

  4  vsv2675 Автор Сообщений: 67 - Fotini

  • 8 ноября 2016, 12:48
+
0
Сегодня начну делать.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 8 ноября 2016, 17:17
+
0
:) спасибо.
avatar

  4  vsv2675 Автор Сообщений: 67 - Fotini

  • 8 ноября 2016, 17:53
+
0
Готово: www.opentraders.ru/downloads/1386/




//+------------------------------------------------------------------+
//|                                                       2MaSig.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int Slip          = 30;       // реквот
extern int Count         = 3;        // число ордеров
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик

extern string IndName         = "MA2_Signal";
extern int    ExtPeriodFastMA = 5;
extern int    ExtPeriodSlowMA = 7;
extern int    ExtModeFastMA   = 1; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int    ExtModeSlowMA   = 1; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int    ExtPriceFastMA  = 0; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int    ExtPriceSlowMA  = 1; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double blue = iCustom(NULL,0,IndName,ExtPeriodFastMA,ExtPeriodSlowMA,ExtModeFastMA,ExtModeSlowMA,ExtPriceFastMA,ExtPriceSlowMA,2,Shift);
   double red  = iCustom(NULL,0,IndName,ExtPeriodFastMA,ExtPeriodSlowMA,ExtModeFastMA,ExtModeSlowMA,ExtPriceFastMA,ExtPriceSlowMA,3,Shift);

   if(CountTrades()<1)
     {
      if(blue<1000)
        {
         for(int i=0;i<Count;i++) PutOrder(0,Ask);
        }

      if(red<1000)
        {
         for(int i=0;i<Count;i++) PutOrder(1,Bid);
        }
     }

   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();

   Comment("\n blue: ",blue,
           "\n red: ",red);
  }
//+------------------------------------------------------------------+




Редактирован: 9 ноября 2016, 07:09
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 8 ноября 2016, 20:18
+
0
Добавьте, пожалуйста, функции: <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; '>&nbsp; 
— выставление стоп-ордера одновременно с открытием основного, равного ему по лотности.
— При срабатывании этого стоп-ордера, ТП основного удаляется,
и далее эти оба ордера не тралятся, не переводятся в БУ.
— при закрытии основного ордера, несработавший стоп-ордер выставленный к нему удаляется также.
— При достижении просадки по эквити более заданного открытие новых ордеров прекращается и по даётся сигнал, в т.ч. по е-майл.
Редактирован: 9 ноября 2016, 23:37
avatar

  11  preasto Сообщений: 445

  • 9 ноября 2016, 23:29
+
+2
Обращайтесь отдельным топиком, добавлю. Здесь ветка автора.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 10 ноября 2016, 07:29
+
0
Хорошо. Как только будет всё отлажено по задачам ТС здесь, создам отдельное задание в доработку советника.
avatar

  11  preasto Сообщений: 445

  • 10 ноября 2016, 10:08
+
0
ЧУДО… ты не заманался в чужих топиках доработки предлагать?? Раз такой умный, свои пиши или платно заказывай Оху (которая может всё!)
avatar

  18  Kashtan Сообщений: 737 - Игорь

  • 25 декабря 2016, 14:08
+
0
Как в сов. работают/связаны настройки БУ и трала:
<code>extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал</code>

extern int BULevel = 0; // уровень БУ — отступ(в п.) от цены куда переносится стоп-ордер после перевода в БУ — ДА
extern int BUPoint = 30; // пункты БУ — дистанция(в п.) от цены когда производится перевод в БУ — ДА
extern int TrailingStop = 0; // = 0; трал выключен — ДА.


Советник будет открывать новые ордера по новым сигналам, пока открыт предыдущий?

По моим пробным тестам — НЕТ— открывает только одну сделку и ведёт до закрытия.

Хорошо бы добавить настройки:
— Открывать ордера по новым сигналам, если не закрыты предыдущие,
попутные ордера открываются той же лотности,
обратные — лотностью равной лотности встречных незакрытых ордеров.
Если лотность ордеров обоих направлений одинакова (разница между их лотностями = 0), то новые ордера открываются стартовой лотности;
— с коэфф.: 1.0 (умножения для новых ордеров)
— Закрывать прибыльные ордера по обратному сигналу (если ордера с убытком — оставлять, не закрывать)

Редактирован: 22 декабря 2016, 11:56
avatar

  11  preasto Сообщений: 445

  • 20 декабря 2016, 16:01
+
0
С БУ и тралом понаблюдал-разобрался )))
— Хорошо бы трал запускать только у области прибыли: от уровня БУ заданного в настройках.

avatar

  11  preasto Сообщений: 445

  • 22 декабря 2016, 10:53
+
0
ок! спасибо! попробую!*good* *bravo* 
avatar

  4  vsv2675 Автор Сообщений: 67 - Fotini

  • 8 ноября 2016, 20:45
+
0
не работает.ю
avatar

  4  vsv2675 Автор Сообщений: 67 - Fotini

  • 9 ноября 2016, 09:06
+
0
скрины логи в студию?
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 9 ноября 2016, 13:39
+
0
Сов. действительно ни в тестере, ни на демке не открывает ордера при настройке:
На каком баре сигнал индикатора: 0. (т.е., по идее, открывать ордер — на баре появления сигнала)
При: 1 (на следующем баре после появл. сигнала) — работает, открывает ордера.
avatar

  11  preasto Сообщений: 445

  • 21 декабря 2016, 11:01
+
0
Сов. действительно ни в тестере, ни на демке не открывает ордера при настройке:
На каком баре сигнал индикатора: 0. (т.е., по идее, открывать ордер — на баре появления сигнала)


Значит нет сигнала от индикатора на нулевом баре.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 21 декабря 2016, 17:56
+
0
Что Значит нет сигнала от индикатора на нулевом баре?
Надо ли это понимать так, что индикатор даёт сигнал только на след. свече и не даёт на «нулевой» (не пойму — как это может быть).
Наблюдал: Появляется стрелка на свече, и только на следующей открывается ордер.
На «0»й — ордер не открывается, а стрелка индикатора — есть.
avatar

  11  preasto Сообщений: 445

  • 21 декабря 2016, 19:00
+
0
avatar

  11  preasto Сообщений: 445

  • 23 декабря 2016, 12:43
+
0
Не совсем понял, зачем сейчас в советнике параметр Число ордеров:….
Если бы это означало количество допустимых ордеров одного направления по новым сигналам,
либо — общее допустимое количество ордеров ...

а так — их все открывает по одной цене, как укажешь: 2,3…, словно простое увеличение лотности ордера.

Ведь задумка из ТЗ про 3 разных ТП пока не реализована:
Кол-во ордеров — 3 (от 1 до 3-х)
Ордер 1 ТР — " " пунктов
Ордер 2 ТР — " " пунктов
Ордер 3 ТР — " " пунктов

Задел на будущее?
Так, хотя бы отступ(дистанцию) меж ТП серии ордеров в параметрах задать….
Редактирован: 22 декабря 2016, 12:04
avatar

  11  preasto Сообщений: 445

  • 22 декабря 2016, 11:22
+
0
И, предполагаю, почему нет входов на (0)-м баре, отчего «Значит нет сигнала от индикатора на нулевом баре.
В ТЗ написано:
Вход на 1 баре.

Может в коде советника это так жёстко зашито, и надо поправить?

Наверняка имелось ввиду: Вход на 1 баре — в параметрах по умолчанию.
Но, как обычно, с возможностью смены бара сигнала на открытие ордера: на 0,1,2,…
Редактирован: 22 декабря 2016, 12:18
avatar

  11  preasto Сообщений: 445

  • 22 декабря 2016, 12:07
+
0
Андрей, прочёл (насколько понял) комментарий к ТЗ на Советник на индикаторе BinaryCash_Comodo относительно той же проблемы: сигнал на 0й свече.
В этом же советнике по индикатору МА2_signalIV2(насколько отметил по наблюдениям),
стрелка на 0м баре появляется, но при указании советнику параметра открывать ордера на 0м баре — он сигнала «не видит».

Не знаю, откуда в коде определяется-берётся такой сигнал,
но, если стрелка появляется — может быть есть возможность привязаться к команде показывающей эту стрелку?..

Т.к. погоняв сов. на 1м баре отмечаю, особенно в мелкой консолидации, что ордера открытые на 1м баре идут с опозданием. И, если б они открывались сразу, то часто могли бы успевать встать под БУ, либо дать меньшую просадку.
===
Понятно, что желателен «фильтр флета», но, к сож., похоже, такой фильтр смогли придумать «не только лишь все, точнее — мало кто смог» (если вообще кто-то смог).
avatar

  11  preasto Сообщений: 445

  • 23 декабря 2016, 12:45
+
0
ЧУДО… ты не заманался в чужих топиках доработки предлагать?? Раз такой умный, свои пиши или платно заказывай Оху (которая может всё!)
avatar

  18  Kashtan Сообщений: 737 - Игорь

  • 25 декабря 2016, 14:08
+
+1
Во-первых, тут вопрос — почему не работает именно этот советник, по ТЗ, на 0-м баре.
Во-вторых: тут все вопросы именно по этому советнику, иначе — зачем обсуждение в комментариях создано на сайте?
Кроме того — это вопрос и к мнению других. Часто кто-то и полезное подскажет, что знает.
В-третьих: чтобы создавать свои доработки — хорошо бы спросить по уже сделанному, что реально, что нет — чтоб нереализуемые ТЗ не плодить. Тоже самое и для платного.
avatar

  11  preasto Сообщений: 445

  • 25 декабря 2016, 15:18
+
+1
Твоя правда однако*stesnitelno* 
avatar

  18  Kashtan Сообщений: 737 - Игорь

  • 25 декабря 2016, 19:22
+
0
*friends* спасибо за обсуждения, главное чтоб работал, а ведь и работает! Спасибо Всем.
avatar

  4  vsv2675 Автор Сообщений: 67 - Fotini

  • 28 августа 2017, 14:06

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