[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 174

 

Вот участок, где срабатывает ордер по рынку если не получается поставить лимитку. Может тут где-то собака "зарыта"? В тестере сработал :(

ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Blue);
if(ticket<1){// обработка ошибок
err=GetLastError();
if(err==147){// запрешение времени истечения
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Установка_ордера_с_рынка){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Ошибка установки ордера с рынка № ",err,
" тип ордера = BUY ",
" Цена открытия =",Ask,
" Цена = ",Ask,
" Стоплосс = ",sll,
" Тейкпрофит = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Установка_ордера_с_рынка){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Ошибка установки ордера с рынка № ",err,
" тип ордера = BUY ",
" Цена открытия =",Ask,
" Цена = ",Ask,
" Стоплосс = ",sll,
" Тейкпрофит = ",tpp);
}
}else{
}
}
Print("4 Ошибка установки ордера № ",err);
}
}
}
}
 

поставьте в начале функции
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS));

 
alsu:

поставьте в начале функции
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS));



Стоит вот в таком виде. Я не очень разбираюсь в коде к сожалению...

if(typ>0){
if(CountOpOrd(4,magic)<1){
if(buy!=0){
if(OpPrise(buy)){RefreshRates();
if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(buy-((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(buy-sl*Point*mno,Digits);}
if(tp>0){tpp=NormalizeDouble(buy+tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(buy+((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Blue);
if(ticket<1){// обработка ошибок
err=GetLastError();
if(err==147){// запрешение времени истечения
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Установка_ордера_с_рынка){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Ошибка установки ордера с рынка № ",err,
" тип ордера = BUY ",
" Цена открытия =",Ask,
" Цена = ",Ask,
" Стоплосс = ",sll,
" Тейкпрофит = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Установка_ордера_с_рынка){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Ошибка установки ордера с рынка № ",err,
" тип ордера = BUY ",
" Цена открытия =",Ask,
" Цена = ",Ask,
" Стоплосс = ",sll,
" Тейкпрофит = ",tpp);
}
}else{
}
}
Print("4 Ошибка установки ордера № ",err);
}
}
}
}
 

Логика путаная, не разобрать.

Эта строчка ничего не делает вообще :

if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);

надо бы разобраться сначала тем, кто это писал:))

А вообще поставьте мои строчки непосредственно перед открытием ордеров. Это в любом случае хуже не сделает, зато если ошибка останется, то будет ясно, что она из-за нарушения уровня стоплевела, т.к. у 130 ошибки других вариантов просто нет.

 
alsu:

Логика путаная, не разобрать.

Эта строчка ничего не делает вообще :

надо бы разобраться сначала тем, кто это писал:))

А вообще поставьте мои строчки непосредственно перед открытием ордеров. Это в любом случае хуже не сделает, зато если ошибка останется, то будет ясно, что она из-за нарушения уровня стоплевела, т.к. у 130 ошибки других вариантов просто нет.

https://www.mql5.com/ru/code/10111 - вот. Может тут найдется ответ...
 

Кривоват чуть-чуть советничек...

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

 
alsu:

Кривоват чуть-чуть советничек...

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


По крайней мере торгует :)

Баги есть, но не фатальные...

xrust на связь не выходит :(

Сам жду версию без багов. Может выложит...

 
каким образом вызывается табличка АЛЕРТ ? а то её биканье-бульканье раздается при подаче сигнала, а ее найти не могу (((...
 
Rossi:
каким образом вызывается табличка АЛЕРТ ? а то её биканье-бульканье раздается при подаче сигнала, а ее найти не могу (((...
Alert()
 
Подскажите пожалуйста как отобрать закрытый ордер? Суть в том что я хочу сделать так чтоб когда закрывается позиция( открытая вручную и позиция всегда будет одна - это максимум) чтоб играла музыка если ордел был в плюс то одна, если в минус то другая, если по нулям то третья. Прописать условия можно через OrderProfit.Только незнаю как вытянуть из истории последний закрытый ордер.
Причина обращения: