Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел прибыльную стратегию? Заведи торговый сигнал и заработай на этом!
blo0ds
340
blo0ds 2010.09.24 12:00 

Сегодня утром решил написать простой индикатор... Но я не могу понять в чём дело!

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

При вставке

if(v1 < v3)
{v1=v3;}
ЛИНИЯ ПРОПАДАЕТ!!! Думаю уже минут 90 в чём дело. Тему удалю когда разберусь!

 

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 ForestGreen
#property indicator_color2 Red

#property indicator_width1 2
#property indicator_width2 2


extern double stopl=30;
//---- buffers
double CA1[];
double CA2[];
double v1, v2;
double v3;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
/*
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
*/
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);

SetIndexBuffer(0,CA1);
SetIndexBuffer(1,CA2);
SetIndexArrow( 0, 251);
SetIndexArrow( 1, 251);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {


int counted_bars = IndicatorCounted();

if(counted_bars < 0) return(-1);
if (counted_bars > 0) counted_bars--;

int i, limit;

limit=Bars - counted_bars-1;

for(i=limit;i>=0;i--)
{
   if ( Close[i] > Open[i] ) ///bar vverh
   {v3=v1;
   v1=Open[i] - stopl*Point; 
   }

   if ( Close[i] < Open[i] ) ///bar vniz
   {v2=stopl*Point + Open[i]; }

   if ( Close[i] == Open[i] )
   {v1=CA1[i+1]; v2=CA2[i+1];}

   if(v1 < v3)
   {v1=v3;}



CA1[i]=v1;
CA2[i]=v2;


}
return(0);
}
 

blo0ds
340
blo0ds 2010.09.24 14:04  
Чувствую себя двоечником в 5 классе)))
Игорь
157
Игорь 2010.09.24 15:17  
Да никуда она не пропадает. Просто алгоритмическая ошибка. Запустите этот, слегка подправленный код на EURJPY, M30 и в пределах 1000 бар поймете в чем дело.
Файлы:
bloods.mq4 2 kb
blo0ds
340
blo0ds 2010.09.24 16:02  

аааааааааааааааааааааааааааа

понятно, но не понятно как теперь запрограммировать, то что я хочу

blo0ds
340
blo0ds 2010.09.24 16:39  
Вот окончательный исправленный вариант, отлично подходит для расстановки стопов, но нужен ещё индикатор тренда или просто МА, для анализирования направления
Файлы:
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий