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

 
Link_x:

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

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

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

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

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

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

 
evillive:

А поиску тоже учиться надо, о великий учитель )))

А также вставлять ссылки...



Так точно.

https://www.mql5.com/ru/forum/131859

Надо бы. :)
 

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

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


 

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

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

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

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;
}
и так проблема вся в том что у нас текущей ордер может закрыться уже когда сформируется заново условия и перезапишется цена тоесть он откроется фиг знает где и сразу по закрытию текуще позиции....как сделать так чтобы если ордер закрылся выше перезаписаной цены то мы ждали дальше пока не выполнится заново условие

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

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

 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;
}
} 
 
   
 

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

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;
}

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

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


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

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

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

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

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

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

 
Zver4991:

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


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