rutka1_50smma.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rutka1_50smma.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
rutka1_50smma — это торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник рассчитывает уровни входа и стоп-лосса на основе сглаженной скользящей средней (SMMA) периода 13, построенной по ценам High и Low, и размещает отложенные ордера BUYSTOP и SELLSTOP.
При формировании ордеров учитывается текущий спред, заданное расстояние в пунктах (PipDifference) и уровень тейк-профита (TakeProfit). Лот рассчитывается автоматически на основе свободного маркса и параметра MaximumRisk. Советник также отслеживает уже открытые позиции и отложенные ордера с magic number 16384, при необходимости модифицируя или удаляя их.
Управление рисками включает в себя функцию TrailingStop для перемещения стоп-лосса по рынку в сторону прибыли, а также проверку достаточности средств на счёте перед открытием новых позиций. Если свободный маркс недостаточен или количество баров на графике менее 100, советник прерывает работу.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Расстояние в пунктах до уровня тейк-профита от цены входа. Значение по умолчанию — 850. |
| TrailingStop | Расстояние в пунктах для активации перемещения стоп-лосса по рынку в сторону прибыли. Значение по умолчанию — 850. |
| PipDifference | Смещение в пунктах для установки цен входа и выхода относительно уровней SMMA. Значение по умолчанию — 25. |
| Lots | Размер лота для открытия позиции. Значение по умолчанию — 0.1. |
| MaximumRisk | Параметр риска, используемый для автоматического расчёта размера лота на основе свободного маркса. Значение по умолчанию — 10. |
Поиск по коду файла
extern int TakeProfit = 850;
extern int TrailingStop = 850;
extern int PipDifference = 25;
extern double Lots = 0.1;
extern double MaximumRisk = 10;
int start(){
// код доступен только после оплаты
}
int cnt, ticket;
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(TakeProfit<10){
Print("TakeProfit less than 10");
return(0);
}
string TradeSymbol = Symbol();
double MA13H = MathRound(iMA(NULL,0,13,0,MODE_SMMA,PRICE_HIGH,0)/Point)*Point;
double MA13L = MathRound(iMA(NULL,0,13,0,MODE_SMMA,PRICE_LOW,0)/Point)*Point;
double Spread = Ask-Bid; // MarketInfo(TradeSymbol,MODE_SPREAD);
double BuyPrice =MA13H + Spread+PipDifference*Point;
double BuyStopLoss =MA13L - Point;
double BuyTakeProfit =MA13H +(PipDifference+TakeProfit)*Point;
double SellPrice =MA13L -(PipDifference)*Point;
double SellStopLoss =MA13H + Spread+Point;
double SellTakeProfit=MA13L - Spread-(PipDifference+TakeProfit)*Point;
double lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/50000,1);
double close=iClose(NULL,0,0);
int total=OrdersTotal();
bool need_long = true;
bool need_short = true;
for(cnt=0;cnt<total;cnt++) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber() == 16384){
if(OrderType() == OP_BUYSTOP){
need_long = false;
if (OrderStopLoss()!=BuyStopLoss){
Print(BuyStopLoss, " ",OrderStopLoss());
OrderModify(OrderTicket(),BuyPrice,BuyStopLoss,BuyTakeProfit,0,Green);
}
}
if(OrderType() == OP_SELLSTOP){
need_short = false;
if (OrderStopLoss()!=SellStopLoss){
Print(SellStopLoss, " ",OrderStopLoss());
OrderModify(OrderTicket(),SellPrice,SellStopLoss,SellTakeProfit,0,Green);
}
}
Показано первые 50% кода (символов: 2709)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.