input int Distance=300; input int History=3; input int MagicNumber=123; void OnTick() { for(int i=OrdersTotal()-1; i>=0; i--) DoTrailOrder(i,MagicNumber,Distance,History,Symbol(),0); } //трейлинг рыночных ордеров, стоплосс держится на расстоянии Distance от самой экстремальной тени из последних History баров int DoTrailOrder(int ePosition, int eMagicNumber, int eDistance, int eHistory, string eSymbol, int eTimeFrame) { if(!OrderSelect(ePosition,SELECT_BY_POS,MODE_TRADES)) return(1); int eType=OrderType(); if(eType!=OP_BUY && eType!=OP_SELL) return(0); if(OrderMagicNumber()!=eMagicNumber) return(0); if(OrderSymbol()!=eSymbol) return(0); //наблюдаем начиная с бара следующим за баром открытия if(iBarShift(eSymbol,eTimeFrame,OrderOpenTime())==0) return(0); int eDigits=(int)MarketInfo(eSymbol,MODE_DIGITS); double ePoint=MarketInfo(eSymbol,MODE_POINT); double eSpread=MarketInfo(eSymbol,MODE_SPREAD); double eExtremum; if(eType==OP_BUY) { //стоп устанавливается на расстоянии eDistance от самой низкой тени бара из истории eHistory eExtremum=iLow(eSymbol,eTimeFrame,iLowest(eSymbol,eTimeFrame,MODE_LOW,eHistory,1)); //расстояние от минимума до StopLoss должно превысить TrailingLevel if(NormalizeDouble(eExtremum-OrderStopLoss(),eDigits)<=eDistance*ePoint) return(0); //расстояние от минимума до цены открытия должно превысить TrailingLevel if(NormalizeDouble(eExtremum-OrderOpenPrice(),eDigits)<=eDistance*ePoint) return(0); //новый стоп должен быть не ближе к текущей цене, чем на два спреда if(NormalizeDouble(MarketInfo(eSymbol,MODE_BID)+eDistance*ePoint-eExtremum,eDigits)<=2*eSpread*ePoint) return(0); if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(eExtremum-eDistance*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(),clrBlue)) return(-1); } if(eType==OP_SELL) { //стоп устанавливается на расстоянии eDistance от самой высокой тени бара из истории eHistory eExtremum=iHigh(eSymbol,eTimeFrame,iHighest(eSymbol,eTimeFrame,MODE_HIGH,eHistory,1)); if(NormalizeDouble(OrderStopLoss()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint && OrderStopLoss()!=0) return(0); if(NormalizeDouble(OrderOpenPrice()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint) return(0); //один спред между Ask и Bid сократился if(NormalizeDouble(eExtremum+eDistance*ePoint-MarketInfo(eSymbol,MODE_ASK),eDigits)<=eSpread*ePoint) return(0); if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(eExtremum+(eDistance+eSpread)*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(),clrRed)) return(-1); } return(0); }
Это был Трейл, старт, шаг в эксперте. например https://www.mql5.com/ru/job/172661.Открывайте ордера как на картинке. нет индикатора. использовать весь трейл уровня, проверяя все ручные ордера с трейлинг-стопом, стартом, шагом для открытых трейдеров с магическим номером (mt4) программно.

- 2022.06.24
- www.mql5.com
если я должен проверять каждый заказ, это процесс проверки следа? (мт4). Спасибо. В целом, как используется трейлинг-стоп, старт, шаг? и когда вместо просто трейлинг-стопа.программно спасибо
Обычно настаиваю на использовании здесь русского языка, но здесь особый случай, ничего не понять.
Продублируйте, пожалуйста, на своём родном языке.
Переводчик у Вас слабенький.
It was a trail, a start, a step in the expert. for example https://www.mql5.com/en/job/172661 . Open orders as in the picture. no indicator. use the entire level trail by checking all manual orders with trailing stop, start, step for open traders with magic number (mt4) programmatically.
if i have to check every order, is this the trail check process? (mt4). Thank you. In general, how is trailing stop, start, step used? and when instead of just a trailing stop. programmatically thanks

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