mission impossible power two open version 2.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mission impossible power two open version 2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник для платформы MetaTrader 4 реализует торговую стратегию, основанную на анализе направления свечей предыдущего бара. Он автоматически открывает позиции на покупку или продажу и управляет ими в рамках одной торговой сессии.
Советник поддерживает работу с несколькими позициями одновременно, используя сеточную логику для наращивания объёма при движении цены. Каждая позиция идентифицируется магическим номером, что позволяет фильтровать ордера именно этого советника.
Для управления рисками применяются уровни стоп-лосса и тейк-профита, настраиваемые пользователем. Размер лота рассчитывается с учётом ограничений брокера и заданного максимального значения. Перед открытием каждой сделки проверяется доступный маржинальный капитал и допустимое количество ордеров.
Настройки программы
| Настройка | Описание |
|---|---|
| Comment (comment) | Комментарий — Текстовая строка, добавляемая к ордерам для идентификации. |
| Slippage (slippage) | Проскальзывание — Максимально допустимое отклонение цены при открытии ордера. |
| Magic Number (MagicNumber) | Магический номер — Идентификатор ордеров советника для их фильтрации. |
| Stop Loss (SL) | Стоп-лосс — Уровень стоп-лосса в пунктах для управления рисками. |
| Take Profit (first position) (TP1) | Тейк-профит первой позиции — Уровень фиксации прибыли для первой позиции в направлении. |
| Take Profit (next position) (TP) | Тейк-профит последующих позиций — Уровень фиксации прибыли для дополнительных позиций. |
| Lots (Lots) | Лоты — Начальный размер лота для открытия позиции. |
| Max Lots (MaxLots) | Максимальный лот — Ограничение максимального размера лота. |
| Power (power) | Множитель лота — Коэффициент увеличения лота при добавлении позиций. |
| Max PipsStep for grid (PipsStep) | Максимальный шаг в пунктах — Допустимое отклонение цены в пунктах для открытия следующей позиции. |
| MaxTrades (MaxTrades) | Максимум сделок — Максимальное количество одновременных позиций в одном направлении. |
Поиск по коду файла
#property version "1.00"
#property strict
input string comment="Mission Impossible Power Two Open Version";//Comment
input int slippage=1;//Slippage
input int MagicNumber=1;//Magic Number
input ushort SL=400;//Stop Loss
input ushort TP1=15;//Take Profit (first position)
extern ushort TP=7;//Take Profit (next position)
extern double Lots=0.01;//Lots
extern double MaxLots=2;//Max Lots
input double power=13.0;//Power
extern ushort PipsStep=21;//Max PipsStep for grid
extern int MaxTrades=16;//MaxTrades
int Tick;
double gpoint_320;
string Error;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
void Buy_main(string ot_456)
{
if(Volume[0]>1)
return;
double lots;
if(OrderAllowed())
if((cou_tra_45(ot_456)==0 && Signal_1()==1)||(cou_tra_45(ot_456)>0 && nx_77(ot_456)))
{
lots=CheckVolumeValue(ne_234(ot_456));
if(CheckMoney(lots,OP_BUY))
{
Tick=0;
while(Tick<1)
{
while(IsTradeContextBusy())
Sleep(100);
RefreshRates();
Tick=OrderSend(Symbol(),OP_BUY,lots,nor_1(Ask),slippage,0,0,comment,MagicNumber,0,Blue);
if(Tick<1)
{
Print("Error: ",GetLastError());
Sleep(1000);
RefreshRates();
}
else
{
modify(ot_456);
}
}
}
}
}
void Sell_main(string ot_456)
{
if(Volume[0]>1)
return;
double lots;
if(OrderAllowed())
if((cou_tra_45(ot_456)==0 && Signal_1()==2)||(cou_tra_45(ot_456)>0 && nx_77(ot_456)))
{
lots=CheckVolumeValue(ne_234(ot_456));
if(CheckMoney(lots,OP_SELL))
{
Tick=0;
while(Tick<1)
{
while(IsTradeContextBusy())
Sleep(100);
RefreshRates();
Tick=OrderSend(Symbol(),OP_SELL,lots,nor_1(Bid),slippage,0,0,comment,MagicNumber,0,Red);
if(Tick<1)
{
Print("Error: ",GetLastError());
Sleep(1000);
RefreshRates();
}
else
{
modify(ot_456);
}
}
}
}
}
void modify(string ot_456)
{
int order=cou_tra_45(ot_456);
int tr_45;
double TP_all,SL_all,price;
double avp_2=0;
bool d;
if(order>1){
avp_2=avp_next(ot_456);
}
for(tr_45=OrdersTotal()-1; tr_45>=0; tr_45--)
{
if(!OrderSelect(tr_45,SELECT_BY_POS,MODE_TRADES))
Print("Error in OrderSelect Takeprofit==true. Error code=",GetLastError());
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber)
continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
if(ot_456=="buy")
{
if(OrderType()==OP_BUY)
{
if(order>1)
{
TP_all=nor_1(avp_2+(TP*gpoint_320));
SL_all=nor_1(avp_2-(SL*gpoint_320));
price=avp_2;
}
else
{
TP_all=nor_1(OrderOpenPrice()+(TP1*gpoint_320));
SL_all=nor_1(OrderOpenPrice()-(SL*gpoint_320));
price=OrderOpenPrice();
}
if(check_sl_tp(OP_BUY,SL_all,TP_all))
if(OrderTakeProfit()!=TP_all)
d=OrderModify(OrderTicket(),nor_1(price),SL_all,TP_all,0,Yellow);
if(d)
Print("All TP for buy successfully");
else
Print("Error in OrderModify buy Average + TP. Error code=",GetLastError());
}
}
if(ot_456=="sell")
{
if(OrderType()==OP_SELL)
{
if(order>1)
{
TP_all=nor_1(avp_2-(TP*gpoint_320));
SL_all=nor_1(avp_2+(SL*gpoint_320));
}
else
{
TP_all=nor_1(OrderOpenPrice()-(TP1*gpoint_320));
SL_all=nor_1(OrderOpenPrice()+(SL*gpoint_320));
price=OrderOpenPrice();
}
if(check_sl_tp(OP_SELL,SL_all,TP_all))
if(OrderTakeProfit()!=TP_all)
d=OrderModify(OrderTicket(),nor_1(price),SL_all,TP_all,0,Yellow);
if(d)
Print("All TP for sell successfully");
else
Print("Error in OrderModify sell Average - TP. Error code=",GetLastError());
}
}
}
}
}
double avp_next(string ot_456)
{
double
Count=0,
avp_2=0;
int tr_45;
for(tr_45=OrdersTotal()-1; tr_45>=0; tr_45--)
{
if(OrderSelect(tr_45,SELECT_BY_POS,MODE_TRADES)==False)
Print("Error in OrderSelect avp_2. Error code=",GetLastError());
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber)
continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
if(ot_456=="buy")
{
if(OrderType()==OP_BUY)
{
avp_2=avp_2+OrderOpenPrice()*OrderLots();
Count=Count+OrderLots();
}
}
if(ot_456=="sell")
{
if(OrderType()==OP_SELL)
{
avp_2=avp_2+OrderOpenPrice()*OrderLots();
Count=Count+OrderLots();
}
}
}
}
if(avp_2>0 && Count>0)
avp_2=NormalizeDouble(avp_2/Count,Digits);
return(avp_2);
}
int Lots_Digits()
{
double Lotstep=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
int LotsDigits=(int)MathCeil(MathAbs(MathLog(LotsteПоказано первые 50% кода (символов: 8165)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.