[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 236

 

Коллеги, немного запутался.

Нужно с помощью индикатора провести отрезок между двумя точками


   SetIndexShift(0, DRAW_SECTION);
   SetIndexBuffer(0,z1);

   z1[1]=1.5;
   z1[2]=EMPTY_VALUE;
   z1[3]=EMPTY_VALUE;
   z1[4]=EMPTY_VALUE;
   z1[5]=EMPTY_VALUE;
   z1[6]=1.4;

Так не получается, как надо?
 
neoclassic >>:

Коллеги, немного запутался.

Нужно с помощью индикатора провести отрезок между двумя точками

А Вы справку по SetIndexShift посмотрите. Не та функция. Ваша- SetIndexStyle.

PS: а если рисовать линиями по формуле y=kx+b, то индикатор будет

определен для каждых двух точек :-).

 
jartmailru >>:

А Вы справку по SetIndexShift посмотрите. Не та функция. Ваша- SetIndexStyle.

PS: а если рисовать линиями по формуле y=kx+b, то индикатор будет

определен для каждых двух точек :-).

Вот бывает ведь так, не один индикатор написал, шифт со стайлом перепутал :-) ошибки нет, я и расслабился.... спасибо :-)

 

Ребята, помогите изменить индикатор, чтобы он вместе параболы рисовал эллипс, хочу сравнить результаты работы советника. Мне кажется, что эллипс больше подходит для стоплосса чем парабола. А может есть у кого такой индикатор. На базе эллипса? Заранее спасибо.

Файлы:
 
001 писал(а) >>

Ребята, помогите изменить индикатор, чтобы он вместе параболы рисовал эллипс, хочу сравнить результаты работы советника. Мне кажется, что эллипс больше подходит для стоплосса чем парабола. А может есть у кого такой индикатор. На базе эллипса? Заранее спасибо.

Попытался подключить в советнике этот индикатор в качестве внешнего. Не получается, не пойму что не так.

То что в индикаторе

extern double Step=0.0513;
extern double Maximum=0.46;

В советнике:

extern double stepstop=0.005;
extern double maximumstepstop=0.05;

double sarstop=iCustom(NULL,0,"ParabolicM",stepstop,maximumstepstop,0,0);

В результате:

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

То есть показания не меняются

 

Здравствуйте!


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

Имеется код (нашел на одном из западных форумов и имени автора не помню к сожалению), который по идее должен регистрировать пересечение линий индикатора стохастик на четырех таймфреймах. Если главная линия выше сигнальной на всех таймфреймах, то исполняется код на открытие ордера. Идея конечно замечательная, но воплощение вызвало массу проблем, т.к. после прогона по истории обнаружил что иногда ордер открывается когда событие регистрируется только на одном таймфрейме. Не могу понять в чем вообще может быть суть, т.к. вроде базовые условия на месте.


Буду благодарен за помощь!



double M1, S1, M2, S2, M3, S3, M4, S4;

string Sig;
string St;
double ticket;

int start()
{
M1=iStochastic(NULL,PERIOD_M15,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S1=iStochastic(NULL,PERIOD_M15,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);

M2=iStochastic(NULL,PERIOD_M30,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S2=iStochastic(NULL,PERIOD_M30,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
M3=iStochastic(NULL,PERIOD_H1,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S3=iStochastic(NULL,PERIOD_H1,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
M4=iStochastic(NULL,PERIOD_H4,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S4=iStochastic(NULL,PERIOD_H4,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);

St = "READY";

Sig = "NONE";

if(M1>S1, M2>S2 && M3>S3 && M4>S4)
{
Sig="LONG";
}
if(M1<S1, M2<S2 && M3<S3 && M4<S4)
{
Sig="SHORT";
}

if(St=="READY" && Sig=="LONG")
{
ticket=OrderSend(Symbol(),OP_BUY,LotSize,Ask,5,Bid-SL*Point,Bid+TP*Point,LongComment,Magic,0,Blue);
if(ticket>-1)
{
St="LONG ON";
}
}

if(St=="READY" && Sig=="SHORT")
{
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,5,Ask+SL*Point,Ask-TP*Point,ShortComment,Magic,0,Red);
if(ticket>-1)
{
St="SHORT ON";
}
}

}

 
if-t >>:

Здравствуйте!

Имеется код (нашел на одном из западных форумов и имени автора не помню к сожалению), который по идее ......

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

Буду благодарен за помощь!



Может проблема вот в этой странной записи :

if(M1>S1, M2>S2 && M3>S3 && M4>S4)
Что означает вот это  ? -  
(M1>S1, M2>S2

Может,  вместо запятой попробовать поставить оператор " && " ? (и для бай и для селл)

 
rid >>:

Может проблема вот в этой странной записи :

Что означает вот это ? -

Может, вместо запятой попробовать поставить оператор " && " ? (и для бай и для селл)

Rid, спасибо огромное за ответ! Эту ошибку допустил пока переставлял переменные (голова уже пухнет и допускаю примитивные ошибки). Изначальный вариант правильный:

if(M1>S1 && M2>S2 && M3>S3 && M4>S4)

Но это не работает. Все думаю может переменная St не всегда получает правильные значения? Хотя по сути если условие не выполнено, то код не должен исполняться... В общем, программист из меня как из слона балерина и без помощи профессионалов просто не обойдусь...


 

Кстати, пробовал вставлять распринтовку, но вроде переменные получают значения правильно.

 

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

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- buffers
double Buf_1[], Buf_2[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i, 
          Counted_bars=IndicatorCounted();
//----
i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   while(i>=0) 
      {  
       Buf_1[i]= Close[i]; 
       Buf_2[i]= Open[i];
       i--;
      }
 
//----
   return(0);
Причина обращения: