Ответить
20.02.2016, 16:54
Аватар для ivansss
ivansss ivansss на форуме Новичок форума
Регистрация: 11.12.2015 / Сообщений: 48
Поблагодарили 15 раз(а) / Репутация: 16
Сообщение от ansol
А всегда ли первый тик приходит в первую секунду открытия бара?
конечно не всегда.Но советник, работающий по тикам, узнает об новом баре на первом тике.насколько это принципиально?
Сообщение от ansol
К тому же, для текущего графика проще написать Time[0], а не iTime
Ну да . просто взято из советника,который работает разных таимфреймах. когда лень ,иногда не проще)))

Болшое спасибо ,все вроде верно заработало ) Извиняюсь заранее за дерзость,немогли бы вы посмотреть индюк,уж очень я хочу убрать перерисовку ,но знаний явно не хватает ,в индюке линия на текущем баре иногда меняет цвет,думаю просто нужно отрисовку по закрытию бара поставить
20.02.2016, 17:23
Аватар для alexshell
alexshell alexshell на форуме Элитный участник
Регистрация: 29.10.2010 / Сообщений: 681
Поблагодарили 1,686 раз(а) / Репутация: 1688
Болшое спасибо ,все вроде верно заработало ) Извиняюсь заранее за дерзость,немогли бы вы посмотреть индюк,уж очень я хочу убрать перерисовку ,но знаний явно не хватает ,в индюке линия на текущем баре иногда меняет цвет,думаю просто нужно отрисовку по закрытию бара поставить
Ну все индикаторы нулевой бар рисуют. так как он меняется. Просто не используйте данные нулевого бара для советника. Можно и в индикаторе конечно убрать расчеты по нулевому бару. Но он тогда просто не будет рисовать линию на нулевом баре. Сами посмотрите:
ivansss , jenzo 
20.02.2016, 17:29
Аватар для ansol
ansol ansol на форуме Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Ну все индикаторы нулевой бар рисуют. так как он меняется. Просто не используйте данные нулевого бара для советника. Можно и в индикаторе конечно убрать расчеты по нулевому бару. Но он тогда просто не будет рисовать линию на нулевом баре. Сами посмотрите:
Присоединяюсь

Вызов примерно такой в сове:
double val=iCustom(NULL,0,"trendflat",13,1,0);
Вот вместо последнего нолика поставить единичку или я неправильно понял вопрос.
20.02.2016, 18:17
Аватар для 1Игорь1
1Игорь1 1Игорь1 вне форума Новичок форума
Регистрация: 06.12.2009 / Сообщений: 23
Поблагодарили 0 раз(а) / Репутация: -1
ma1=iMA(SYMBOL,TF1,MAperiod1,0,MethodMA1,PriceMA1, 1 );
ma2=iMA(SYMBOL,TF1,MAperiod2,0,MethodMA2,PriceMA2, 1 );
ma3=iMA(SYMBOL,TF1,MAperiod3,0,MethodMA3,PriceMA3, 1 );
if(ma2>ma3&&ma1>ma2&&ma1>ma3&&iOpen(SYMBOL,TF1,0)> ma1){s= }
типа этого.
Уважаемый alexshell, подскажите еще, пжл, как можно округлить значения ma1, ma2, ma3 до 4-го знака. Ниже, я так понимаю, прописаны эти переменные, как надо прописать, чтобы они округлялись до 4-го знака?

double up=iCustom(SYMBOL,TF1,"trendv3",Risk1,0,0,1),ma1=0 ,ma2=0,ma3=0,//считываем индикатор
dw=iCustom(SYMBOL,TF1,"trendv3",Risk1,0,1,1);
21.02.2016, 02:44
Аватар для alexshell
alexshell alexshell на форуме Элитный участник
Регистрация: 29.10.2010 / Сообщений: 681
Поблагодарили 1,686 раз(а) / Репутация: 1688
Сообщение от: 1Игорь1
Уважаемый alexshell, подскажите еще, пжл, как можно округлить значения ma1, ma2, ma3 до 4-го знака. Ниже, я так понимаю, прописаны эти переменные, как надо прописать, чтобы они округлялись до 4-го знака?

double up=iCustom(SYMBOL,TF1,"trendv3",Risk1,0,0,1),ma1=0 ,ma2=0,ma3=0,//считываем индикатор
dw=iCustom(SYMBOL,TF1,"trendv3",Risk1,0,1,1);
ma1=iMA(SYMBOL,TF1,MAperiod1,0,MethodMA1,PriceMA1, 1 );
ma1=NormalizeDouble(ma1,4);
А зачем?
21.02.2016, 03:52
Аватар для jenzo
jenzo jenzo на форуме Местный знаток
Регистрация: 10.07.2014 / Сообщений: 564
Поблагодарили 579 раз(а) / Репутация: 580
Ну все индикаторы нулевой бар рисуют. так как он меняется. Просто не используйте данные нулевого бара для советника. Можно и в индикаторе конечно убрать расчеты по нулевому бару. Но он тогда просто не будет рисовать линию на нулевом баре. Сами посмотрите:
если не трудно можете прикрепить стрелки? Синии бай и красный селл.
21.02.2016, 06:45
Аватар для alexshell
alexshell alexshell на форуме Элитный участник
Регистрация: 29.10.2010 / Сообщений: 681
Поблагодарили 1,686 раз(а) / Репутация: 1688
если не трудно можете прикрепить стрелки? Синии бай и красный селл.
никогда не занимался индикаторами, только иногда использовал готовые. так что мне трудно. и вообще нелюбовь у меня к индикаторам. Считаю что от них толку нет.
jenzo 
23.02.2016, 05:39
Аватар для 1Игорь1
1Игорь1 1Игорь1 вне форума Новичок форума
Регистрация: 06.12.2009 / Сообщений: 23
Поблагодарили 0 раз(а) / Репутация: -1
ma1=iMA(SYMBOL,TF1,MAperiod1,0,MethodMA1,PriceMA1, 1 );
ma1=NormalizeDouble(ma1,4);
А зачем?
Надо сделать так, чтобы сравнивались ma1,ma2,ma3 со значениями до 4-го знака.
Если я пропишу по ma1=NormalizeDouble(ma1,4) в одних фигурных скобках {}, в других снова надо так прописывать округление, или он будет брать это значение уже округленным?
23.02.2016, 16:32
Аватар для peterman
peterman peterman вне форума Активный участник
Регистрация: 23.08.2009 / Сообщений: 6
Поблагодарили 0 раз(а) / Репутация: 0
буду весьма признателен всем, кто подтолкнет в правильном направлении, а то у меня уже мозг вскипает....
имеем следующий алгоритм. всегда работаем только 1 ордером.
1. смотрим историю закрытых ордеров (интересен только самый последний, который совпадает по инструменту)
2. если история чиста - это первый старт, ставим 1 ордер с начальным лотом согласно индюка
3. если ордер в истории есть и он закрыт в профит, то также ставим ордер с начальным лотом согласно индюка
4. ордер в истории есть, закрыт в минус. тогда пробуем продолжать серию, смотрим тип и лот закрытого ордера и на их основе ставим новый.
У меня в тестере дальше первого ордера дело не идет. Не могу найти где собака порылась)))))
..............

Скрытый текст

if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==false)//ордеров нет, значит это первый запуск
// {
// Print("Ордеров в истории нет!");
// }
if (условия индюка && Total==0)
{
Opn_B_1=true; // Критерий откр. Buy1
}
if (условия индюка && Total==0)
{
Opn_S_1=true; // Критерий откр. Sell1
}


if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol()!=Symbol() && OrderProfit()> 10) //ордер был, получена прибыль, значит начинаем сначала
{
if (условия индюка && Total==0)
{
Opn_B_1=true; // Критерий откр. Buy1
}
if (условия индюка && Total==0)
{
Opn_S_1=true; // Критерий откр. Sell1
}
}



if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol()!=Symbol() && OrderProfit()< 0 ) //ордер был, закрыт с убытком
{
if (OrderType() == 0 && OrderLots() == Mas_koef[0] )//лот закрытого ордера сравнивается с лотами из массива
{
Opn_B_2=true;
}

if (OrderType() == 1 && OrderLots() == Mas_koef[0] )
{
Opn_S_2=true;
}
[свернуть]

..............

Последний раз редактировалось NSerega; 24.02.2016 в 00:09.
23.02.2016, 16:43
Аватар для RoboMaks
RoboMaks RoboMaks вне форума Элитный участник
Регистрация: 19.08.2012 / Адрес: Баку, Азербайджан / Сообщений: 651
Поблагодарили 1,121 раз(а) / Репутация: 1131
  • Отправить сообщение для RoboMaks с помощью Skype™

Скрытый текст

буду весьма признателен всем, кто подтолкнет в правильном направлении, а то у меня уже мозг вскипает....
имеем следующий алгоритм. всегда работаем только 1 ордером.
1. смотрим историю закрытых ордеров (интересен только самый последний, который совпадает по инструменту)
2. если история чиста - это первый старт, ставим 1 ордер с начальным лотом согласно индюка
3. если ордер в истории есть и он закрыт в профит, то также ставим ордер с начальным лотом согласно индюка
4. ордер в истории есть, закрыт в минус. тогда пробуем продолжать серию, смотрим тип и лот закрытого ордера и на их основе ставим новый.
У меня в тестере дальше первого ордера дело не идет. Не могу найти где собака порылась)))))
..............
if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==false)//ордеров нет, значит это первый запуск
// {
// Print("Ордеров в истории нет!");
// }
if (условия индюка && Total==0)
{
Opn_B_1=true; // Критерий откр. Buy1
}
if (условия индюка && Total==0)
{
Opn_S_1=true; // Критерий откр. Sell1
}


if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol()!=Symbol() && OrderProfit()> 10) //ордер был, получена прибыль, значит начинаем сначала
{
if (условия индюка && Total==0)
{
Opn_B_1=true; // Критерий откр. Buy1
}
if (условия индюка && Total==0)
{
Opn_S_1=true; // Критерий откр. Sell1
}
}



if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol()!=Symbol() && OrderProfit()< 0 ) //ордер был, закрыт с убытком
{
if (OrderType() == 0 && OrderLots() == Mas_koef[0] )//лот закрытого ордера сравнивается с лотами из массива
{
Opn_B_2=true;
}

if (OrderType() == 1 && OrderLots() == Mas_koef[0] )
{
Opn_S_2=true;
}
[свернуть]

..............
1. смотрим историю закрытых ордеров (интересен только самый последний, который совпадает по инструменту)

А почему OrderSymbol()!=Symbol() ? Если ищем ордера по текущему символу надо OrderSymbol()==Symbol()
23.02.2016, 16:43
Аватар для alexshell
alexshell alexshell на форуме Элитный участник
Регистрация: 29.10.2010 / Сообщений: 681
Поблагодарили 1,686 раз(а) / Репутация: 1688
Сообщение от: 1Игорь1
Надо сделать так, чтобы сравнивались ma1,ma2,ma3 со значениями до 4-го знака.
Если я пропишу по ma1=NormalizeDouble(ma1,4) в одних фигурных скобках {}, в других снова надо так прописывать округление, или он будет брать это значение уже округленным?
так вы округлите как написано.
А затем берите ma1 и засовывайте в хоть какие скобки.
23.02.2016, 17:12
Аватар для peterman
peterman peterman вне форума Активный участник
Регистрация: 23.08.2009 / Сообщений: 6
Поблагодарили 0 раз(а) / Репутация: 0
1. смотрим историю закрытых ордеров (интересен только самый последний, который совпадает по инструменту)

А почему OrderSymbol()!=Symbol() ? Если ищем ордера по текущему символу надо OrderSymbol()==Symbol()
Спасибо за найденный косячок, у меня уже глаз видно замылился, неделю над этим кодом бьюсь. Исправил, но результат тот же. Выставляет только первый ордер, после его закрытия опять первый, дальше дело никак не идет.
23.02.2016, 18:19
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,850
Поблагодарили 9,508 раз(а) / Репутация: 9513
Спасибо за найденный косячок, у меня уже глаз видно замылился, неделю над этим кодом бьюсь. Исправил, но результат тот же. Выставляет только первый ордер, после его закрытия опять первый, дальше дело никак не идет.
А с чего Вы решили, что здесь получаете нужный Вам ордер, я не вижу, что данный ордер есть последним:
PHP код:
if(OrderSelect(SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol()!=Symbol() && OrderProfit()> 10//ордер был, получена прибыль 
Где указано по какому критерию, первый/последний это ордер, а может середина из пачки ордеров? Есть только выбор ордера по символу с профитом больше 10.

Перебор ордеров следует произвести по времени закрытия (или по тикету, если не будет частичного закрытия). Каждый раз сравнивать с предыдущим и выбирать только тот ордер, которого время закрытия самое большое - он будет последним. Вот от его профита уже идти дальше.
23.02.2016, 18:50
Аватар для peterman
peterman peterman вне форума Активный участник
Регистрация: 23.08.2009 / Сообщений: 6
Поблагодарили 0 раз(а) / Репутация: 0

Перебор ордеров следует произвести по времени закрытия (или по тикету, если не будет частичного закрытия). Каждый раз сравнивать с предыдущим и выбирать только тот ордер, которого время закрытия самое большое - он будет последним. Вот от его профита уже идти дальше.
Согласен, что это может быть любой из пачки. Но если в терминале установлена сортировка по времени, то как бы последний по времени закрытия и должен быть искомым. Такую инфу откопал где-то на форумах.
Над выбором по времени я уже подумывал, но у меня код получается каким-то усложненным (бестолковый еще), поэтому пока я этот вариант отложил....Видимо зря...
23.02.2016, 18:55
Аватар для RoboMaks
RoboMaks RoboMaks вне форума Элитный участник
Регистрация: 19.08.2012 / Адрес: Баку, Азербайджан / Сообщений: 651
Поблагодарили 1,121 раз(а) / Репутация: 1131
  • Отправить сообщение для RoboMaks с помощью Skype™
результат тот же. Выставляет только первый ордер, после его закрытия опять первый, дальше дело никак не идет.
Кроме того - OrderSelect(SELECT_BY_POS,MODE_HISTORY)==false не значит, что в истории нет ордеров - ошибка пересчёта может быть по любой причине, если даже в истории ордера есть. Здесь после пересчёта надо использовать значение OrdersHistoryTotal(). Надо учитывать и то, что история просчитывается по установленному периоду во вкладке терминала "История Счёта". ( за день, 3 дня или больше)

Цитата:
Согласен, что это может быть любой из пачки. Но если в терминале установлена сортировка по времени, то как бы последний по времени закрытия и должен быть искомым. Такую инфу откопал где-то на форумах.
Для получения последнего в истории ордера надо использовать
PHP код:
for(int ih;ih<OrdersHistoryTotal();ih++){if(OrderSelect(ih,SELECT_BY_POS,MODE_HISTORY)){
// выбор необходимых данных ордера
}} 

Последний раз редактировалось RoboMaks; 23.02.2016 в 19:04.
23.02.2016, 19:20
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,850
Поблагодарили 9,508 раз(а) / Репутация: 9513
Над выбором по времени я уже подумывал, но у меня код получается каким-то усложненным (бестолковый еще), поэтому пока я этот вариант отложил....Видимо зря..
Возьмите любой код мартина, там присутствует функция выбора последнего ордера по профиту. Изучайте, разберите по полочкам и все у Вас получится.
Удачи!!!
29.02.2016, 05:51
Аватар для peterman
peterman peterman вне форума Активный участник
Регистрация: 23.08.2009 / Сообщений: 6
Поблагодарили 0 раз(а) / Репутация: 0
И опять нужна помощь посвященных. Имеем простенький индикатор.
Для советника из него нужно только 2 сигнала (когда он синий или красный) В индикаторе как бы все понятно, но вот что воткнуть в советник не соображу. Или здесь нужен другой подход?
double BLUE_Sig = iCustom (NULL,0,"имя индюка",??????,0);
double RED_Sig = iCustom (NULL,0,"имя индюка",??????,0);


#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red

extern bool SoundON = TRUE;
extern bool EmailON = FALSE;
extern int FastEMA = 12;
extern int SlowEMA = 26;
extern int SignalSMA = 9;
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
int gi_112 = 0;
int gi_116 = 0;

int init() {
IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1.0);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID);
SetIndexBuffer(0, g_ibuf_96);
SetIndexDrawBegin(0, SlowEMA);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID);
SetIndexBuffer(1, g_ibuf_100);
SetIndexDrawBegin(1, SignalSMA);
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID);
SetIndexBuffer(2, g_ibuf_104);
SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID);
SetIndexBuffer(3, g_ibuf_108);
IndicatorShortName("TraderWawasanMACD(" + FastEMA + "," + SlowEMA + "," + SignalSMA + ")");
SetIndexLabel(0, "MACD");
SetIndexLabel(1, "Signal");
SetIndexLabel(2, "Histogram");
return (0);
}

