в чем логическая ошибка кода? - страница 2

Ahmad Mehdiyev  
Link_x:

Что же вы посылаете его вот так, без ссылки?

Ссылочка вам, уважаемый https://forum.mql4.com/ru/38949 . :)

:))) Чел явно с поиском не дружит.

Ну а если ссылочки давать то наверняка ему следует начать отсюда,

https://www.mql5.com/ru/forum/107476 (там есть примеры и обсуждение)

а потом уже сюда https://www.mql5.com/ru/forum/131859 за списком и функциями.

Всеволод  

iHigh(Symbol(),0,i+1) 
//можно заменить на 
High[i+1]

Open[0] тоже упростит дело.


Evgeniy Khaynatskas  

не помогают в теме любой вопрос нуба поэтому пишу заново сюда

мучаюь уже три четыри дня вечно какаето фигня подведет

задача такова нужно чтобы открывалась сделка когда цена открытия текущего бара к примеру находится выше цены установленой цены ... это мы принимаем за условия для входа......и не открывалась заново пока не сформируется аналогичное условие для входа....

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)..если колво сделок открытых равно нулю входить можна
 {

 active=true;
 }
 //открывать сделку или не открывать сделку
 
 if(active==true)...если входить можна проверяем условие для покупки
 {
 if((high3>high2)&&(close2<close1)&&(low2<low3)&&(open1<close2)&&(close1>close2)&&(low1<low2))
{
b=high2;
}
if(iOpen(NULL,0,0)>b)....если текущая цена выше то покупаем
{
 OrderSend(Symbol(),OP_BUY,0.1,Ask,7,Ask-30*Point,Ask+90*Point,0,0,0,Green);
 active=false;
}
и так проблема вся в том что у нас текущей ордер может закрыться уже когда сформируется заново условия и перезапишется цена тоесть он откроется фиг знает где и сразу по закрытию текуще позиции....как сделать так чтобы если ордер закрылся выше перезаписаной цены то мы ждали дальше пока не выполнится заново условие

Ahmad Mehdiyev  
Обычный поиск по сайту вас приятно удивит :) Уверен вы сможете найти готовое решение для вашей проблемы.
Evgeniy Khaynatskas  

не могу понять в чем моя ошибка снова

 if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
 {

 active=true;
 }
 //открывать сделку или не открывать сделку
 
 if(active==true)
 {
 if((high3>high2)&&(close2<close1)&&(low2<low3)&&(open1<close2)&&(close1>close2)&&(low1<low2))
{
b=high2;
now=Open[0] ;
}
if(iOpen(NULL,0,0)>b&&CheckLastOrderTime(Symbol(),0,1)<now).....вот на этом моменте мы проверяем время закрытия ордера последнего с открытием бара на котором стало понятно что появились условия
{.....таким образом у нас не должно быть повторных входов так как если сформируются условия для покупки и закрытие сделки произойдет за этими условиями тоесть время закр ордера будет в любом случае больше
время формирования новых условий то мы не должны вести торговлю а оно открывает позы да и зараза ещо на одном баре иногда что противоречит условию по времени открытия и закрытия позы
 OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Ask-30*Point,Ask+90*Point,0,0,0,Green);
 active=false;
}
} 
 
   
Evgeniy Khaynatskas  

кажись у меня все дерьмо толи в тестере толи в терминале....решил заново черконуть код и посмотреть что как

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
 {

 active=true;
 }
 
 if(active==true)
 {
 if((high3>high2)&&(close2<close1)&&(low2<low3)&&(open1<close2)&&(close1>close2)&&(low1<low2))
{
b=high2;
}

if(iOpen(NULL,0,0)>b)
{
 OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Ask-30*Point,Ask+90*Point,0,0,0,Green);
 active=false;
}

} 
ну блин не должно открывать сделку хотя бы до формирования нового условия без уччета того что сделка может закрытся позже чем условия а тестер открывает позиции на покупку по закрытию старой
были у кого такие проблемы с терминалом?
 
Vitalie Postolache  
Zver4991:

кажись у меня все дерьмо толи в тестере толи в терминале....решил заново черконуть код и посмотреть что как


с логикой проблемы, терминал тут ни при чём...
Ahmad Mehdiyev  
Откровенно говоря желание помочь было, но вы упорно не хотите посмотреть примеры в кодобазе чтобы научиться правильно записать свою мысль в коде.
Ваша мысль даже из ваших словесных предложений не совсем ясна, что уж говорить о терминале. Поэтому и помочь никто не берется.

Попробуйте, сформулировать свою задачу (ДЛЯ СЕБЯ!) в виде кратких формулировок: если то то это, если тогда то так, а если нет то вот так. Сразу полегчает, найдете свою ошибку и даже помощь нужна не будет. А с терминалом проблем нет, ручаюсь.

У вас по-прежнему 3 условия для открытия позиции, верно?

1) нет открытых позиций; 2) цена выше уровня; 3) новый бар.

Проследите мысленно за действиями своего кода при различных вариантах событий.

Если позиция закрывается, то на следующем же тике active будет = true. Если это новый бар, и цена все еще выше уровня то позиция откроется снова. При чем здесь терминал?

Mikhail Kozhemyako  
Zver4991:

кажись у меня все дерьмо толи в тестере толи в терминале....решил заново черконуть код и посмотреть что как


Даже не знаю с какой стороны начать матюкаться.....Ужк если есть отккрытый ордер... Всё... ждём его стоплосса или тейк профита....А дальше вообще зависнуть можно.....