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

 
Urain писал(а) >>

Пишешь bool функция() чтоб проверяла если разница между ценой и выставляемым стоплосом больше Стоплевела(из маркетинфо)

то true иначе false.

Потом пред открытием ордера ставишь проверку if(функция()) открываем ордер.


Зачем это надо тогда если я выставляю стоп лосс на 30% больше чем стоплевел по данному ДЦ

khorosh писал(а) >>

2 и 3 пункты неверны. Правильно: стоплосс и тейкпрофит для бай отсчитываем от Ask, стоплосс и тейкпрофит для селл отсчитываем от Bid.
Проверяется просто. Посчитайте какой прирост при срабатывании тейкпрофита получите при вашем варианте. Он не будет равен тейкпрофиту в пунктах. А в предлагаемом варианте он будет точно соответствовать.


Вот я и переделал как было- все равно результат тот же, оставил только нормализацию цены
Но ошибка в тестере осталась причем самое интересное что не по всем ордерам, а по некоторым
по 1 из 10 выдал ошибку 4107, а остальные 9 обрабатывает без ошибочно.

 

Помогите пожфлуйста с индикаторами: 1-й чтобы не убирал разметку на графике. 2-й чтобы лини старших ТФ были внешними на младших и чтобы можно было задать отоброжение(после того как задаешь отоброжение сразу все нормально пока не перещелкнешь ТФ,после этого все линии младших ТФ на старших)нии младших ТФ на старших)

 
забыл...
Файлы:
macd.rar  7 kb
 
2
Файлы:
multi.rar  9 kb
 
baltik писал(а) >>


Зачем это надо тогда если я выставляю стоп лосс на 30% больше чем стоплевел по данному ДЦ


Вот я и переделал как было- все равно результат тот же, оставил только нормализацию цены
Но ошибка в тестере осталась причем самое интересное что не по всем ордерам, а по некоторым
по 1 из 10 выдал ошибку 4107, а остальные 9 обрабатывает без ошибочно.


Выложи код, посмотрим.
 
Noterday >>:
Народ, у меня проблема, причем никак не могу допетрить в чем дело, особо не пинайте.
Есть стандартный MACD, хочу в индикаторе отметить все пики столбцов (значками), вот код:
Таким образом я нарисовал все экстремумы в индикаторе. Всё ОК, НО!
Когда функцией Print я вывожу значения всех найденых пиков
то вот что выходит:
Я так понимаю что 2147483647 это нули или пустые значения?

Ну что, никто не поможет? :)

 
Noterday писал(а) >>

Ну что, никто не поможет? :)


Похоже, проблема в массивах MAX и MIN.
Они у Вас связаны с индикаторными буферами функцией SetIndexBuffer() ?

 
Да, конечно :)
 
Noterday писал(а) >>
Да, конечно :)


А функцией IndicatorBuffers() пользуетесь?

 
Вот полный код:
#property indicator_separate_window
#property indicator_buffers 4

#property indicator_color1 MediumPurple
#property indicator_color2 MediumPurple
#property indicator_color3 Green
#property indicator_color4 Red

#property indicator_width3 1
#property indicator_width4 1


extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;

double MMACD1[];
double SMACD1[];
double MAX[];
double MIN[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);

SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(2,119);
SetIndexArrow(3,119);

SetIndexDrawBegin(1,SMACD1);
IndicatorDigits(Digits+2);

SetIndexBuffer(0,MMACD1);
SetIndexBuffer(1,SMACD1);
SetIndexBuffer(2,MAX);
SetIndexBuffer(3,MIN);

IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");

return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

for(int i=0; i<limit; i++)
MMACD1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

for(i=0; i<limit; i++)
SMACD1[i]=iMAOnArray(MMACD1,Bars,SignalSMA,0,MODE_SMA,i);

for(i=0; i<limit; i++)
{
if(MMACD1[i+1] > MMACD1[i+2] && MMACD1[i+1] > MMACD1[i])
MAX[i+1] = MMACD1[i+1];

if(MMACD1[i+1] < MMACD1[i+2] && MMACD1[i+1] < MMACD1[i])
MIN[i+1] = MMACD1[i+1];
}

for(i=0; i<limit; i++)
{
if (MAX[i+1] != EMPTY_VALUE)
Print(MAX[i+1]);
}

return(0);
}
//+------------------------------------------------------------------+

Причина обращения: