Старт распродаж! Черная пятница - 50%


Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 11 из 12«129101112»
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 Лаборатория стратегий и советников к ним. » Exp - Templates #8 Tester Light (Программирование советников по индикаторам - Легко!)
Exp - Templates #8 Tester Light

expforexДата: Четверг, 22.11.2012, 21:05 | Сообщение # 1
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]



Программирование советников по индикаторам - Легко!
Exp - Templates #8 Tester Light


Программирование советников, для проверки своей стратегии по каким либо индикаторам - достаточно простое дело. И особых познаний в области программирования не нужны. Я расскажу Вам, как сделать советника за 5 минут на основе каких либо индикаторов.

Статья на данный шаблонинструкция по написанию советников










Внимание!!! Расширенная версия шаблона

Обсуждение данной программы


Итак, для написания советника по Вашим индикаторам необходимо скачать шаблон от www.expforex.com




Программирование на заказ || Наши Разработки

 
Сообщение

Программирование советников по индикаторам - Легко!
Exp - Templates #8 Tester Light


Программирование советников, для проверки своей стратегии по каким либо индикаторам - достаточно простое дело. И особых познаний в области программирования не нужны. Я расскажу Вам, как сделать советника за 5 минут на основе каких либо индикаторов.

Статья на данный шаблонинструкция по написанию советников










Внимание!!! Расширенная версия шаблона

Обсуждение данной программы


Итак, для написания советника по Вашим индикаторам необходимо скачать шаблон от www.expforex.com



Автор - expforex
Дата добавления - 22.11.2012 в 21:05

viktorosyka_Дата: Понедельник, 02.11.2015, 10:30 | Сообщение # 101
Трейдер - Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Здравствуйте уважаемый Влад!
Не могли-бы вы на примере вложенного индикатора показать как вставить в шаблон советника10 не сам

индикатор, а исполняемый код сигналов.

Код
#property link "http://www.forex-instruments.info"
//+------------------------------------------------------------------+
//|                    SHI_SilverTrendSig.mq4 |
//|          Copyright © 2003, VIAC.RU, OlegVS, GOODMAN, 2005 Shurka |
//|                    shforex@narod.ru |
//|                    |
//|                    |
//| Пишу программы на заказ                    |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Shurka"
#property link      "http://shforex.narod.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#define  SH_BUY   1
#define  SH_SELL  -1

//---- Входные параметры
extern int     AllBars=0;//How many bars should be counted. 0 - all the bars.
extern int     Otstup=30;//Step back.
extern double  Per=9;//Period.
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];
//+------------------------------------------------------------------+
//| Функция инициализации                    |
//+------------------------------------------------------------------+
int init()
{
   //We will write the number of the bars for which we are counting to the NB
   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   IndicatorBuffers(2);
   IndicatorShortName("SHI_SilverTrendSig");
   SetIndexStyle(0,DRAW_ARROW,0,1);
   SetIndexStyle(1,DRAW_ARROW,0,1);
   SetIndexArrow(0,159);
   SetIndexArrow(1,159);
   SetIndexBuffer(0,BufU);
   SetIndexBuffer(1,BufD);
   SetIndexDrawBegin(0,Bars-NB);//This indicator will be shown for NB bar only
   SetIndexDrawBegin(1,Bars-NB);
   ArrayInitialize(BufD,0.0);//Give a lot of "zero" to the buffe. Otherwise it will be garbage during the changing of

time frame.
   ArrayInitialize(BufU,0.0);
   return(0);
}
//+------------------------------------------------------------------+
//| Функция деинициализации                    |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//| Собсна индикатор                    |
//+------------------------------------------------------------------+
int start()
{
   int CB=IndicatorCounted();
   /* It is the optimization option. We have the function here which restore/return the number of counted bars in

very special way.
   During the first indicator's call we have 0: it is normal because it was not counted anything,
   and then we receive the number of bars minus 1. For example, if the number of bars equal 100,
   we will have 99. I did it especially, you may see that NB is the number of bars whioch should be counted.
   You know we may throw out this parameter. But for the people who understand we may keep it. So, during

the first call
   of indicator this NB is the same one but during the 2dn etc calls - reducing the value up to the last bar,
   That is 1 or 2 for example*/
   if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB;
   for (SH=1;SH<NB;SH++)//comb out the chart from 1 to NB
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5;

UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5;

UD=SH_BUY; }
   }
   return(0);
}

С уважением Виктор.

 
СообщениеЗдравствуйте уважаемый Влад!
Не могли-бы вы на примере вложенного индикатора показать как вставить в шаблон советника10 не сам

индикатор, а исполняемый код сигналов.
Код
#property link "http://www.forex-instruments.info"
//+------------------------------------------------------------------+
//|                    SHI_SilverTrendSig.mq4 |
//|          Copyright © 2003, VIAC.RU, OlegVS, GOODMAN, 2005 Shurka |
//|                    shforex@narod.ru |
//|                    |
//|                    |
//| Пишу программы на заказ                    |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Shurka"
#property link      "http://shforex.narod.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#define  SH_BUY   1
#define  SH_SELL  -1

//---- Входные параметры
extern int     AllBars=0;//How many bars should be counted. 0 - all the bars.
extern int     Otstup=30;//Step back.
extern double  Per=9;//Period.
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];
//+------------------------------------------------------------------+
//| Функция инициализации                    |
//+------------------------------------------------------------------+
int init()
{
   //We will write the number of the bars for which we are counting to the NB
   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   IndicatorBuffers(2);
   IndicatorShortName("SHI_SilverTrendSig");
   SetIndexStyle(0,DRAW_ARROW,0,1);
   SetIndexStyle(1,DRAW_ARROW,0,1);
   SetIndexArrow(0,159);
   SetIndexArrow(1,159);
   SetIndexBuffer(0,BufU);
   SetIndexBuffer(1,BufD);
   SetIndexDrawBegin(0,Bars-NB);//This indicator will be shown for NB bar only
   SetIndexDrawBegin(1,Bars-NB);
   ArrayInitialize(BufD,0.0);//Give a lot of "zero" to the buffe. Otherwise it will be garbage during the changing of

time frame.
   ArrayInitialize(BufU,0.0);
   return(0);
}
//+------------------------------------------------------------------+
//| Функция деинициализации                    |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//| Собсна индикатор                    |
//+------------------------------------------------------------------+
int start()
{
   int CB=IndicatorCounted();
   /* It is the optimization option. We have the function here which restore/return the number of counted bars in

very special way.
   During the first indicator's call we have 0: it is normal because it was not counted anything,
   and then we receive the number of bars minus 1. For example, if the number of bars equal 100,
   we will have 99. I did it especially, you may see that NB is the number of bars whioch should be counted.
   You know we may throw out this parameter. But for the people who understand we may keep it. So, during

the first call
   of indicator this NB is the same one but during the 2dn etc calls - reducing the value up to the last bar,
   That is 1 or 2 for example*/
   if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB;
   for (SH=1;SH<NB;SH++)//comb out the chart from 1 to NB
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5;

UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5;

UD=SH_BUY; }
   }
   return(0);
}

С уважением Виктор.

Автор - viktorosyka_
Дата добавления - 02.11.2015 в 10:30

expforexДата: Понедельник, 02.11.2015, 10:32 | Сообщение # 102
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Приветствую, да смогу сделать, только немного позже. закончу заказ и помогу



Программирование на заказ || Наши Разработки

 
СообщениеПриветствую, да смогу сделать, только немного позже. закончу заказ и помогу

Автор - expforex
Дата добавления - 02.11.2015 в 10:32

viktorosyka_Дата: Понедельник, 02.11.2015, 10:39 | Сообщение # 103
Трейдер - Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Спасибо! 
Буду ждать.

 
СообщениеСпасибо! 
Буду ждать.

Автор - viktorosyka_
Дата добавления - 02.11.2015 в 10:39

viktorosyka_Дата: Среда, 04.11.2015, 11:50 | Сообщение # 104
Трейдер - Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Подскажите пожалуйста когда у вас появится окно что-бы и я был на сайте?

 
СообщениеПодскажите пожалуйста когда у вас появится окно что-бы и я был на сайте?

Автор - viktorosyka_
Дата добавления - 04.11.2015 в 11:50

expforexДата: Пятница, 06.11.2015, 13:59 | Сообщение # 105
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

viktorosyka_

   

Код
double ExampleCustomDN=iCustom(Symbol(),0,"SHI_SilverTrendSig",0,1); // Пример вызова пользовательского индикатора
   double ExampleCustomUP=iCustom(Symbol(),0,"SHI_SilverTrendSig",1,1); // Пример вызова пользовательского индикатора

//Указываем Сигналы на открытие:
   if( ExampleCustomUP!= EMPTY_VALUE)Sig=1; 
   if( ExampleCustomDN!= EMPTY_VALUE)Sig=2;
 
почему то индикатор не дает больше одного сигнала за раз



Программирование на заказ || Наши Разработки

 
Сообщениеviktorosyka_

   
Код
double ExampleCustomDN=iCustom(Symbol(),0,"SHI_SilverTrendSig",0,1); // Пример вызова пользовательского индикатора
   double ExampleCustomUP=iCustom(Symbol(),0,"SHI_SilverTrendSig",1,1); // Пример вызова пользовательского индикатора

//Указываем Сигналы на открытие:
   if( ExampleCustomUP!= EMPTY_VALUE)Sig=1; 
   if( ExampleCustomDN!= EMPTY_VALUE)Sig=2;
 
почему то индикатор не дает больше одного сигнала за раз

Автор - expforex
Дата добавления - 06.11.2015 в 13:59

viktorosyka_Дата: Пятница, 06.11.2015, 19:59 | Сообщение # 106
Трейдер - Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
double ExampleCustomDN=iCustom(Symbol(),0,"SHI_SilverTrendSig",0,1); // Пример вызова пользовательского индикатора   double ExampleCustomUP=iCustom(Symbol(),0,"SHI_SilverTrendSig",1,1); // Пример вызова пользовательского индикатора//Указываем Сигналы на открытие:   if( ExampleCustomUP!= EMPTY_VALUE)Sig=1;    if( ExampleCustomDN!= EMPTY_VALUE)Sig=2;
Здравствуйте!
Возможно я не правильно сформулировал вопрос, но меня интересует не вызов индикатора (это я делал и все получилось). А как в тело шаблона вставить код самого индикатора. Что-бы советник сам прсчитывал, а именно затруднения с функцией  int CB=IndicatorCounted();

 
Сообщение
Цитата expforex ()
double ExampleCustomDN=iCustom(Symbol(),0,"SHI_SilverTrendSig",0,1); // Пример вызова пользовательского индикатора   double ExampleCustomUP=iCustom(Symbol(),0,"SHI_SilverTrendSig",1,1); // Пример вызова пользовательского индикатора//Указываем Сигналы на открытие:   if( ExampleCustomUP!= EMPTY_VALUE)Sig=1;    if( ExampleCustomDN!= EMPTY_VALUE)Sig=2;
Здравствуйте!
Возможно я не правильно сформулировал вопрос, но меня интересует не вызов индикатора (это я делал и все получилось). А как в тело шаблона вставить код самого индикатора. Что-бы советник сам прсчитывал, а именно затруднения с функцией  int CB=IndicatorCounted();

Автор - viktorosyka_
Дата добавления - 06.11.2015 в 19:59

expforexДата: Пятница, 06.11.2015, 20:12 | Сообщение # 107
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

а...
ну тут в принципе можно поставить 
int CB=0;
и ограничить расчет например по 100 последним барам 

  

Код
NB=100;
   for (SH=1;SH<NB;SH++)//comb out the chart from 1 to NB
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5; 

UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5; 

UD=SH_BUY; }
   }



Программирование на заказ || Наши Разработки

 
Сообщениеа...
ну тут в принципе можно поставить 
int CB=0;
и ограничить расчет например по 100 последним барам 

  
Код
NB=100;
   for (SH=1;SH<NB;SH++)//comb out the chart from 1 to NB
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5; 

UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5; 

UD=SH_BUY; }
   }

Автор - expforex
Дата добавления - 06.11.2015 в 20:12

viktorosyka_Дата: Суббота, 07.11.2015, 06:58 | Сообщение # 108
Трейдер - Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Как я понял участки кода

Код
for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;
BufU[SH]=Low[SH]-R*0.5;
BufD[SH]=High[SH]+R*0.5;
отвечают за место-расположение сигнальной точки
Правильно-ли будет если в тело шаблона я перенесу
Код
NB=100;
   for (SH=1;SH<NB;SH++)
   {
      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { UD=SH_BUY; }
   }
Не нарушится ли логика индикатора

 
СообщениеКак я понял участки кода
Код
for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;
BufU[SH]=Low[SH]-R*0.5;
BufD[SH]=High[SH]+R*0.5;
отвечают за место-расположение сигнальной точки
Правильно-ли будет если в тело шаблона я перенесу
Код
NB=100;
   for (SH=1;SH<NB;SH++)
   {
      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { UD=SH_BUY; }
   }
Не нарушится ли логика индикатора

Автор - viktorosyka_
Дата добавления - 07.11.2015 в 06:58

expforexДата: Суббота, 07.11.2015, 10:07 | Сообщение # 109
Главный Администартор
Группа: Администраторы
Сообщений: 8951
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Код
extern int     Otstup=30;//Step back.
extern double  Per=9;//Period.
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];
#define  SH_BUY   1
#define  SH_SELL  2
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   ArrayResize(BufD,99);
   ArrayResize(BufU,99);

   int SH=1;
   
   for(SH=1;SH<100;SH++)//comb out the chart from 1 to NB
     {
      for(R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if(Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL)
        {
         BufU[SH]=Low[SH]-R*0.5;

         UD=SH_SELL;
         break;
        }
      if(Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY)
        {
         BufD[SH]=High[SH]+R*0.5;

         UD=SH_BUY;
         break;
        }
     }

/*       Блок сигналов    */

   if(UD==SH_SELL) // SELL
   if(UD==SH_BUY) // BUY

        }
         //+------------------------------------------------------------------+

сигналы формируются здесь:
/*       Блок сигналов    */

if(UD==SH_SELL) // SELL
if(UD==SH_BUY) // BUY



Программирование на заказ || Наши Разработки

 
Сообщение
Код
extern int     Otstup=30;//Step back.
extern double  Per=9;//Period.
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];
#define  SH_BUY   1
#define  SH_SELL  2
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   ArrayResize(BufD,99);
   ArrayResize(BufU,99);

   int SH=1;
   
   for(SH=1;SH<100;SH++)//comb out the chart from 1 to NB
     {
      for(R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if(Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL)
        {
         BufU[SH]=Low[SH]-R*0.5;

         UD=SH_SELL;
         break;
        }
      if(Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY)
        {
         BufD[SH]=High[SH]+R*0.5;

         UD=SH_BUY;
         break;
        }
     }

/*       Блок сигналов    */

   if(UD==SH_SELL) // SELL
   if(UD==SH_BUY) // BUY

        }
         //+------------------------------------------------------------------+

сигналы формируются здесь:
/*       Блок сигналов    */

if(UD==SH_SELL) // SELL
if(UD==SH_BUY) // BUY

Автор - expforex
Дата добавления - 07.11.2015 в 10:07

viktorosyka_Дата: Воскресенье, 08.11.2015, 06:37 | Сообщение # 110
Трейдер - Сержант
Группа: Пользователи
Сообщений: 26
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Ни чего не получается, логика совершенно другая, Помогите добавить код что-бы не изменилась логика

Код
#define  SH_BUY   1
#define  SH_SELL  -1
int            NB,SH,STr,UD;
//int NB=100;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];
/* Блок управления сигналом от Вашего индикатора
Создаем переменные для сигналов индикатора
*/
int IndicatorSignal()
  {
   int Sig=0;

   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   for (SH=1;SH<NB;SH++)
   {
      for (R=0,STr=SH;STr<SH+10;STr++) {R+=(10+SH-STr)*(High[STr]-Low[STr]);}      R/=55;   
      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) {BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL;}
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) {BufD[SH]=High[SH]+R*0.5; UD=SH_BUY;}
   }

   //Указываем Сигналы на закрытие:
   if(UD==SH_BUY)Sig=4; //  закрываем в селл
   if(UD==SH_SELL)Sig=3; //  закрываем в бай
   
   if(Sig==3 &&  EPs(Symbol(),OP_BUY,Magic))CPD(Symbol(),OP_BUY,Magic);
   if(Sig==4 &&  EPs(Symbol(),OP_SELL,Magic))CPD(Symbol(),OP_SELL,Magic);

   //Указываем Сигналы на открытие:
      if (UD==SH_SELL) Sig=2;
      if (UD==SH_BUY) Sig=1;  

  // 1 - бай  2 - селл, 3 - закрытие бай, 4 - закрытие селл
   return(Sig);
  }

 
СообщениеНи чего не получается, логика совершенно другая, Помогите добавить код что-бы не изменилась логика
Код
#define  SH_BUY   1
#define  SH_SELL  -1
int            NB,SH,STr,UD;
//int NB=100;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];
/* Блок управления сигналом от Вашего индикатора
Создаем переменные для сигналов индикатора
*/
int IndicatorSignal()
  {
   int Sig=0;

   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   for (SH=1;SH<NB;SH++)
   {
      for (R=0,STr=SH;STr<SH+10;STr++) {R+=(10+SH-STr)*(High[STr]-Low[STr]);}      R/=55;   
      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) {BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL;}
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) {BufD[SH]=High[SH]+R*0.5; UD=SH_BUY;}
   }

   //Указываем Сигналы на закрытие:
   if(UD==SH_BUY)Sig=4; //  закрываем в селл
   if(UD==SH_SELL)Sig=3; //  закрываем в бай
   
   if(Sig==3 &&  EPs(Symbol(),OP_BUY,Magic))CPD(Symbol(),OP_BUY,Magic);
   if(Sig==4 &&  EPs(Symbol(),OP_SELL,Magic))CPD(Symbol(),OP_SELL,Magic);

   //Указываем Сигналы на открытие:
      if (UD==SH_SELL) Sig=2;
      if (UD==SH_BUY) Sig=1;  

  // 1 - бай  2 - селл, 3 - закрытие бай, 4 - закрытие селл
   return(Sig);
  }

Автор - viktorosyka_
Дата добавления - 08.11.2015 в 06:37
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 Лаборатория стратегий и советников к ним. » Exp - Templates #8 Tester Light (Программирование советников по индикаторам - Легко!)
Страница 11 из 12«129101112»
Поиск:


WebMoney Яндекс цитирования.