До тех пор пока нет падающей свечи, размером (-50) цикл не должен прекращаться в течении 10 свечей от закрытия
позиции
Когда испытал: после закрытия позиции не было свечи размером больше (-50) , а код все ровно завершил цикл.
Ну я же не вижу Ваш код. Наверное цикл прекращается потому что закончились 10 свечей. Он же завершается по двум причинам: или
закончились все наблюдаемые бары или встретился нужный бар.
Ну сделайте так, чтобы было понятней:
int i=0;
double g;
do
{
g=(Close[i]-Open[i])/_Point;
i++;
}
while(g>=-50 && i<10);
if (i==10) Print("Пока рановато");
elsePrint("Уже пора");
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
{
datetime C=OrderCloseTime();
int h=iBarShift(Symbol3,PERIOD_M1,C);
}
Alert("КОЛ-ВО СВЕЧЕЙ ПОСЛЕ ЗАКРЫТИЯ",h);
i=0;
double g;
do
{
g=(Close[i]-Open[i])/_Point;
i++;
}
while(g>=-50 && i<10);
if (i==10) Print("Пока рановато");
else Print("Уже пора");
metka1();
}
return(0);
}
int metka1()
{
int send1=OrderSend(Symbol3,OP_BUY,Lots,Ask,3,Bid-30*Point,Bid+30*Point);
return(0);
}
Пишет "Пока рановато" и открывает ордер. Не соблюдается (-50)
Cтранное дело... Значит колличество учитывается с лёгкостью, код всегда его видит. А вот свойство свечи (падающия или растущая) мимо
"кассы", как будто есть какие-то приоритеты....
Да в принципе решил задачу таким образом. Проблема оказалась крайне банальна - дурацкие фигурные скобки (начало условий, конец), их
надо было правильно расставить, а так многие варианты подходили. Всё ж спасибо всем тем, кто откликнулся помочь!
if ((up>=s2)&&(OrdersTotal() == 0))
{
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
Да в принципе решил задачу таким образом. Проблема оказалась крайне банальна - дурацкие фигурные скобки (начало условий, конец), их
надо было правильно расставить, а так многие варианты подходили. Всё ж спасибо всем тем, кто откликнулся помочь!
//+------------------------------------------------------------------+if((up>=s2) && (OrdersTotal()==0))
{
if((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==true))
{
datetime C=OrderCloseTime();
int h=iBarShift(Symbol3,PERIOD_M1,C);
Alert("КОЛ-ВО СВЕЧЕЙ ПОСЛЕ ЗАКРЫТИЯ",h);
int g=(Close[i]-Open[i])/Point;
if((h<=5) && (g>=-20))
{
Alert("РАНОВАТО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return(-1);
}
}
metka1();
}
//+------------------------------------------------------------------+
Вам же уже намекнули на неправильную вставку кода, который нечитаемый в таком виде. Ведь можно же уважать людей, которые вам помогают...
Я же в своём ответе в цитируемом вашем тексте вставил стилизированный при помощи Ctrl+< в редакторе ваш код с убранными пробелами между
строк - и он уже не портянка, и выглядит читаемым.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Да, именно (-50)
Ну я же не вижу Ваш код.
Наверное цикл прекращается потому что закончились 10 свечей. Он же завершается по двум причинам: или закончились все наблюдаемые бары или встретился нужный бар.
Ну сделайте так, чтобы было понятней:
Ошибка как минимум тут:
Это не int, а datetime
Ошибка как минимум тут:
Это не int, а datetime
Пока от этого не может быть ошибки. Ошибка будет после 2038.01.19 03:14.
}
Пишет "Пока рановато" и открывает ордер. Не соблюдается (-50)
Cтранное дело... Значит колличество учитывается с лёгкостью, код всегда его видит. А вот свойство свечи (падающия или растущая) мимо "кассы", как будто есть какие-то приоритеты....
А тиковый объем не забыли учесть?
}
Пишет "Пока рановато" и открывает ордер. Не соблюдается (-50)
Ещ
ё ра
з
прочитайт
е сво
й коммен
т и подумайт
е, захочу ли я е
го читать.
Ещ
ё ра
з
прочитайт
е сво
й коммен
т и подумайт
е, захочу ли я е
го читать.
ну привык я так писать, извините уж.
А тиковый объем не забыли учесть?
Нет не учитываю. А в каком месте кода его учесть?
Да в принципе решил задачу таким образом. Проблема оказалась крайне банальна - дурацкие фигурные скобки (начало условий, конец), их надо было правильно расставить, а так многие варианты подходили. Всё ж спасибо всем тем, кто откликнулся помочь!
if ((up>=s2)&&(OrdersTotal() == 0))
{
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
{
datetime C=OrderCloseTime();
int h=iBarShift(Symbol3,PERIOD_M1,C);
Alert("КОЛ-ВО СВЕЧЕЙ ПОСЛЕ ЗАКРЫТИЯ",h);
int g=(Close[i]-Open[i])/Point;
if ((h<=5)&&(g>=-20))
{
Alert("РАНОВАТО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return(-1);
}
}
metka1();
}
Alexey Belyakov:
Да в принципе решил задачу таким образом. Проблема оказалась крайне банальна - дурацкие фигурные скобки (начало условий, конец), их надо было правильно расставить, а так многие варианты подходили. Всё ж спасибо всем тем, кто откликнулся помочь!
Вам же уже намекнули на неправильную вставку кода, который нечитаемый в таком виде. Ведь можно же уважать людей, которые вам помогают...
Я же в своём ответе в цитируемом вашем тексте вставил стилизированный при помощи Ctrl+< в редакторе ваш код с убранными пробелами между строк - и он уже не портянка, и выглядит читаемым.