Индикаторы: Market Way - страница 2

 
excelf:

Так по лучше выглядит =)



//+------------------------------------------------------------------+
//|                                         Indicator Market Way.mq4 |
//|                       Copyright © 2007, O.Konovalov aka Regul    |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007 O.Konovalov"
#property link      "E-mail:O_Konovalov@ukr.net"
#property link      "E-mail:RegulStar@gmail.com"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 SteelBlue
#property indicator_color2 Goldenrod
#property indicator_color3 Navy
#property indicator_color4 YellowGreen
#property indicator_color5 DeepPink
#property indicator_color6 OrangeRed
#property indicator_color7 DarkOliveGreen
#property indicator_color8 MediumPurple
//---- input parameters
extern int       IdMain   = 21; // main line
extern int       IdBull   = 21; // bull line 
extern int       IdBear   = 21; // bear line 
extern int       IdArray  = 21; // all sma line  
extern int       history  = 2880;
//---- buffers
double ExtMapBuffer[];
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    IndicatorBuffers(8);
//---- параметры индикаторов
   SetIndexStyle(0,DRAW_HISTOGRAM,0,4);
   SetIndexBuffer(0,ExtMapBuffer);
   SetIndexArrow(0,158);
   //---
   SetIndexStyle(1,DRAW_HISTOGRAM,0,4);
   SetIndexBuffer(1,ExtMapBuffer1);
   SetIndexArrow(1,158);
   //---
   SetIndexStyle(2,DRAW_ARROW,0,3);
   SetIndexBuffer(2,ExtMapBuffer2);
   SetIndexArrow(2,158);
   //---
   SetIndexStyle(3,DRAW_LINE,0,1);
   SetIndexBuffer(3,ExtMapBuffer3);
   //---
   SetIndexStyle(4,DRAW_LINE,0,1);
   SetIndexBuffer(4,ExtMapBuffer4);
   //---
   SetIndexStyle(5,DRAW_LINE,0,1);
   SetIndexBuffer(5,ExtMapBuffer5);
   SetIndexArrow(5,158);
   //---
   SetIndexStyle(6,DRAW_LINE,0,1);
   SetIndexBuffer(6,ExtMapBuffer6);
   SetIndexArrow(3,158);
   //---
   SetIndexStyle(7,DRAW_LINE,0,1);
   SetIndexBuffer(7,ExtMapBuffer7);
   //--- Наименование индикатора и параметры значений на экране
   IndicatorShortName("Market Way");
   //---
   SetIndexLabel(0, "Bull Pressue_MW0");
   SetIndexLabel(1, "Bear Pressue_MW1");
   SetIndexLabel(2, "Main Accumulation_MW2"); 
   SetIndexLabel(3, "Bull Accumulation_MW3");
   SetIndexLabel(4, "Bear Accumulation_MW4");
   SetIndexLabel(5, "Main SMA_MW5");
   SetIndexLabel(6, "Bull SMA_MW6");
   SetIndexLabel(7, "Bear SMA_MW7");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
   double   bull,bear,faster,fast,main;
//----
   int counted_bars=IndicatorCounted();
   if  (counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars-1;
   int i=limit;
   if(i > history) {
        i = history;
   }
   //--- Описание переменных
   //---
//***********************************************БУФЕРА ДЛЯ РАСЧЕТОВ**********************************************
   while (i>=0)
   {
      //--- MW2 БУФЕР СУММАРНАЯ(Быки и Медведи) аккумуляция направления движения рынка
      //то же что и пара двух IdMain-ти периодных (SMA) расчитаных по открытиям и закрытиям  
      //положителные значения указывают на нахождение SMA от Close выше чем SMA от Open, отрицательные наоборот! 
      main=0;
      for(int m=0;m<IdMain;m++)
         {
         main = main+(Close[i+m]-Open[i+m]); //сумма разницы открытия и закрытия за IdMain период
         }
         ExtMapBuffer2[i]=NormalizeDouble(main,Digits);
      
      //--- MW3 БУФЕР Бычья аккумуляция направления движения (то же, что и SМА от Close)
      //здесь расчитаны только бычьи бары и дожи за указаный период, т.е. те, которые твечают условию Close-Open>=0
      bull=0;
      for(int bu=0;bu<IdBull;bu++)
         {
         if (Close[i+bu]-Open[i+bu]>=0.0000)
         bull = bull+(Close[i+bu]-Open[i+bu]); 
         }
         ExtMapBuffer3[i]=NormalizeDouble(bull,Digits);
   
      //--- MW4 БУФЕР Медвежья аккумуляция направления движения (то же, что и SМА от Open)
      //здесь расчитаны только медвежьи бары и дожи за указаный период, т.е. те, которые твечают условию Close-Open<=0
      bear=0;
      for(int be=0;be<IdBear;be++)
         {
         if (Close[i+be]-Open[i+be]<=0.0000)
         bear = bear+(Close[i+be]-Open[i+be]); 
         }
         ExtMapBuffer4[i]=NormalizeDouble(bear,Digits);
   i--; //уменьшение значения индекса
   }
//----------------------------------------------------- SMA 
      //--- MW5 БУФЕР  SMA от СУММАРНОЙ аккумуляции 
      for(i=0; i<limit; i++) {
        ExtMapBuffer5[i] = NormalizeDouble(iMAOnArray(ExtMapBuffer2,0,IdArray,0,MODE_SMA,i),Digits);
        ExtMapBuffer6[i] = NormalizeDouble(iMAOnArray(ExtMapBuffer3,0,IdArray,0,MODE_SMA,i),Digits);
        ExtMapBuffer7[i] = NormalizeDouble(iMAOnArray(ExtMapBuffer4,0,IdArray,0,MODE_SMA,i),Digits);
      }
      
//----------------------------------------------------- разности SMA и расчетных данных 
      //--- MW0 БУФЕР "Бычье Давление"
      //"СИЛА БЫКОВ" принимает "сильную" форму со знаком "+"
      //при значении со знаком "-" имеет обратную форму "СЛАБОСТЬ")
      //определяется посредством сложения и/или вычитания текущих аккумуляций и их СМА "по рынку" за выбранный период
      for(i=0; i<limit; i++) {
        ExtMapBuffer[i] = ExtMapBuffer3[i]-ExtMapBuffer6[i];
        ExtMapBuffer1[i] = ExtMapBuffer4[i]-ExtMapBuffer7[i];
      }
      //--- MW1 БУФЕР "Медвежье Давление"
      //"СИЛА МЕДВЕДЕЙ" принимает "сильную" форму со знаком "-"
      //при значении со знаком "+" имеет обратную форму "СЛАБОСТЬ")
      //определяется посредством сложения и/или вычитания текущих аккумуляций и их СМА "по рынку" за выбранный период      
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

Ребята,индикатор хороший на истории кое что показывает,но как усовершенствование воткнуть в код.?Или сделайте сноску.

 
excelf:

Так по лучше выглядит =)

...

Уважаемые господа!



Вы можете самостоятельно изменять код как Вам вздумается, или как Вам удобно его просматривать на экране, однако хочу заметить следующее:


1. Если Вы выносите линии SMA на основной график, возможно Вы для себя получаете лучше картинку отображения, но теряете в функциональности индикатора.


конкретно:

пересечение вверх и нахождение IdMain (точки на графике) выше BullSma (темно зеленая линия на графике), есть сигнал к ПЕРЕКУПЛЕННОСТИ рынка и возможному откату и/или развороту, в Вашем случае данные сигналы отсутствуют, но зато красивее:)


Я уже говорил, что данный индикатор несет максимум полезной информации, и минимум различного "мусора". По своей функциональности его можно сравнить только с несколькими SМА, остальные все индикаторы ему уступают, как в скорости, так и в точности.





MaxV42:
konovalov писал(а):

Условия входа лонг:

//-2-
MainAccumulation1-MainSMA1>0 // если основная линия выше своего сглаженного значения
&& BullPressue1-Point>0 // если бычье давление выше 0
&& BearPressue1-Point>0// если медвежье давление выше 0
&& MainAccumulation1-Point>0 // если основная линия выше 0

Условия входа шорт:

//-2-
MainAccumulation1-MainSMA1<0 // если основная линия ниже своего сглаженного значения
&& BullPressue1-Point<0 // если бычье давление ниже 0
&& BearPressue1-Point<0// если медвежье давление ниже 0
&& MainAccumulation1-Point<0 // если основная линия ниже 0

Условия на выход строго противоположные.

Хочу "привентить" к вашему индикатору стрелочки с ценниками и алерты.



Хочу уточнить, правильно я расшифровал ваши переменные в выше указанном тексте.


Вот мой код, на основе ваших критериев входа в рынок:


bool IsOpenBuy =false;     // флаг существования рыночных Buy-ордеров
bool IsOpenSell=false;     // флаг существования рыночных Sell-ордеров
//+---------------------------------------------------------------------------+
int Criterion(int nBar) {  // Функция вычисления торговых критериев.
  //+---------------------------------------------------------------------- 1 --+
  // ----- условия для открытия ордера на покупку (Buy)
  if(!IsOpenBuy)  {  // нет открытого ордера на покупку (Buy)
    if(ExtMapBuffer2[nBar+1]/*MainAccumulation1*/-ExtMapBuffer5[nBar+1]/*MainSMA1*/>0     // если основная линия выше своего сглаженного значения
      && ExtMapBuffer[nBar+1] /*BullPressue1*/-Point>0                                    // если бычье давление выше 0
      && ExtMapBuffer1[nBar+1]/*BearPressue1*/-Point>0                                    // если медвежье давление выше 0
      && ExtMapBuffer2[nBar+1]/*MainAccumulation1*/-Point>0)  {                           // если основная линия выше 0
      IsOpenBuy=true; IsOpenSell=false;
      // ПОКУПАЕМ !!! ЗАКРЫВАЕМ ПРОДАДУ.
    }
  }
  //+---------------------------------------------------------------------- 2 --+
  // ----- условия для открытия ордера на продажу (Sell)
  if(!IsOpenSell)  {  // нет открытого ордера на продажу (Sell)
    if(ExtMapBuffer2[nBar+1]/*MainAccumulation1*/-ExtMapBuffer5[nBar+1]/*MainSMA1*/<0     // если основная линия ниже своего сглаженного значения
      && ExtMapBuffer[nBar+1] /*BullPressue1*/-Point<0                                    // если бычье давление ниже 0
      && ExtMapBuffer1[nBar+1]/*BearPressue1*/-Point<0                                    // если медвежье давление ниже 0
      && ExtMapBuffer2[nBar+1]/*MainAccumulation1*/-Point<0)  {                           // если основная линия ниже 0
      IsOpenBuy=false; IsOpenSell=true;
      // ПРОДАЕМ!!! ЗАКРЫВАЕМ ПОКУПКУ.
    }
  }
  
  return(0);
}

Уважаемый MaxV42.



Я писал, что не являюсь программистом, поэтому мне сложно судить о правильности написанного Вами кода. Единственное могу заметить, что в индикаторе Market Way подписаны все линии указанными названиями, + помимо этого, указано к каким буферам эти линии относятся, что можно посмотреть так же в коде их логику.


В двух словах.

-светло зеленая это сумма всех бычьих баров за указанный период;


-светло розовая это сумма всех медвежьих баров за указанный период;


-красная это сумма всех баров за указанный период (белые считаются с +, черные с -, т.е. не по модулю сумма);


-фиолетовая это сма от светло розовой (т.е. от медведей, это их сглаженная функция);


-темно-зеленая это сма от светло зеленой (т.е. от быков, это их сглаженная функция);
-точки (синии) это СМА от красной линии (от основной);
-гистограмма синяя это разница между темно зеленой и светло зелеными линиями, или бычье давление.
-гистограмма желтоватого цвета, это разница между фиолетовой и светло розовой линиями, или медвежье давление.

Это все написано в коде индикатора и в статье. Будьте взаимно вежливы, читайте внимательно то что написано.
 

Как его присоединить к графику? У меня советник вообще не реагирует на попытки

 
Советник на MarketWay, кому интересно - пишите.

 
ForexTrader2008:
Советник на MarketWay, кому интересно - пишите.


Уважаемый ForexTrader2008!

Я хотел бы обратится к Вам и к остальным людям, которые используют данный ИНДИКАТОР для тестирования.
Я конечно не могу настаивать, но обращаюсь с просьбой, если у кого-то появляются интересные наработки по использованию различных комбинаций параметров данного индикатора и/или совместной работы данного индикатора с другими индикаторами, выкладывать сюда же данные своих исследований(если конечно не коммерческая тайна;)).
Ежели есть желание, можно создать отдельную ветку, однако, мое мнение, что ветку следует создавать в том случае, если действительно будут желающие там писать что то полезное, а не трепать языками.

И еще, для исследователей;)

Данный индикатор хорошо показывает моменты входов,выходов, консолидаций и тд., но, лучше если условия входа и выхода в позицию будут основаны на изменениях цены, а данный индикатор будет являться вторичным условием и фильтром. (Прим: Bid выше вчерашнего открытия и т.п.) т.е. сигналом является условие пересечения БИДом вчерашнего открытия, а не пересечение скажем линий индикатора.
 
Автор, ещё раз забрёл сюда, проходя мимо, и не смог пройти . не остановившись, ставлю 10. И в очередной раз восхищаюсь,- как такая мысль то к вам пришла? Качнул индюк в декабре 2011( спецом посмотрел по дате файла, и пользую во всю. Замечательная вещь, благодарствую. пару бы лампочек к нему довесить, на MW-0 и МW-1. исключительно для упрощения "чтения" чья сила сейчас берёт. бычья или медвежья. зелёненькую с красненькой. ну это я так, придираюсь)))
 
ForexTrader2008:
Советник на MarketWay, кому интересно - пишите.


 
navigatorus:
ForexTrader2008:
Советник на MarketWay, кому интересно - пишите.




Здравствуйте очень заинтересовал меня данный индикатор,а сов на нём ещё больше поделитесь наработками то.
 
Rfhfc:
Автор, ещё раз забрёл сюда, проходя мимо, и не смог пройти . не остановившись, ставлю 10. И в очередной раз восхищаюсь,- как такая мысль то к вам пришла? Качнул индюк в декабре 2011( спецом посмотрел по дате файла, и пользую во всю. Замечательная вещь, благодарствую. пару бы лампочек к нему довесить, на MW-0 и МW-1. исключительно для упрощения "чтения" чья сила сейчас берёт. бычья или медвежья. зелёненькую с красненькой. ну это я так, придираюсь)))

да уш полностью с вами согласен насчёт лампочек то,было бы вообще здорово,я вот только наткнулся на этот чудо индикатор и пока не очень разобрался во всех тонкостях торговли по нему.Как я вижу Вы торгуете по данному индикатору уже давно не поделитесь ли хитростями как по нему торговать толково.Заранее благодарен.
Причина обращения: