s7_up_bot_1.00.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «s7_up_bot_1.00.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
S7 UP Bot — советник для MetaTrader 4, автоматически открывающий и управляющий торговыми позициями на текущем графике. Советник анализирует поведение цены, сравнивая минимумы и максимумы двух соседних баров, и при выполнении условий открывает позиции BUY или SELL. Поддерживаются фиксация прибыли через TakeProfit, защита через StopLoss, трейлинг-стоп, перенос стоп-лосса в безубыток, а также автоматическое закрытие позиций при неблагоприятном движении или развороте цены.
Внутренняя инициализация проверяет корректность настроек TakeProfit и StopLoss относительно минимального уровня стопа на рынке, а также автоматически масштабирует параметры для 3- и 5-значных котировок. Торговые операции выполняются через стандартный OrderSend с контролем проскальзывания и количества попыток. Советник использует MagicNumber для идентификации своих ордеров и ограничивает количество одновременно открытых позиций.
Настройки программы
| Настройка | Описание |
|---|---|
| separator1 | Текстовый разделитель групп настроек торговли |
| TakeProfit | Уровень фиксации прибыли в пунктах для открытых позиций |
| StopLoss | Уровень стоп-лосса в пунктах для открытых позиций. Если задано 0, стоп-лосс устанавливается автоматически на основе параметра HLdivergence |
| HLdivergence | Пороговое значение расхождения в пунктах для сравнения минимумов или максимумов двух соседних баров при определении условий входа в позицию |
| SpanPrice | Расстояние от экстремума текущего бара до текущей цены в пунктах, определяющее условие для открытия позиции |
| Lots | Объём торговой позиции, задаваемый в лотах |
| MaxTrades | Максимальное количество одновременно открытых позиций, которые советник допускает на счёте |
| Slippage | Допустимое проскальзывание цены в пунктах при исполнении рыночных ордеров |
| MagicNumber | Идентификационный номер для отбора и управления ордерами, принадлежащими данному советнику |
| separator2 | Текстовый разделитель групп настроек выхода |
| TrailingStop | Включает или выключает функцию трейлинг-стопа, которая перемещает стоп-лосс вслед за ценой в сторону прибыли |
| TrailStopLoss | Расстояние в пунктах от текущей цены, на которое перемещается стоп-лосс при активном трейлинг-стопе |
| ZeroTrailingStop | Включает или выключает функцию переноса стоп-лосса в безубыток (нулевой уровень или заданный StopLoss) |
| StepTrailing | Минимальный шаг в пунктах, на который должен сдвинуться стоп-лосс при переносе в безубыток, чтобы сработала корректировка |
| OutputAtLower | Переключатель автоматического закрытия позиций при неблагоприятном движении цены ниже или выше уровня предыдущего бара |
| OutputAtRevers | Переключатель автоматического закрытия позиций при появлении сигнала разворота цены по аналогии с условиями входа |
| SpanToRevers | Расстояние от экстремума текущего бара до текущей цены в пунктах, используемое для определения сигнала разворота при закрытии позиции |
Поиск по коду файла
#property version "1.00"
#property description "???????? ?? ??????? - ???? ?? ?????? ????"
#define BUY 0 // ???????? ??????????????? ?????????? ?? ????????? 0
#define SEL 1 // ???????? ??????????????? ?????????? ?? ????????? 1
extern string separator1 ="------ start trade settings ------";
extern int TakeProfit =30; // ??????? TakeProfit
extern int StopLoss =0; // ??????? StopLoss (if 0 then auto)
extern double HLdivergence =0.1; // ?????. ?????????? ???? ???????? ????? ??? ?????
extern double SpanPrice =6; // ?????? ?? ?????????? ?????? ??? ???????? ??????
extern double Lots =0.01; // ?????? ??????
extern int MaxTrades =1; // ????. ???-?? ???????????? ???????? ???????
extern int Slippage =5; // ???????????????
extern int MagicNumber =140804; // ????? ?????????
extern string separator2 ="------ output settings ------";
extern bool TrailingStop =false; // ???? ?????? ???????? ???????
extern int TrailStopLoss =20; // ??????? ????? StopLoss
extern bool ZeroTrailingStop =false; // ???? ?????? ?? ?????? ??
extern double StepTrailing =0.5; // ??? ????? ??????
extern bool OutputAtLower =false; // ????? ??? ???????? ???? ??????????? ????
extern bool OutputAtRevers =false; // ????? ??? ?????????? ??????
extern double SpanToRevers =3; // ?????? ?? ???????????? ?????? ??? ???????? ??????
int expertBars;
void OnInit() {
// код доступен только после оплаты
}
void OnDeinit(const int reason) {
return;}
void OnTick() {
// код доступен только после оплаты
}
int CountOrders() {int count=0;
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==MagicNumber) {
if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++;}}
return(count);}
bool NextTrade() {int count=0;
if(OrdersTotal()==0) return true;
for(int i=OrdersTotal()-1; i >= 0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
if(OrderMagicNumber()==MagicNumber) {
if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
if(OrderOpenTime()<Time[0])
return true;}}}}
return false;}
bool StartTrade(int typ) {
if(typ==BUY) {
if(MathAbs(Low[0]-Low[1])<Point*HLdivergence)
if(Bid-Low[0]>Point*SpanPrice && Bid-Low[0]<Point*SpanPrice*1.5) return true;}
if(typ==SEL) {
if(MathAbs(High[0]-High[1])<Point*HLdivergence)
if(High[0]-Bid>Point*SpanPrice && High[0]-Bid<Point*SpanPrice*1.5) return true;}
return false;}
bool OpenOrders(int typ) {
double price=0,SL=0,TP=0,spread=0; // ??????? ?????????? ??? ????
int p=0,ticket=-1; // ? ??????? ??????? ???????? ???????
if(typ==BUY) { // ???? ?? ????? ??????? ????? ?? ???????
price=NormalizeDouble(Ask,Digits); // ???????? ???? ??? ??? ???????? ? ????? ?? ?? ??????????? ??? 4 ??? 5 ?????? ?????????????
if (StopLoss>0) SL=NormalizeDouble(Bid-Point*StopLoss,Digits);
else SL=NormalizeDouble(Low[0]-Point*HLdivergence,Digits);
TP=NormalizeDouble(Ask+Point*TakeProfit,Digits);}
if(typ==SEL) { // ???? ?? ????? ??????? ????? ?? ???????
price=NormalizeDouble(Bid,Digits); // ???????? ???? ??? ??? ???????? ? ????? ?? ?? ??????????? ??? 4 ??? 5 ?????? ?????????????
spread=MarketInfo(_Symbol,MODE_SPREAD);
if (StopLoss>0) SL=NormalizeDouble(Ask+Point*StopLoss,Digits);
else SL=NormalizeDouble(High[0]+Point*HLdivergence+Point*spread,Digits);
TP=NormalizeDouble(Bid-Point*TakeProfit,Digits);}
if(IsTradeAllowed()) // ????????, ???????? ?? ????? ????????? ? ????? ?? ?? ???????Показано первые 50% кода (символов: 7171)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.