Скачать MetaTrader 5

в чем логическая ошибка кода?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересуют возможности MetaTrader 5? Загляни и узнай!
Evgeniy Khaynatskas
228
Evgeniy Khaynatskas 2014.01.16 12:47 
double high1;
double high2;
double high3;
double high4;
double high5;
double close1;
double close2;
double close3;
double low1;
double low2;
double low3;
double low4;
double low5;
double open1;
double open2;
double open3;
double close4;
int a=0;
double b=10000.0;
int i=1;

high2=iHigh(Symbol(),0,i+1);
high3=iHigh(Symbol(),0,i+2);
close1=iClose(Symbol(),0,i);
close2=iClose(Symbol(),0,i+1);
low1=iLow(Symbol(),0,i);
low2=iLow(Symbol(),0,i+1);
low3=iLow(Symbol(),0,i+2);
open1=iOpen(Symbol(),0,i);
if((high3>high2)&&(close2<close1)&&(low2<low3)&&(open1<close2)&&(close1>close2)&&(low1<low2))\\\ определяется цена выше которой должен советник открыть сделку
{
b=high2;\\\записывается цена в переменную
}

if(iOpen(NULL,0,0)>b)\\\далее проверяется если цена открытия текущего бара больше чем цена в переменной и количество открытых ордеров равно нулю то мы отправляем рыночный ордер на покупку
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{
OrderSend(Symbol(),OP_BUY,0.1,Ask,7,Ask-30*Point,Ask+90*Point,0,0,0,Green);

}\\\потому присваиваем переменной значение больше чем может быть любая цена на рынке для того чтобы избежать повторных входов выше этой цены...таким образом мы избегаем того что сделки будут открыватся постоянно по закрытию текущей сделки и повторных входов на одних и тех же барах так как установленная в переменную цена больше чем есть на рынке до тех пор пока заново не образуются условия для входа и не запишутся в переменную b
b=10000;

}

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

Ahmad Mehdiyev
478
Ahmad Mehdiyev 2014.01.16 14:51  

Если в момент закрытия старой сделки ваши условия открытия выполняются, а это вполне возможно, позиция будет открыта снова, так как ваше присвоение b=10000, которое само по не самый лучший способ контроля, будет обновлено на b=high2.

Найдите более изящный способ контроля цены открытия.

Evgeniy Khaynatskas
228
Evgeniy Khaynatskas 2014.01.16 15:49  
pro_:

Если в момент закрытия старой сделки ваши условия открытия выполняются, а это вполне возможно, позиция будет открыта снова, так как ваше присвоение b=10000, которое само по не самый лучший способ контроля, будет обновлено на b=high2.

Найдите более изящный способ контроля цены открытия.


может подскажите а то ничего в голову не лезет второй день не могу решить эти проблемы.....нужно чтобы сделка открывалась один раз только когда текущая свеча откроется выше или ниже определенной цены и не открывалась к примеру до следующего аналогичного условия но могла быть открыта при других условиях...как такое возможно реализовать?
Evgeniy Khaynatskas
228
Evgeniy Khaynatskas 2014.01.16 15:59  
Zver4991:

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

вроде получилось при минимуме кода максимум результата создать в такой способ решил эти проблемы

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

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-120*Point,Ask+120*Point,0,0,0,Green);

b=10000;

}

}

немного кода местами сменил..спасибо что помогли сначала

Джони Браво
525
Джони Браво 2014.01.16 16:06  
Здравствуйте!
Разделяю смысловые части.

Первое.
Зачем вы создали новую ветку на форуме? Уже существует ветка, в которой задают такие вопросы. Вот она https://forum.mql4.com/ru/56236 .
Там вам помогут.

Второе.
Учимся вставлять код MQ4.
Ctrl + Alt + M
Ahmad Mehdiyev
478
Ahmad Mehdiyev 2014.01.16 17:18  
Вам нужна одна логическая часть которая проверяет "торговать/не торговать" и вторая "покупать/не покупать".
В вашем случае "условия торговли" это: 1) нет открытых позиций; 2) условие определения цены покупки; 3) новый бар;
Условий покупки 2 (!): 1) разрешение на торговлю на основе наличия условий торговли и 2) непосредственно пробитие ценой уровня открытия позиции.

То есть:

bool Active = false;
if ( ... условие(-ия) торговли.... ) {  // одно или несколько условий, можно вложить одно в другое с помощью нового if
	Active = true;
}

if (Active){                            // разрешение на торговлю на основе наличия условий торговли
	if ( ... условие покупки (или продажи)... ) { 
		OrderSend(...);
		Active=false;
	}
}

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

Поиск поможет найти приемлемое решение.

И уберите ваше b=10000; :)

Evgeniy Khaynatskas
228
Evgeniy Khaynatskas 2014.01.17 09:28  
понимаю достал уже но не подскажите как получить время закрытия последнего ордера что был исполнен
Ahmad Mehdiyev
478
Ahmad Mehdiyev 2014.01.17 10:09  
Вам в ветку "Полезные функции от Кима". Там это и не только это найдете.
Всеволод
648
Всеволод 2014.01.17 10:47  
Zver4991:
понимаю достал уже но не подскажите как получить время закрытия последнего ордера что был исполнен

Если закрывается советником по условиям, то время можно сохранять после OrderClose, если по TP/SL то функцией Кима.
Джони Браво
525
Джони Браво 2014.01.17 10:47  
pro_:
Вам в ветку "Полезные функции от Кима". Там это и не только это найдете.

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

Ссылочка вам, уважаемый https://forum.mql4.com/ru/38949 . :)
Vitalie Postolache
12115
Vitalie Postolache 2014.01.17 10:59  
Link_x:

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

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

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

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

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий