Jump to content

Напишу советник, скрипт, индикатор на MQL бесплатно (архив)


muvingman

Recommended Posts

NacopiteL

Добрый вечер всем. Помогите с индикатором. В настройках выводятся параметры одной ма. Нужно добавить еще две .Вот часть его кода:

double ma      = iMA(Symbol(),0,ma_period,ma_shift,ma_method,ma_price,i);

Подскажите как в параметр double ma прописать три ма. Чтобы индикатор учитывал три машки а не одну. Заранее всем спасибо.

Не понятно мне, что нужно в итоге.

Если нужно построить на графике три МА, то набросайте их на график последовательно и сохраните как шаблон. Для чего индикатор делать отдельно? 

Если в отдельном индикаторе нужно произвести промежуточный расчет трех МА по отдельности, то и будет это выглядеть так:

double ma1, ma2, ma3;

ma1 = iMA(Symbol(),0,ma_period1,ma_shift1,ma_method,ma_price,i1);

ma2 = iMA(Symbol(),0,ma_period2,ma_shift2,ma_method,ma_price,i2);

ma3 = iMA(Symbol(),0,ma_period3,ma_shift3,ma_method,ma_price,i3);

Link to post
Share on other sites
  • Replies 2.9k
  • Created
  • Last Reply

Top Posters In This Topic

  • AntFX

    364

  • Voldemar227

    263

  • Ugar68

    133

  • cmillion

    99

Top Posters In This Topic

Popular Posts

Есть скрипт на открытие 2х рыночных и/или 2х отложенных ордера по обе стороны от текущей цены со стоп лоссами и тейк профитами. Можно выставлять магик, расстояние от цены и проскальзывание. Скрипт не

Неблагодарное это дело писать тут для кого либо. Я как то, в начале года пытался помочь тут одному персонажу с индикатором, так он потом мне весь мозг, через личные сообщения вынес,  с тех пор пишу т

Posted Images

WEALTHCRAFT

3 МА есть в аллигаторе.

 

Даже кодом могу поделиться :)

 

[spoiler=...]


#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Bill Williams' Aligator"
#property strict


//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1  Blue
#property indicator_color2  Red
#property indicator_color3  Lime
//---- input parameters
input int InpJawsPeriod=13; // Jaws Period
input int InpJawsShift=8;   // Jaws Shift
input int InpTeethPeriod=8; // Teeth Period
input int InpTeethShift=5;  // Teeth Shift
input int InpLipsPeriod=5;  // Lips Period
input int InpLipsShift=3;   // Lips Shift
//---- indicator buffers
double ExtBlueBuffer[];
double ExtRedBuffer[];
double ExtLimeBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
   IndicatorDigits(Digits);
//---- line shifts when drawing
   SetIndexShift(0,InpJawsShift);
   SetIndexShift(1,InpTeethShift);
   SetIndexShift(2,InpLipsShift);
//---- first positions skipped when drawing
   SetIndexDrawBegin(0,InpJawsShift+InpJawsPeriod);
   SetIndexDrawBegin(1,InpTeethShift+InpTeethPeriod);
   SetIndexDrawBegin(2,InpLipsShift+InpLipsPeriod);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,ExtBlueBuffer);
   SetIndexBuffer(1,ExtRedBuffer);
   SetIndexBuffer(2,ExtLimeBuffer);
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
//---- index labels
   SetIndexLabel(0,"Gator Jaws");
   SetIndexLabel(1,"Gator Teeth");
   SetIndexLabel(2,"Gator Lips");
  }
//+------------------------------------------------------------------+
//| Bill Williams' Alligator                                         |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit=rates_total-prev_calculated;
//---- main loop
   for(int i=0; i<limit; i++)
     {
      //---- ma_shift set to 0 because SetIndexShift called abowe
      ExtBlueBuffer[i]=iMA(NULL,0,InpJawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
      ExtRedBuffer[i]=iMA(NULL,0,InpTeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
      ExtLimeBuffer[i]=iMA(NULL,0,InpLipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
     }
//---- done
   return(rates_total);
  }
//+------------------------------------------------------------------+

 

 

 

Edited by WEALTHCRAFT
Link to post
Share on other sites
Елена4

 

3 МА есть в аллигаторе.

 

Даже кодом могу поделиться :)

 

[spoiler=...]

#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Bill Williams' Aligator"
#property strict


//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1  Blue
#property indicator_color2  Red
#property indicator_color3  Lime
//---- input parameters
input int InpJawsPeriod=13; // Jaws Period
input int InpJawsShift=8;   // Jaws Shift
input int InpTeethPeriod=8; // Teeth Period
input int InpTeethShift=5;  // Teeth Shift
input int InpLipsPeriod=5;  // Lips Period
input int InpLipsShift=3;   // Lips Shift
//---- indicator buffers
double ExtBlueBuffer[];
double ExtRedBuffer[];
double ExtLimeBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
   IndicatorDigits(Digits);
//---- line shifts when drawing
   SetIndexShift(0,InpJawsShift);
   SetIndexShift(1,InpTeethShift);
   SetIndexShift(2,InpLipsShift);
//---- first positions skipped when drawing
   SetIndexDrawBegin(0,InpJawsShift+InpJawsPeriod);
   SetIndexDrawBegin(1,InpTeethShift+InpTeethPeriod);
   SetIndexDrawBegin(2,InpLipsShift+InpLipsPeriod);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,ExtBlueBuffer);
   SetIndexBuffer(1,ExtRedBuffer);
   SetIndexBuffer(2,ExtLimeBuffer);
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
//---- index labels
   SetIndexLabel(0,"Gator Jaws");
   SetIndexLabel(1,"Gator Teeth");
   SetIndexLabel(2,"Gator Lips");
  }
//+------------------------------------------------------------------+
//| Bill Williams' Alligator                                         |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit=rates_total-prev_calculated;
//---- main loop
   for(int i=0; i<limit; i++)
     {
      //---- ma_shift set to 0 because SetIndexShift called abowe
      ExtBlueBuffer[i]=iMA(NULL,0,InpJawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
      ExtRedBuffer[i]=iMA(NULL,0,InpTeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
      ExtLimeBuffer[i]=iMA(NULL,0,InpLipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
     }
//---- done
   return(rates_total);
  }
//+------------------------------------------------------------------+

 

 

 

Индикатор "рисует" истинный фрактал по аллигатору, но он учитывает только одну машку. Как сделать, что бы учитывал три машки. (челюсть, зубы, губы). Вот в чем вопрос.

Link to post
Share on other sites
WEALTHCRAFT

Индикатор "рисует" истинный фрактал по аллигатору, но он учитывает только одну машку. Как сделать, что бы учитывал три машки. (челюсть, зубы, губы). Вот в чем вопрос.

 

Как именно учитывать? больше, меньше или равно?

Link to post
Share on other sites
Елена4

Как именно учитывать? больше, меньше или равно?

Фрактал должен сформироваться только в том случае, если цена не касалась линий аллигатора.

Link to post
Share on other sites
WEALTHCRAFT

Поставьте Аллигатора на график, найдите на истории паттерн который хотите поймать, сделайте скрин и покажите. Так будет всем понятней.

Link to post
Share on other sites
Елена4

Поставьте Аллигатора на график, найдите на истории паттерн который хотите поймать, сделайте скрин и покажите. Так будет всем понятней.

583482f5c192c_scrin.png

 

Вот как-то так.

Почему-то качество плохое((

Edited by Елена4
Link to post
Share on other sites
Tom_Couep

а можно сделать оповещение после 5 подряд идущих свечей (одного цвета) для любого ТФ

Link to post
Share on other sites
Ugar68

а можно сделать оповещение после 5 подряд идущих свечей (одного цвета) для любого ТФ

Можно. Вот этот попробуй. Написан ещё на старом языке, но должен работать.

N - количество баров в одном направлении.

NbarAlert.mq4

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
kallipso

 

 

Вот как-то так.

Почему-то качество плохое((

Одна "маленькая" не решенная проблема...

Индикаторы ПЕРЕРИСОВЫВАЮТъ... причем делают эту "бяку" практически все. 

То, что Вы, на основании свершившийся истории видите и различаете - где ИСТИНА либо ЛОЖЬ, не означает, что Ваш советник будет делать анализ.

Любой советник работает по заложенному алгоритму. Совпадут условия - откроет ордер. А через пару минут (часов, дней, в зависимости от таймфрейма) - условие окажется ложным. Тогда что?

 

 

Есть сайт на https://www.mql5.com/ru/code  , где выкладывают разные идеи... при желании много чаго накопать можно..

Есть огромное количество разного рода сайтов, - от авторов... от распространителей... от сборщиков информации... и.т.д.

С исходниками и без них... 

 

З.Ы. откройте тестер стратегий, выберите индикатор и прогоните на истории. 

 

 

 

Edited by kallipso

"Завтрашний день – самая важная вещь в жизни. Он навещает нас в полночь. Замечательно, когда он приходит и отдаётся прямо в наши руки. Он надеется, что мы возымели хоть какой-то урок со вчерашнего дня".

Link to post
Share on other sites
AntFX
Индикаторы ПЕРЕРИСОВЫВАЮТъ... причем делают эту "бяку" практически все. 

Это заблуждение. Если индикатор перерисовывает показания на баре, отличном от нулевого (за исключением зигзагов) - выкидывайте его в мусор, это треш, а не индикатор. На нулевой бар ориентироваться не нужно. Скользящие средние ничего не перерисовывают кроме нулевого (текущего, ещё не софрмировавшегося) бара. В случае фракталов, должно появится 2 бара после вершины, тогда на ней рисуется фрактал, потому что фрактал определяется как серия из 5 баров, 2 до вершины и 2 после. То есть на третьем баре от вершины в данном случае можно совершать сделку без всяких опасений, что что-либо перерисуется.

Edited by AntFX
  • Thanks 1

1

Link to post
Share on other sites
YanaGold

583482f5c192c_scrin.png

 

Вот как-то так.

Почему-то качество плохое((

 

 

Какая именно цена не должна касаться линий аллигатора? Фрактал формируется как правило из 3-5 свечей. Для истинного верхнего фрактала все минимумы свечей должны быть выше аллигатора или только та свеча, на которой значок фрактала?

  • Thanks 1
Link to post
Share on other sites
YanaGold

Добрый вечер всем. Помогите с индикатором. В настройках выводятся параметры одной ма. Нужно добавить еще две .Вот часть его кода:

double ma      = iMA(Symbol(),0,ma_period,ma_shift,ma_method,ma_price,i);

Подскажите как в параметр double ma прописать три ма. Чтобы индикатор учитывал три машки а не одну. Заранее всем спасибо.

 

Так и пишите все три Ма и все три сравнивайте с ценой

double ma1      = iMA(Symbol(),0,ma_period1,ma_shift1,ma_method1,ma_price1,i);
double ma2      = iMA(Symbol(),0,ma_period2,ma_shift2,ma_method2,ma_price2,i);
double ma3      = iMA(Symbol(),0,ma_period3,ma_shift3,ma_method3,ma_price3,i);

if (Low[i]>ma1 && Low[i]>ma2 && Low[i]>ma3) Comment("На свече ",i," нашли истинный верхний фрактал");
  • Thanks 1
Link to post
Share on other sites
Елена4

Какая именно цена не должна касаться линий аллигатора? Фрактал формируется как правило из 3-5 свечей. Для истинного верхнего фрактала все минимумы свечей должны быть выше аллигатора или только та свеча, на которой значок фрактала?

Именно фрактальная свеча не должна касаться линий аллигатора, ни телом ни хвостами (вообще никак)

 

 

Так и пишите все три Ма и все три сравнивайте с ценой

double ma1      = iMA(Symbol(),0,ma_period1,ma_shift1,ma_method1,ma_price1,i);
double ma2      = iMA(Symbol(),0,ma_period2,ma_shift2,ma_method2,ma_price2,i);
double ma3      = iMA(Symbol(),0,ma_period3,ma_shift3,ma_method3,ma_price3,i);

if (Low[i]>ma1 && Low[i]>ma2 && Low[i]>ma3) Comment("На свече ",i," нашли истинный верхний фрактал");

 

Попробую

Link to post
Share on other sites
Ermak1

Здравствуйте. Напишу советник(БЕСПЛАТНО) по Вашему алгоритму. Также, помимо, непосредственно, написания, будет проведена оптимизация параметров и, при необходимости, дальнейшая их корректировка.

Мартингейловые ТС и ТС, использующие усреднения, не рассматриваются.  Все желающие автоматизировать свою торговлю-пишите. (Возможно изменение уже готовых работ). 

Link to post
Share on other sites
Ermak1

583482f5c192c_scrin.png

 

Вот как-то так.

Почему-то качество плохое((

Фрактал, который отображается перед "истинным бай-фракталом", я так понимаю, тоже является истинным, так как не касается ни одной  из цен линий Аллигатора?  

Link to post
Share on other sites
ТангоX

Здравствуйте. Напишу советник(БЕСПЛАТНО) по Вашему алгоритму. Также, помимо, непосредственно, написания, будет проведена оптимизация параметров и, при необходимости, дальнейшая их корректировка.

Мартингейловые ТС и ТС, использующие усреднения, не рассматриваются.  Все желающие автоматизировать свою торговлю-пишите. (Возможно изменение уже готовых работ

Здравствуйте! Можете помочь с индикатором. Вот ссылка на форум там пример и код индикатора, который я написал - но что то не получаеться. спасибо!   https://www.mql5.com/ru/forum/161891

Link to post
Share on other sites
ТангоX

Здравствуйте уважаемые программисты! Помогите новичку в  реализации индикатора, который бы по аллигатору рисовал зоны тренда как указано на рисунке. Привожу код индикатора который не могу доработать. Если зеленая линия пересекает синюю снизу вверх то рисуется зеленый квадрат, если наоборот то красный. В данном коде я это все описал, но индикатор не работает В чем ошибка? спасибо!

#property indicator_chart_window

int k;

void init() {
  
}

void deinit() {
  DeleteObjects();
  Comment("");
}

void DeleteObjects() {
  for (int i=0; i<=k; i++) {
    ObjectDelete("n"+i);
    ObjectDelete("n1"+i);
  }
}


void start() {
  int limit, i, counter;
  double Range, AvgRange;
    
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;

   limit=Bars-counted_bars;
   
    for(i = 0; i <= limit; i++) {
    
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
      {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
      Range=AvgRange/10;
     
     double jaw_blue_now=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,i);
     double jaw_blue_pr=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,i+1);
     double jaw_blue_af=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,i-1);
     
     double jaw_green_now=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,i);
     double jaw_green_pr=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,i+1);
     double jaw_green_af=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,i-1);
   
    if ((jaw_green_now > jaw_blue_now) && (jaw_green_pr < jaw_blue_pr) && (jaw_green_af > jaw_blue_af)) //тренд вверх 
     {
       k++;
       ObjectCreate("n"+k, OBJ_RECTANGLE, 0, Time[i],0, Time[i-5],High[i]*2);
       ObjectSet("n"+k, OBJPROP_STYLE, STYLE_SOLID);
       ObjectSet("n"+k, OBJPROP_COLOR, Honeydew);
       ObjectSet("n"+k, OBJPROP_BACK, True);
     }
      
     if (jaw_green_now > jaw_blue_now) //тренд вверх по ХМА
     {
       
       //ObjectSet("n"+k, OBJPROP_TIME1 , Time[i]);
       //ObjectSet("n"+k, OBJPROP_PRICE1, 0);
  
       ObjectSet("n"+k, OBJPROP_TIME2 , Time[i]);
       ObjectSet("n"+k, OBJPROP_PRICE2, High[i]*2);
     
       }
    
}
    
    return(0);
   
} 
  
  
Link to post
Share on other sites
Ermak1

Здравствуйте! Можете помочь с индикатором. Вот ссылка на форум там пример и код индикатора, который я написал - но что то не получаеться. спасибо!   https://www.mql5.com/ru/forum/161891

К сожалению, я индикаторами не занимаюсь. 

Link to post
Share on other sites
Елена4

Фрактал, который отображается перед "истинным бай-фракталом", я так понимаю, тоже является истинным, так как не касается ни одной  из цен линий Аллигатора?  

Да верно

Link to post
Share on other sites
Елена4

Здравствуйте. Напишу советник(БЕСПЛАТНО) по Вашему алгоритму. Также, помимо, непосредственно, написания, будет проведена оптимизация параметров и, при необходимости, дальнейшая их корректировка.

Мартингейловые ТС и ТС, использующие усреднения, не рассматриваются.  Все желающие автоматизировать свою торговлю-пишите. (Возможно изменение уже готовых работ). 

Здравствуйте. На просторах интернета видела советник по аллигатору, полуавтомат. Т.Е. он вылавливает сигналы для торговли по стратегии и предлагает их рассмотреть, получается без "моего" подтверждения он сделки не открывает. Если я согласна - подтверждаю и он выставляет ордера и лоси. Если Вам такое интересно можете реализовать. Буду признательна.

Link to post
Share on other sites
Ermak1

Здравствуйте. На просторах интернета видела советник по аллигатору, полуавтомат. Т.Е. он вылавливает сигналы для торговли по стратегии и предлагает их рассмотреть, получается без "моего" подтверждения он сделки не открывает. Если я согласна - подтверждаю и он выставляет ордера и лоси. Если Вам такое интересно можете реализовать. Буду признательна.

Елена, Вы имеете ввиду стратегию, описанную на Ваших скринах? Я без тестинга просмотрел ее и, как мне кажется, она убыточная :)  Но, в принципе, я могу сделать так, что по этим условиям будет появляться "Алерт" с названием пары и, теоретически, конечно, я могу реализовать и кнопку, нажав на которую будут открываться нужные ордера, но сам я пользуюсь своим же "скриптом"(он не совсем скрипт:)), который открывает ордер в зависимости от выставленных(3-х) горизонтальных линий, а объем расчитывается в процентах от депозита(есть в настройках).   

Link to post
Share on other sites
Елена4

Елена, Вы имеете ввиду стратегию, описанную на Ваших скринах? Я без тестинга просмотрел ее и, как мне кажется, она убыточная :)  Но, в принципе, я могу сделать так, что по этим условиям будет появляться "Алерт" с названием пары и, теоретически, конечно, я могу реализовать и кнопку, нажав на которую будут открываться нужные ордера, но сам я пользуюсь своим же "скриптом"(он не совсем скрипт :)), который открывает ордер в зависимости от выставленных(3-х) горизонтальных линий, а объем расчитывается в процентах от депозита(есть в настройках).   

Не совсем. Я имею ввиду стратегию "Торговый хаос" по Биллу Вильямсу. Там достаточно много сигналов может быть. А на моих скринах это только отсеивание не нужных фракталов.Действительно если торговать только по фракталам сыт не будешь.

Link to post
Share on other sites
Елена4

 

 

Елена, Вы имеете ввиду стратегию, описанную на Ваших скринах?

Ссылку отправила в ЛС

Link to post
Share on other sites
ЖАБА77

Приветствую! Прошу сочинить торгового робота .У меня новая идея .

вот на картинке показываю .

видите минимум? 5 минут таимфрейм  да? видите ?
я хочу от минимума вверх , например 20 п цена прошла , это моё желание , что бы на 20 п от минимума сработала позиция на покупку .....  значит что ВАМ надо вложить в алгоритм?
что бы отложенная позиция двигалась вверх за онлайн ценой (реальной) или вниз. Профит ,стоплосс вручную , то есть в настройках робота я имею возможность изменять цифры.
и моя отложенная позиция на поле МТ4 робот видит и подхватывает в алгоритм.
 Я тестирую вручную эту новую идею , и нет времени сидеть у компа и двигать отложенную позицию. Соответственно их четыре , байлимит , селлимит , байстоп , селстоп...пусть будут все!
Главное что бы робот видел все мои отложенные позиции ..двигал их к цели открытия от 20 пипс.
профит 20 пипс ( в настройках переменный ) стоплосс 70 ( в настройках переменный)
001 лот начальный
СПАСИБО!

проще говорить если , то как двигаю  профит в плюс (трейлинг), то в данном варианте двигаю отложеник на зацепило)сработалО , нырок в рынок .

Edited by ЖАБА77

Покупаю лоссы -Дарю профиты) Ква!

Link to post
Share on other sites
  • Capman changed the title to Напишу советник, скрипт, индикатор на MQL бесплатно (архив)
  • Capman locked and unpinned this topic
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...