[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 482
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пишешь bool функция() чтоб проверяла если разница между ценой и выставляемым стоплосом больше Стоплевела(из маркетинфо)
то true иначе false.
Потом пред открытием ордера ставишь проверку if(функция()) открываем ордер.
Зачем это надо тогда если я выставляю стоп лосс на 30% больше чем стоплевел по данному ДЦ
2 и 3 пункты неверны. Правильно: стоплосс и тейкпрофит для бай отсчитываем от Ask, стоплосс и тейкпрофит для селл отсчитываем от Bid.
Проверяется просто. Посчитайте какой прирост при срабатывании тейкпрофита получите при вашем варианте. Он не будет равен тейкпрофиту в пунктах. А в предлагаемом варианте он будет точно соответствовать.
Вот я и переделал как было- все равно результат тот же, оставил только нормализацию цены
Но ошибка в тестере осталась причем самое интересное что не по всем ордерам, а по некоторым
по 1 из 10 выдал ошибку 4107, а остальные 9 обрабатывает без ошибочно.
Помогите пожфлуйста с индикаторами: 1-й чтобы не убирал разметку на графике. 2-й чтобы лини старших ТФ были внешними на младших и чтобы можно было задать отоброжение(после того как задаешь отоброжение сразу все нормально пока не перещелкнешь ТФ,после этого все линии младших ТФ на старших)нии младших ТФ на старших)
Зачем это надо тогда если я выставляю стоп лосс на 30% больше чем стоплевел по данному ДЦ
Вот я и переделал как было- все равно результат тот же, оставил только нормализацию цены
Но ошибка в тестере осталась причем самое интересное что не по всем ордерам, а по некоторым
по 1 из 10 выдал ошибку 4107, а остальные 9 обрабатывает без ошибочно.
Выложи код, посмотрим.Народ, у меня проблема, причем никак не могу допетрить в чем дело, особо не пинайте.
Есть стандартный MACD, хочу в индикаторе отметить все пики столбцов (значками), вот код:
Таким образом я нарисовал все экстремумы в индикаторе. Всё ОК, НО!
Когда функцией Print я вывожу значения всех найденых пиков
то вот что выходит:
Я так понимаю что 2147483647 это нули или пустые значения?
Ну что, никто не поможет? :)
Ну что, никто не поможет? :)
Похоже, проблема в массивах MAX и MIN.
Они у Вас связаны с индикаторными буферами функцией SetIndexBuffer() ?
Да, конечно :)
А функцией IndicatorBuffers() пользуетесь?
#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);
}
//+------------------------------------------------------------------+