Скачать MetaTrader 5

Market Execution ошибка 130(Неправильные стопы)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Написал робота? Опубликуй его в Маркете и получай доход!
Evgeniy Takalov
494
Evgeniy Takalov 2011.07.07 23:31 
ёмаё делаю все как положено, открыть позицию OrderSend() затем OrderModify(), он один хер 130 выдает, че за на?
Evgeniy Takalov
494
Evgeniy Takalov 2011.07.07 23:33  
поясню, открываю позицию со стопами 0... 130 возвращает OrderModify()
Evgeniy Takalov
494
Evgeniy Takalov 2011.07.07 23:49  
И, кстати еще кое что.... Добавьте MIME-тип "application/octet-stream" к файлам MQ4, а то некоторые дебильные арбузы(как у меня) вызывают несуществующий плагин))
PapaYozh
3768
PapaYozh 2011.07.08 07:11  
Evgeno:
ёмаё делаю все как положено, открыть позицию OrderSend() затем OrderModify(), он один хер 130 выдает, че за на?

Передаваемые в функцию цены нормализуйте.
Evgeniy Takalov
494
Evgeniy Takalov 2011.07.08 07:39  

PapaYozh:

Передаваемые в функцию цены нормализуйте.


if(MarketExec==true){
Tick=OrderSend(Symb,OP_SELL,Vol,Bid,Slippage,0,0);
OrderSelect(Tick,SELECT_BY_TICKET);
Sleep(2000);
OrderModify(Tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),0);
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}

Всеравно так же
Дмитрий
1460
Дмитрий 2011.07.08 07:51  
Читайте документацию, которая прямо в Метаидиторе.
Дмитрий
1460
Дмитрий 2011.07.08 07:52  
Evgeno:


if(MarketExec==true){
Tick=OrderSend(Symb,OP_SELL,Vol,Bid,Slippage,0,0);
OrderSelect(Tick,SELECT_BY_TICKET);
Sleep(2000);
OrderModify(Tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),0);
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}

Всеравно так же
Неверно вызываете Ордерсенд, стопы пропущены.
Роман
7939
Роман 2011.07.08 07:55  
Evgeno:


if(MarketExec==true){
Tick=OrderSend(Symb,OP_SELL,Vol,Bid,Slippage,0,0);
OrderSelect(Tick,SELECT_BY_TICKET);
Sleep(2000);
OrderModify(Tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),0);
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}

Всеравно так же

Посмотрите порядок организации всех торговых ф-ий, особенно последней ф-ии (трала) на этой страничке учебника - у Вас отсутствуют необходимые проверки мин дистанций модифицируемых ордеров соответствия требованиям и ограничениям проведения торговых операций.
Evgeniy Takalov
494
Evgeniy Takalov 2011.07.08 08:00  

int OpBuy(string Symb="",double Vol=NULL,int StLs=-1,int TkPr=-1,string Snd=""){
Fncs++;
if(Reverse==true) CloseSells();
if(Symb=="") Symb=Symbol();
if(StLs==-1) StLs=StopLoss;
if(TkPr==-1) TkPr=TakeProfit;
if(Vol==NULL) Vol=Lots;
double SL=0;
double TP=0;
int Tick=0;
if(StLs>0 && StLs<MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift) StLs=MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift;
if(TkPr>0 && TkPr<MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift) TkPr=MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift;
RefreshRates();
if(StLs>0) SL=Ask-StLs*Point;
if(TkPr>0) TP=Ask+TkPr*Point;
//ReqOn();
ReqOn("Запрос на сервер");
if(MarketExec==true){
Tick=OrderSend(Symb,OP_SELL,Vol,Bid,Slippage,0,0);
OrderSelect(Tick,SELECT_BY_TICKET);
Sleep(2000);
OrderModify(Tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),0);
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}
for(int i=1;i<=Requots;i++){
Reqs++;

Tick=OrderSend(Symb,OP_BUY,Vol,Ask,Slippage,SL,TP);
if(Tick>0){
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
ReqOn("Запрос на сервер","Открыт BUY!","",1000);
return(Tick);
}
else{
if(GetLastError()!=135){
Error(GetLastError());
return(0);
}
}
ReqOn("Запрос на сервер","РЕКВОТ! Попытка № "+DoubleToStr(i+1,0));
}
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}

Вот полная функция

Alexander
2441
Alexander 2011.07.08 08:37  
Evgeno:

int OpBuy(string Symb="",double Vol=NULL,int StLs=-1,int TkPr=-1,string Snd=""){
Fncs++;
if(Reverse==true) CloseSells();
if(Symb=="") Symb=Symbol();
if(StLs==-1) StLs=StopLoss;
if(TkPr==-1) TkPr=TakeProfit;
if(Vol==NULL) Vol=Lots;
double SL=0;
double TP=0;
int Tick=0;
if(StLs>0 && StLs<MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift) StLs=MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift;
if(TkPr>0 && TkPr<MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift) TkPr=MarketInfo(Symbol(),MODE_STOPLEVEL)+LevelShift;
RefreshRates();
if(StLs>0) SL=Ask-StLs*Point;
if(TkPr>0) TP=Ask+TkPr*Point;
//ReqOn();
ReqOn("Запрос на сервер");
if(MarketExec==true){
Tick=OrderSend(Symb,OP_SELL,Vol,Bid,Slippage,0,0);
OrderSelect(Tick,SELECT_BY_TICKET);
Sleep(2000);
OrderModify(Tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),0);
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}
for(int i=1;i<=Requots;i++){
Reqs++;

Tick=OrderSend(Symb,OP_BUY,Vol,Ask,Slippage,SL,TP);
if(Tick>0){
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
ReqOn("Запрос на сервер","Открыт BUY!","",1000);
return(Tick);
}
else{
if(GetLastError()!=135){
Error(GetLastError());
return(0);
}
}
ReqOn("Запрос на сервер","РЕКВОТ! Попытка № "+DoubleToStr(i+1,0));
}
if(UseSound==true) PlaySound(SND_Order);
MaskOn();
return(Tick);
}

Вот полная функция

Типа, заходим, чтобы купить, все для этого готовим, а потом - бац! и продаем.
Роман
7939
Роман 2011.07.08 08:44  
Roger:
Типа, заходим, чтобы купить, все для этого готовим, а потом - бац! и продаем.

Да... :-))) Это мошь просто фишка такая - работаем на отбой... :-))) (включаем реверс) - типа как торги по 5-ти измерениям Б.Вильямса - я делал прямую (на трендовых инструментах - доливаемся по тренду) и обратную версию(на флетовых типа EURGBP)...(работаем в канале - где раньше покупали сейчас продаем...:-)))
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий