Natashe4ka:
Наталья попробуйте так Неее, трал не нужен.
Работает NoLoss, стоп не движется за ценой а стоит на месте.
Старый NoLoss надо переместить на более свежий.
void OnTick()
{
if(LastSL<NewSL) ModifySL(_Symbol,NewSL);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void ModifySL(string symbol,double sl)
{
if(sl<=0)return;
bool res;
double price=0.0;
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
if(bid<=0.0)return;
if(ask<=0.0)return;
int total=OrdersTotal();
for(int i=0; i<total; i++)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=Magic)continue;
if(OrderSymbol()!=symbol)continue;
if(OrderType()>1)continue;
if(OrderStopLoss()!=0)
{
if(sl==OrderStopLoss())continue;
res=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0);
if(!res)
{
int error=GetLastError();
rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," №- ",error);
Print(rezult);
}
}
}
}
//+------------------------------------------------------------------+
....
{
if(LastSL<NewSL) ModifySL(_Symbol,NewSL);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void ModifySL(string symbol,double sl)
{
if(sl<=0)return;
bool res;
double price=0.0;
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
if(bid<=0.0)return;
if(ask<=0.0)return;
int total=OrdersTotal();
for(int i=0; i<total; i++)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=Magic)continue;
if(OrderSymbol()!=symbol)continue;
if(OrderType()>1)continue;
if(OrderStopLoss()!=0)
{
if(sl==OrderStopLoss())continue;
res=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0);
if(!res)
{
int error=GetLastError();
rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," №- ",error);
Print(rezult);
}
}
}
}
//+------------------------------------------------------------------+
Sergey Gritsay:
Наталья попробуйте так
....
Наталья попробуйте так
....
Спасибо.
Стоп перемещает, но мешает моим стопам устанавливаться, пропускает потом ставит и потом перемещает (как то ругаются они в общем).
NewSL правильно у меня определён ?
for(i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
NewSL=NormalizeDouble(OrderStopLoss(),Digits);
}
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
NewSL=NormalizeDouble(OrderStopLoss(),Digits);
}
Natashe4ka:
Так как вы не выкладываете свой код полностью, трудно что-то писать не зная что у вас там твориться. Лучше записывать NewSL для ордера при открытии ордера, надеюсь Стоп лосс у вас как-то рассчитывается перед открытием. То действия примерно такие. Спасибо.
Стоп перемещает, но мешает моим стопам устанавливаться, пропускает потом ставит и потом перемещает (как то ругаются они в общем).
NewSL правильно у меня определён ?
for(i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
NewSL=NormalizeDouble(OrderStopLoss(),Digits);
}
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
NewSL=NormalizeDouble(OrderStopLoss(),Digits);
}
tiket=OrderSend();
if(tiket>0)NewSL=NormalizeDouble(Значение расчетного стоплосса,Digits);
тут первый код модификации стопов, если они у вас устанавливаються не в OrderSend()
далее функция которую я вам привел для примера.
...
if(tiket>0)NewSL=NormalizeDouble(Значение расчетного стоплосса,Digits);
тут первый код модификации стопов, если они у вас устанавливаються не в OrderSend()
далее функция которую я вам привел для примера.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как переместить StopLoss ?