int start() {
double ld_4;
int li_12 = IndicatorCounted();
if (li_12 < 0) return (-1);
if (li_12 > 0) li_12--;
int li_0 = Bars - li_12;
for (int li_16 = 0; li_16 < li_0; li_16++) g_ibuf_96[li_16] = iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, li_16) - iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, li_16);
for (li_16 = 0; li_16 < li_0; li_16++) g_ibuf_100[li_16] = iMAOnArray(g_ibuf_96, Bars, SignalSMA, 0, MODE_SMA, li_16);
for (li_16 = 0; li_16 < li_0; li_16++) {
g_ibuf_104[li_16] = 0;
g_ibuf_108[li_16] = 0;
ld_4 = g_ibuf_96[li_16] - g_ibuf_100[li_16];
if (ld_4 >= 0.0) g_ibuf_104[li_16] = ld_4;
else g_ibuf_108[li_16] = ld_4;
if (li_16 == 1) {
if (g_ibuf_104[li_16] > 0.0 && g_ibuf_108[li_16 + 1] < 0.0) {
if (gi_112 == FALSE) {
gi_112 = TRUE;
gi_116 = FALSE;
if (SoundON) {
Alert("MACD~ BUY ",
"\n Time=", TimeToStr(TimeCurrent(), TIME_DATE), " ", TimeHour(TimeCurrent()), ":", TimeMinute(TimeCurrent()),
"\n Symbol=", Symbol(), " Period=", Period());
}
if (EmailON) {
SendMail("MACD Crossed up", "MACD Crossed up, Date=" + TimeToStr(TimeCurrent(), TIME_DATE) + " " + TimeHour(TimeCurrent()) + ":" + TimeMinute(TimeCurrent()) + " Symbol=" +
Symbol() + " Period=" + Period());
}
}
} else {
if (g_ibuf_108[li_16] < 0.0 && g_ibuf_104[li_16 + 1] > 0.0) {
if (gi_116 == FALSE) {
gi_116 = TRUE;
gi_112 = FALSE;
if (SoundON) {
Alert("MACD ~ DOWN ",
"\n Date=", TimeToStr(TimeCurrent(), TIME_DATE), " ", TimeHour(TimeCurrent()), ":", TimeMinute(TimeCurrent()),
"\n Symbol=", Symbol(), " Period=", Period());
}
if (EmailON) {
SendMail("MACD Crossed down", "MACD Crossed Down, Date=" + TimeToStr(TimeCurrent(), TIME_DATE) + " " + TimeHour(TimeCurrent()) + ":" + TimeMinute(TimeCurrent()) +
" Symbol=" + Symbol() + " Period=" + Period());
}
}
}
}
}
}
return (0);
29.02.2016, 10:00
Аватар для innovision
innovision innovision вне форума Активный участник
Регистрация: 01.03.2012 / Сообщений: 32
Поблагодарили 29 раз(а) / Репутация: 30
Для советника из него нужно только 2 сигнала (когда он синий или красный)
да.. можно по такому алгоритму
double BLUE_Sig = iCustom (NULL,0,"имя индюка",??????,0);
double RED_Sig = iCustom (NULL,0,"имя индюка",??????,0);

сначала идут параметры индюка.. те что у него в экстернах .. 5 штук
extern bool SoundON = TRUE;
extern bool EmailON = FALSE;
extern int FastEMA = 12;
extern int SlowEMA = 26;
extern int SignalSMA = 9;
double Sig = iCustom (NULL,0,"имя индюка",TRUE,FALSE,12,26,9 ....

затем номер нужного инд.буфера
SetIndexBuffer(0, g_ibuf_96);
SetIndexBuffer(1, g_ibuf_100);
SetIndexBuffer(2, g_ibuf_104);
SetIndexBuffer(3, g_ibuf_108);
по тому как обозначено в коде - сигнальный это 1
SetIndexLabel(1, "Signal");

имеем
double Sig = iCustom (NULL,0,"имя индюка",TRUE,FALSE,12,26,9, 1 ...

далее идет номер бара.. 0 - текущий, формирующийся в данный момент.. или 1 - завершенный
выбираем какой нам нужен
получаем
double Sig = iCustom (NULL,0,"имя индюка", TRUE,FALSE,12,26,9, 1, 1);

поскольку в данном буфере формируются оба сигнала... нужно смотреть на полученный результат (Sig) и в зависимости от значения определять - "синий" он или "красный"
29.02.2016, 12:58
Аватар для peterman
peterman peterman вне форума Активный участник
Регистрация: 23.08.2009 / Сообщений: 6
Поблагодарили 0 раз(а) / Репутация: 0

поскольку в данном буфере формируются оба сигнала... нужно смотреть на полученный результат (Sig) и в зависимости от значения определять - "синий" он или "красный"
Ну вот, дошло до меня наконец. Получается здесь две линии и на основе их дополнительно строится еще гистограмма. Гистограмму откидываем, остается....Если Signal выше MACD, на гистограмме рисуется красный квадрат, т.е. sell, если наоборот, то buy. Тогда в советнике можно не все параметры индюка втыкать, а только необходимые - вот так -
double MACD = iCustom (NULL,0,"имя индюка",0,0); - буфер - 0, бар - 0
double SignalMACD = iCustom (NULL,0,"имя индюка",1,0); буфер - 1, бар - 0
Алилуйя, я прозрел...я снова вижу.....
02.03.2016, 16:25
Регистрация: 14.02.2009 / Сообщений: 1,473
Поблагодарили 4,119 раз(а) / Репутация: 4121
индикатор - ATS (Alpha Trend Spotter Price Action free)

CandleHigh=High[Highest(NULL, 0,2,3,i)];
CandleLowS=Low[Lowest(NULL,0,1,3,i)];
CandleOpenS=Open[i];
CandleHighF=High[Highest(NULL, 0, 2, 3, (i+3))];
CandleHighL=Low[Lowest(NULL,0,1,3,(i+3))];
CandleOpenL=Open[i+3];
//---
if((CandleHigh>CandleHighF) && (CandleOpenS<CandleHighL))
{
BufferMap1[i]=High[i+3]+0.0010;
}
//---
if((CandleLowS<CandleHighL) && (CandleOpenS>CandleHighF))
{
BufferMap2[i]=Low[i+3]-0.0010;
==
Вопросы:

1. Сколько свечей анализируется?
2. На какой свече ставится стрелка?
3. Если не сложно расписать условия комбинации

типа O1>C2
========
это код для mq5 этого же индикатора

{
CandleHigh=high[ArrayMaximum(high,bar,iPeriod)];
CandleLow=low[ArrayMinimum(low,bar,iPeriod)];
CandleOpen=open[bar];
CandleHigh1=high[ArrayMaximum(high,bar+iPeriod,iPeriod)];
CandleLow1=low[ArrayMinimum(low,bar+iPeriod,iPeriod)];
CandleOpen1=open[bar+iPeriod];
//---
BuyBuffer[bar]=0.0;
SellBuffer[bar]=0.0;
//---
if(CandleLow<CandleLow1 && CandleOpen>CandleHigh1) BuyBuffer[bar]=low[bar]-ATR[bar]*3/8;
if(CandleHigh>CandleHigh1 && CandleOpen<CandleLow1) SellBuffer[bar]=high[bar]+ATR[bar]*3/8; }

======

я mq5 так понял:

bool UP = Low[i+2] < Low[i+1] && Open[i+2] > High[i+1] ;

bool DOWN = High[i+2] > High[i+1] && Open[i+2] < Low[i+1] ;

Я правильно понял?
===
И я не программист, если что
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 22:34. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO