MR.dollar EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mr dollar_pending orders ea v6.1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
MR.dollar EA — торговый советник для MetaTrader 4, специализирующийся на автоматическом управлении отложенными и рыночными ордерами. Советник поддерживает четыре типа отложенных ордеров (BuyStop, BuyLimit, SellStop, SellLimit) с настраиваемыми объёмами, дистанциями, тейк-профитами и стоп-лоссами. Он позволяет открывать ордера в заданные часы, фильтровать сделки по дням недели, использовать трейлинг-стоп и закрывать позиции при достижении целевой прибыли или убытка.
В основе работы лежит обработка тиков (OnTick), при каждом из которых советник проверяет рыночные условия, управляет существующими ордерами и при необходимости открывает новые. Поддерживается функция хеджирования первого ордера, а также повторное открытие закрытых позиций. Магический номер MagicNumber обеспечивает идентификацию ордеров, принадлежащих данному советнику.
Настройки программы
| Настройка | Описание |
|---|---|
| UseHourTrade | Включает фильтр торговых часов: ордера открываются только в заданном интервале. |
| FromHourTrade | Начальный час торгового интервала. |
| ToHourTrade | Конечный час торгового интервала. |
| OpenHedgeFirstTime | Открывает хеджирующие ордера при первом запуске советника. |
| HedgeLots | Объём лота для хеджирующего ордера при первом открытии. |
| HedgeTP | Тейк-профит для хеджирующих ордеров в пунктах. |
| HedgeSL | Стоп-лосс для хеджирующих ордеров в пунктах. |
| AddOrdersAfterClose | Разрешает повторно открывать ордера после закрытия текущих позиций. |
| ReverseClosedOrders | Открывает обратные ордера при повторном открытии после закрытия. |
| CloseIfLastOrderProfit | Автоматически закрывает все ордера, если последнее ордер было прибыльным. |
| S1 | Заголовок раздела настроек BuyStop-ордеров. |
| OpenBuyStopOrders | Включает или отключает открытие BuyStop-ордеров. |
| NumberOfBuyStopOrders | Количество BuyStop-ордеров для открытия. |
| BuyStopFirstLot | Начальный объём лота для первого BuyStop-ордера. |
| DistanceFromCurrentPriceBS | Дистанция от текущей цены до первого BuyStop-ордера в пунктах. |
| DistanceBetweenBuyS | Дистанция между BuyStop-ордерами в пунктах. |
| Distance_AddBuyS | Дополнительная дистанция между BuyStop-ордерами в пунктах. |
| BuyStopTakeProfit | Тейк-профит для BuyStop-ордеров в пунктах. |
| BuyStopSL | Стоп-лосс для BuyStop-ордеров в пунктах. |
| S2 | Заголовок раздела настроек BuyLimit-ордеров. |
| OpenBuyLimitOrders | Включает или отключает открытие BuyLimit-ордеров. |
| NumberOfBuyLimitOrders | Количество BuyLimit-ордеров для открытия. |
| BuyLimitFirstLot | Начальный объём лота для первого BuyLimit-ордера. |
| DistanceFromCurrentPriceBL | Дистанция от текущей цены до первого BuyLimit-ордера в пунктах. |
| DistanceBetweenBuyL | Дистанция между BuyLimit-ордерами в пунктах. |
| Distance_AddBuyL | Дополнительная дистанция между BuyLimit-ордерами в пунктах. |
| BuyLimitTakeProfit | Тейк-профит для BuyLimit-ордеров в пунктах. |
| BuyLimitSL | Стоп-лосс для BuyLimit-ордеров в пунктах. |
| S3 | Заголовок раздела настроек SellStop-ордеров. |
| OpenSellStopOrders | Включает или отключает открытие SellStop-ордеров. |
| NumberOfSellStopOrders | Количество SellStop-ордеров для открытия. |
| SellStopFirstLot | Начальный объём лота для первого SellStop-ордера. |
| DistanceFromCurrentPriceSS | Дистанция от текущей цены до первого SellStop-ордера в пунктах. |
| DistanceBetweenSellS | Дистанция между SellStop-ордерами в пунктах. |
| Distance_AddSellS | Дополнительная дистанция между SellStop-ордерами в пунктах. |
| SellStopTakeProfit | Тейк-профит для SellStop-ордеров в пунктах. |
| SellStopSL | Стоп-лосс для SellStop-ордеров в пунктах. |
| S4 | Заголовок раздела настроек SellLimit-ордеров. |
| OpenSellLimitOrders | Включает или отключает открытие SellLimit-ордеров. |
| NumberOfSellLimitOrders | Количество SellLimit-ордеров для открытия. |
| SellLimitFirstLot | Начальный объём лота для первого SellLimit-ордера. |
| DistanceFromCurrentPriceSL | Дистанция от текущей цены до первого SellLimit-ордера в пунктах. |
| DistanceBetweenSellL | Дистанция между SellLimit-ордерами в пунктах. |
| Distance_AddSellL | Дополнительная дистанция между SellLimit-ордерами в пунктах. |
| SellLimitTakeProfit | Тейк-профит для SellLimit-ордеров в пунктах. |
| SellLimitSL | Стоп-лосс для SellLimit-ордеров в пунктах. |
| S5 | Заголовок раздела настроек мультипликатора лотов. |
| UseMultiplier | Включает поэтапное увеличение лотов при открытии серии ордеров. |
| X_Multiplier | Тип мультипликатора: при включении лоты увеличиваются умножением, при выключении — суммированием. |
| Multiplier | Множитель для увеличения лотов при использовании мультипликатора. |
| S6 | Заголовок раздела настроек времени и цены открытия. |
| HighLowCandle | Использует максимум или минимум предыдущей свечи для расчёта цены открытия ордера. |
| OpenAtChoosenHour | Разрешает открывать ордера только в заданный час. |
| Hour_ | Час, в который советник пытается открывать ордера. |
| StartPrice | Начальная цена для расчёта дистанции ордеров. Если равна 0, используется текущая цена. |
| Gap | Допустимый диапазон цены закрытия свечи для открытия ордера от StartPrice. |
| OnlyOnce | Разрешает открыть ордера только один раз за сессию советника. |
| S7 | Заголовок раздела настроек закрытия и удаления ордеров. |
| FridayOpenOrdersFilter | Фильтрует открытие ордеров в пятницу, не позволяя открывать их после заданного часа. |
| FridayDeleteOrders | Удаляет все отложенные ордера в пятницу в заданный час. |
| FridayCloseOrders | Закрывает все открытые ордера в пятницу в заданный час. |
| _Hour | Час, после которого в пятницу закрываются или удаляются ордера. |
| CloseAfterPassMinutes | Разрешает закрывать ордера по истечении заданного количества минут. |
| MinutesPass | Количество минут после открытия ордера, по истечении которых он может быть закрыт. |
| CloseOrdersAfterProfit | Закрывает все ордера при достижении прибыли, равной значению Profit. |
| DeleteOrdersAfterProfit | Удаляет все отложенные ордера при достижении прибыли, равной значению Profit. |
| Profit | Значение прибыли (в валюте счёта), при достижении которого ордера закрываются или удаляются. |
| CloseOrdersAfterLoss | Закрывает все ордера при достижении убытка, равного значению Loss. |
| Loss | Значение убытка (в валюте счёта), при достижении которого ордера закрываются. |
| S8 | Заголовок раздела настроек управления ордерами. |
| TrailingStop | Расстояние трейлинг-стопа в пунктах от текущей цены. |
| TrailingProfit | Прибыль в пунктах, необходимая для активации трейлинг-стопа. |
| TrailingStep | Шаг трейлинг-стопа в пунктах. |
| S9 | Заголовок раздела временных фильтров. |
| FridayCloseEA | Полностью останавливает советник в пятницу в заданный час. |
| Friday_CloseHour | Час закрытия ордеров или советника в пятницу. |
| MagicNumber | Магический номер для идентификации ордеров, открытых советником. |
Поиск по коду файла
input bool UseHourTrade = false;
input int FromHourTrade = 7;
input int ToHourTrade = 17;
input bool OpenHedgeFirstTime=false;
input double HedgeLots=0.1;
input int HedgeTP=0;
input int HedgeSL=0;
input bool AddOrdersAfterClose=true;
input bool ReverseClosedOrders=false;
input bool CloseIfLastOrderProfit=false;
input string S1="BuyStop Orders Settings ";
input bool OpenBuyStopOrders=true;
input int NumberOfBuyStopOrders=50;
input double BuyStopFirstLot=0.1;
input int DistanceFromCurrentPriceBS=0;
input int DistanceBetweenBuyS=20;
input int Distance_AddBuyS=0;
input int BuyStopTakeProfit=0;
input int BuyStopSL=0;
input string S2="BuyLimit Orders Settings";
input bool OpenBuyLimitOrders=true;
extern int NumberOfBuyLimitOrders=50;
input double BuyLimitFirstLot=0.1;
input int DistanceFromCurrentPriceBL=0;
input int DistanceBetweenBuyL=20;
input int Distance_AddBuyL=0;
input int BuyLimitTakeProfit=0;
input int BuyLimitSL=0;
input string S3="SellStop Orders Settings";
input bool OpenSellStopOrders=true;
input int NumberOfSellStopOrders=50;
input double SellStopFirstLot=0.1;
input int DistanceFromCurrentPriceSS=0;
input int DistanceBetweenSellS=20;
input int Distance_AddSellS=0;
input int SellStopTakeProfit=0;
input int SellStopSL=0;
input string S4="SellLimit Orders Settings";
input bool OpenSellLimitOrders=true;
input int NumberOfSellLimitOrders=50;
input double SellLimitFirstLot=0.1;
input int DistanceFromCurrentPriceSL=0;
input int DistanceBetweenSellL=20;
input int Distance_AddSellL=0;
input int SellLimitTakeProfit=0;
input int SellLimitSL=0;
input string S5=" Lots Multiplier ";
input bool UseMultiplier=true;
input bool X_Multiplier=true;
input double Multiplier=2;
input string S6=" Order Open Time/Price Settings ";
input bool HighLowCandle=false;
input bool OpenAtChoosenHour=false;
input int Hour_=12;
input double StartPrice=0;
input int Gap=3;
input bool OnlyOnce=false;
input string S7=" Close and Delete Orders ";
input bool FridayOpenOrdersFilter=true;
input bool FridayDeleteOrders=false;
input bool FridayCloseOrders=false;
input int _Hour=20;
input bool CloseAfterPassMinutes=false;
input int MinutesPass=100;
input bool CloseOrdersAfterProfit=true;
input bool DeleteOrdersAfterProfit=true;
input int Profit=200;
input bool CloseOrdersAfterLoss=false;
input double Loss=-200;
input string S8=" Order Management";
input int TrailingStop=0;
input int TrailingProfit=0;
input int TrailingStep=0;
input string S9="Time Filter";
input bool FridayCloseEA=false;
input int Friday_CloseHour=20;
bool enter;
double point;double Price;
int digits;int i,Q,Qq;
extern int MagicNumber=2533;
void OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
Comment("");
}
int orderscnt()
{
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
cnt++;
}
}
}
return(cnt);
}
int ordersPen()
{
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()>OP_SELL){
cnt++;
}
}
}
return(cnt);
}
int orders(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL){
cnt++;
}
}
}
return(cnt);
}
void OnTick()
{
// код доступен только после оплаты
}
Comment("Programmed by MR.dollar"+"\n"+"Arabic Traders Forum"+"\n"+"www.arabictrader.com/vb"+"\n"+
"Number Of Pending Orders = "+ordersPen()+"\n"+"Number Of Market Orders = "+orders()+"\n"+
"Account Free Margin = "+DoubleToStr(AccountFreeMargin(),2)+"\n"+"Profit Value = "+DoubleToStr(AccountProfit(),2));
bool ss=true;
if(Qq+Q==orderscnt()&&!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))&&UseHourTrade){
DeletePendingOrders();
}
if (UseHourTrade){
if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
TimeHour(TimeCurrent()) < ToHourTrade))){
Comment("Non-Trading Hours!");
ss=false;
}
}
if(TrailingStop>0)MoveTrailingStop();
if(FridayCloseEA&&Hour()>=Friday_CloseHour&&DayOfWeek()==5)
return;
if(AddOrdersAfterClose&&orderscnt()>0){
OpenClosedOrders();
}
int totalNumber=0;
if(ss==true&&orderscnt()<1&&(OnlyOnce==false||enter==true)&&(FridayOpenOrdersFilter==false||DayOfWeek()!=5||Hour()<_Hour)&&(Hour()==Hour_||OpenAtChoosenHour==false)){
double lastlot;double newlot;double TP,SL;
lastlot=0;
if(OpenHedgeFirstTime)
{
if(HedgeSL==0){SL=0;}else{SL=Ask-HedgeSL*point;}
if(HedgeTP==0){TP=0;}else{TP=Ask+HedgeTP*point;}
OrderSend(Symbol(),OP_BUY,HedgeLots,NormalizeDouble(Ask,Digits),3*Q,NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Blue);
if(HedgeSL==0){SL=0;}else{SL=Bid+HedgeSL*point;}
if(HedgeTP==0){TP=0;}else{TP=Bid-HedgeTP*point;}
OrderSend(Symbol(),OP_SELL,HedgeLots,NormalizeDouble(Bid,Digits),3*Q,NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Red);
}
if(OpenSellLimitOrders){
for(i=1;i<=NumberOfSellLimitOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}
else{newlot=lastlot+SellLimitFirstLot;}
}
else{newlot=SellLimitFirstLot;}
if(newlot==0){newlot=SellLimitFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Bid+(DistanceFromCurrentPriceSL*point)+(i*DistanceBetweenSellL*point+i*Distance_AddSellL*point);}
else{Price=StartPrice+(DistanceFromCurrentPriceSL*point)+(i*DistanceBetweenSellL*point);}
if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceSL*point)+(i*DistanceBetweenSellL*point);}
if(SellLimitTakeProfit==0){TP=0;}else{TP=Price-SellLimitTakeProfit*point;}
if(SellLimitSL==0){SL=0;}else{SL=Price+SellLimitSL*point;}
if((StartPrice==0&&HighLowCandle==false)||(HighLowCandle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL,TP,"MR.dollarEA"+totalNumber+"_",MagicNumber,0,Red);
totalNumber++;
}
}
}
lastlot=0;
if(OpenBuyLimitOrders){
for(i=1;i<=NumberOfBuyLimitOrders;i++)
{
if(UseMultiplier){
if(X_Multiplier){
newlot=Multiplier*lastlot;
}
else{newlot=lastlot+BuyLimitFirstLot;}
}
else{newlot=BuyLimitFirstLot;}
if(newlot==0){newlot=BuyLimitFirstLot;}
lastlot=newlot;
if(StartPrice==0){Price=Ask-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point+i*Distance_AddBuyL*point);}
else{Price=StartPrice-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*poinПоказано первые 50% кода (символов: 13499)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.