mahadgeea.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mahadgeea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, написанный на языке MQL4. Предназначен для автоматической торговли на валютном рынке Форекс. Обрабатывает рыночные данные в реальном времени и выполняет торговые операции через встроенные API MetaTrader.
Советник анализирует ценовые данные с использованием скользящей средней и на её основе принимает решения о входе в сделки. Поддерживается как покупка, так и продажа с возможностью включения или отключения каждого направления отдельно.
Имеются функции фиксации прибыли по уровню Take Profit, трейлинг-стоп для защиты прибыли, а также возможность управления лотностью. Поддерживаются дополнительные настройки времени торговли, фильтрации по времени и ручного управления через кнопки на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| TradeSetting | Название группы настроек торговли — Текстовый разделитель для визуальной группировки параметров в интерфейсе |
| EA_Name | Имя советника — Идентификационное имя, используемое в комментариях к ордерам |
| CommentTrade | Комментарий сделки — Текст комментария, добавляемый к каждой открываемой позиции |
| MagicNumber | Магический номер — Уникальный идентификатор ордеров данного советника |
| Signal_ | Разделитель сигналов — Текстовый разделитель для визуальной группировки параметров сигналов |
| TradeBuy | Разрешить покупку — Включает или отключает возможность открытия длинных позиций |
| TradeSell | Разрешить продажу — Включает или отключает возможность открытия коротких позиций |
| UseMA | Использовать скользящую среднюю — Включает анализ ценового графика относительно скользящей средней для принятия торговых решений |
| Period_MA_1_ | Период скользящей средней — Количество баров, используемых для расчёта скользящей средней |
| Shift_MA_1_ | Сдвиг скользящей средней — Сдвиг индикатора скользящей средней относительно текущего бара |
| Mode_MA_1_ | Тип скользящей средней — Метод расчёта скользящей средней |
| Price_MA_1_ | Цена для скользящей средней — Тип цены, используемой для расчёта скользящей средней |
| Parameter | Разделитель параметров — Текстовый разделитель для визуальной группировки параметров |
| Lots | Лотность — Размер лота для каждой сделки |
| HiddenTP | Скрытый Take Profit — Определяет, отображается ли уровень фиксации прибыли на графике |
| TakeProfit | Take Profit — Уровень фиксации прибыли в пунктах от цены входа |
| Multiplier | Множитель лота — Множитель, используемый при расчёте размера лота для дополнительных позиций |
| PipRange | Диапазон в пунктах — Расстояние в пунктах для размещения отложенных ордеров |
| UseTrail | Использовать трейлинг-стоп — Включает автоматическое перемещение стоп-лосса вслед за прибыльной позицией |
| TrailingStop | Трейлинг-стоп в пунктах — Расстояние в пунктах между текущей ценой и стоп-лоссом при активном трейлинге |
| TrailingStep | Шаг трейлинга в пунктах — Минимальное расстояние в пунктах для перемещения стоп-лосса при трейлинге |
Поиск по коду файла
#property version "1.00"
#property strict
#include <stdlib.mqh>
#include <stderror.mqh>
enum model{Manual};
model ModeOrder = Manual;
extern string TradeSetting = " ---------------------------------- ";
extern string EA_Name = "Ma HadgeEA";
bool ContinueTrade = true;
extern string CommentTrade = "Ma HadgeEA";
extern int MagicNumber = 20200917;
extern string Signal_ = " ---------------- Signal ---------------- ";
extern bool TradeBuy = true;
extern bool TradeSell = true;
extern bool UseMA = true;
extern int Period_MA_1_ = 50;
extern int Shift_MA_1_ = 0;
extern ENUM_MA_METHOD Mode_MA_1_ = MODE_EMA;
extern ENUM_APPLIED_PRICE Price_MA_1_ = PRICE_CLOSE;
extern string Parameter = " ---------------- Parameter ---------------- ";
extern double Lots = 0.01;
extern bool HiddenTP = true;
extern int TakeProfit = 30;
extern double Multiplier = 2;
extern int PipRange = 20;
extern bool UseTrail = false;
extern int TrailingStop = 20;
extern int TrailingStep = 10;
bool Use_TpMoney = false;
double TpMoney = 10;
bool Use_SLMoney = false;
double SL_Money = 10;
string TimeFilter = " ---------------- TimeFilter ---------------- ";
bool UseTimeFilter = false;
string StartTime_ = "01:00";
string StartTime1 = "00:01";
string EndTime1 = "23:59";
string EndTime_ = "20:00";
int StopLoss = 0;
static double tppercent;
int turun = 10;
int Warna;
int POModifyMinute = 999999;
int MaxOrderLocking = 9999;
bool OFF_After_Close = false;
bool Debug = false;
string namelineH = "BuyStop";
string namelineL = "SellStop";
string TimeStart = "00:00";
string TimeStop = "23:59";
int MagicMaster = 12345;
double price;
int range;
double lotbuy,lotsell;
int Corner = 1;
int PT = 1,
DIGIT,SlipPage;
double POINT;
int fot;
double lpb,lps,ll;
string lc;
double openbuylots, openselllots;
static int first_time;
double tpline_buy,slline_buy,tpline_sell,slline_sell;
static double start_trailing_price;
static int status_BEP;
static double price_BEP;
static int status_trailing;
bool mabuy;
bool masel;
bool buy1;
bool sell1;
bool CloseAllPair;
double targetmoney;
string name_tpbuy = "TP BUY";
string name_slbuy = "SL BUY";
string name_tp_sell = "TP SELL";
string name_sl_sell = "SL SELL";
string name_BEP = "BEP";
string name_buy = "BUY";
string name_sell = "SELL";
string name_closeall = "CLOSE ALL";
datetime StartTime;
color linetpbuy = clrNONE;
color linetpsel = clrNONE;
bool isTime;
bool isTime1;
int lastordertype;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
del_button();
DelObject();
Comment("");
return;
}
void OnTick()
{
// код доступен только после оплаты
}
void SetupTrade()
{
double MA1_ = iMA(Symbol(),Period(),Period_MA_1_,Shift_MA_1_,Mode_MA_1_,Price_MA_1_,1);
if(UseMA){
mabuy = MA1_<Close[1];
masel = MA1_>Close[1];}
else
if(!UseMA){mabuy = true;masel = true;}
buy1 = mabuy && TradeBuy;
sell1 = masel && TradeSell;
if(Volume[0]<10 && TotalOrder()==0)
{
if(buy1)
{
Order_1(OP_BUY,CommentTrade);
status_BEP = 0;
price_BEP = 0;
status_trailing = 0;
start_trailing_price = 0;
}
else
if(sell1)
{
Order_1(OP_SELL,CommentTrade);
status_BEP = 0;
price_BEP = 0;
status_trailing = 0;
start_trailing_price = 0;
}
}
}
bool IsOrder(string comment)
{
bool isOrder = true;
if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if(StringFind(OrderComment(),comment) != -1) isOrder = false;
if(OrderType() == OP_BUY)
{
if(OrderStopLoss() > OrderOpenPrice()) isOrder = false;
}
if(OrderType() == OP_SELL)
{
if(OrderStopLoss() < OrderOpenPrice() && OrderStopLoss() > 0) isOrder = false;
}
}
}
return(isOrder);
}
double TotalPips()
{
double totalPip = 0, pip = 0;
string date = TimeToString(TimeCurrent(),TIME_DATE);
for(int i = OrdersHistoryTotal()-1; i >= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if(StringFind(TimeToString(OrderCloseTime(),TIME_DATE),date) != -1)
{
if(OrderType() == OP_BUY)
{
pip = (OrderClosePrice()-OrderOpenPrice())/POINT;
totalPip += pip;
}
if(OrderType() == OP_SELL)
{
pip = (OrderOpenPrice()-OrderClosePrice())/POINT;
totalPip += pip;
}
}
}
}
}
return(totalPip);
}
int TotalOrder(int ordertype = -1)
{
int Order = 0;
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if(ordertype == -1)
Order++;
else if(ordertype == OrderType())
Order++;
}
}
}
return(Order);
}
double SetupLot(int orderType)
{
double lot = 0, firstLot = 0,
MinLot = MarketInfo(Symbol(),MODE_MINLOT),
MaxLot = MarketInfo(Symbol(),MODE_MAXLOT),
lotStep = MarketInfo(Symbol(),MODE_LOTSTEP);
int lotDigit = 1; if(lotStep == 0.01) lotDigit = 2; if(lotStep == 0.001) lotDigit = 3;
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
lot = MathMax(lot,OrderLots());
}
}
}
lot = Lots;
if(MinLot == 0.01)
firstLot = NormalizeDouble(firstLot,2);
else
firstLot = NormalizeDouble(firstLot,1);
if(lot == 0)
{
lot = Lots;
}
if(lot < MinLot) lot = MinLot;
if(lot > MaxLot) lot = MaxLot;
return(lot);
}
double AskPrice(string symbol = "")
{
if(symbol == "") symbol = Symbol();
return(MarketInfo(symbol,MODE_ASK));
}
double BidPrice(string symbol = "")
{
if(symbol == "") symbol = Symbol();
return(MarketInfo(symbol,MODE_BID));
}
int StopLevel(string symbol = "")
{
if(symbol == "") symbol = Symbol();
return((int)MarketInfo(symbol,MODE_STOPLEVEL));
}
string OrderCmd(int ordertype)
{
string label;
switch(ordertype)
{
case 0: label = "Buy"; break;
case 1: label = "Sell"; break;
case 2: label = "Buy Limit"; break;
case 3: label = "Sell Limit"; break;
case 4: label = "Buy Stop"; break;
case 5: label = "Sell Stop"; break;
}
return(label);
}
double SetupLot_1()
{
double lot = 0, firstLot = 0,
MinLot = MarketInfo(Symbol(),MODE_MINLOT),
MaxLot = MarketInfo(Symbol(),MODE_MAXLOT);
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
lot = MathMax(lot,OrderLots());
}
}
}
lot = Lots;
if(MinLot == 0.01)
firstLot = NormalizeDouble(firstLot,2);
else
firstLot = NormalizeDouble(firstLot,1);
if(lot == 0)
{
lot = Lots;
}
if(lot < MinLot) lot = MinLot;
if(lot > MaxLot) lot = MaxLot;
if(MinLot == 0.01)
lot = NormalizeDouble(lot,2);
else
lot = NormalizeDouble(lot,1);
return(lot);
}
int Order_1(int ordertype, string comment)
{
int ticket;
double lot = SetupLot_1(),buytp,selltp, sl = 0, tp = 0;
if(ordertype == OP_BUY)
{
price = AskPrice();
if(StopLoss > 0) sl = 0;
selltp = NormalizeDouble(price+(TakeProfit*POINT),DIGIT);
if(!HiddenTP && TakeProfit > 0){ tp = NormalizeDouble(price+(TakeProfit*POINT),DIGIT);CreateLine("TP_Buy",tp,linetpbuy);}
if(HiddenTP && TakeProfit > 0){tp =0;CreateLine("TP_Buy",selltp,clrRed);}
}
if(ordertype == OP_SELL)
{
price = BidPrice();
if(StopLoss > 0) sl = 0;
buytp = NormalizeDouble(price-(TakeProfit*POINT),DIGIT);
if(!HiddenTP && TakeProfit > 0) {tp = NormalizeDouble(price-(TakeProfit*POINT),DIGIT); CreateLine("TP_Sell",tp,linetpsel); }
if(HiddenTP && TakeProfit > 0){tp =0;CreateLine("TP_Sell",buytp,clrRed);}
}
ticket = OrderSend(Symbol(),ordertype,lot,price,SlipPage,sl,tp,comment,MagicNumber,0);
if(ticket == -1) ShowError("Order " + OrderCmd(ordertype));
return(ticket);
}
int Order(int ordertype, string comment, double uselot = 0)
{
int ticket;
double lot = uselot,buytp,selltp, sl = 0, tp = 0;
if(ordertype == OP_BUY)
{
price = AskPrice();
if(StopLoss > 0) sl = 0;
buytp = NormalizeDouble(price+(TakeProfit*POINT),DIGIT);
if(!HiddenTP && TakeProfit > 0){ tp = NormalizeDouble(price+(TakeProfit*POINT),DIGIT); CreateLine("TP_Buy",tp,linetpbuy); }
if(HiddenTP && TakeProfit > 0){ tp = 0; CreateLine("TP_Buy",buytp,clrRed); }
}
if(ordertype == OP_SELL)
{
price = BidPrice();
if(StopLoss > 0) sl = 0;
selltp = NormalizeDouble(price-(TakeProfit*POINT),DIGIT);
if(!HiddenTP && TakeProfit > 0) {tp = NormalizeDouble(price-(TakeProfit*POINT),DIGIT); CreateLine("TP_Sell",tp,linetpsel); }
if(HiddenTP && TakeProfit > 0) {tp = 0; CreateLine("TP_Sell",selltp,clrRed); }
}
ticket = OrderSend(Symbol(),ordertype,lot,price,SlipPage,sl,tp,comment,MagicNumber,0);
if(ticket == -1) ShowError("Order " + OrderCmd(ordertype));
return(ticket);
}
int OrderPO(int ordertype, string comment, double price_, double lots)
{
int ticket;
double sl = 0, tp = 0;
ticket = OrderSend(Symbol(),ordertype,lots,price_,SlipPage,sl,tp,comment,MagicNumber,0);
if(ticket == -1) ShowError("Order " + OrderCmd(ordertype));
return(ticket);
}
int TotalOrderNoMagic(int ordertype=-1)
{
int Order=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,0)) continue;
if(OrderSymbol()!=Symbol()) continue;
if(ordertype==-1)
Order++;
if(ordertype==OrderType())
Order++;
}
return(Order);
}
void TargetProfit()
{
double profit = 0;
if(TotalOrder() > 0)
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
profit = profit+(OrderProfit()+OrderSwap()+OrderCommission());
}
}
}
if(TotalOrder() > 0)targetmoney = TpMoney;
if(TpMoney > 0)
{
if(profit >= TpMoney) CloseAllPair = true;
{
if(CloseAllPair)
{
while(TotalOrder() > 0)
{
CloseOrder();
}
Print("Close by TP Money");
}
}
}
}
if(TotalOrder() == 0)
{
CloseAllPair = false;
}
}
void TargetLoss()
{
double loss = 0;
if(TotalOrder() > 0)
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
loss = loss+(OrderProfit()+OrderSwap()+OrderCommission());
}
}
}
if(TotalOrder() > 0)targetmoney = -SL_Money;
if(TpMoney > 0)
{
if(loss < -targetmoney) CloseAllPair = true;
{
if(CloseAllPair)
{
while(TotalOrder() > 0)
{
CloseOrder();
}
Print("Close by SL Money");
}
}
}
}
if(TotalOrder() == 0)
{
CloseAllPair = false;
}
}
void CloseOrder(int ordertype = -1)
{
for(int i = OrdersTotal()-1; i >= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if(ordertype == -1)
{
if(OrderType() == OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),BidPrice(OrderSymbol()),SlipPage,Blue)) ShowError("Close " + OrderCmd(OrderType()));
}
else if(OrderType() == OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),AskPrice(OrderSymbol()),SlipPage,Red)) ShowError("Close " + OrderCmd(OrderType()));
}
else
{
if(!OrderDelete(OrderTicket())) ShowError("Delete Pending Order " + OrderCmd(OrderType()));
}
}
else
{
if(OrderType() == ordertype)
{
if(ordertype == OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),BidPrice(OrderSymbol()),SlipPage,Blue)) ShowError("Close " + OrderCmd(OrderType()));
}
else if(ordertype == OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),AskPrice(OrderSymbol()),SlipPage,Red)) ShowError("Close " + OrderCmd(OrderType()));
}
else
{
if(!OrderDelete(OrderTicket())) ShowError("Delete Pending Order " + OrderCmd(OrderType()));
}
}
}
}
}
}
}
void CloseOrderComment(int ordertype = -1, string comment = "")
{
for(int i = OrdersTotal()-1; i >= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderComment()==comment)
{
if(ordertype == -1)
{
if(OrderType() == OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),BidPrice(OrderSymbol()),SlipPage,Blue)) ShowError("Close " + OrderCmd(OrderType()));
}
else if(OrderType() == OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),AskPrice(OrderSymbol()),SlipPage,Red)) ShowError("Close " + OrderCmd(OrderType()));
}
else
{
if(!OrderDelete(OrderTicket())) ShowError("Delete Pending Order " + OrderCmd(OrderType()));
}
}
else
{
if(OrderType() == ordertype)
{
if(ordertype == OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),BidPrice(OrderSymbol()),SlipPage,Blue)) ShowError("Close " + OrderCmd(OrderType()));
}
else if(ordertype == OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),AskPrice(OrderSymbol()),SlipPage,Red)) ShowError("Close " + OrderCmd(OrderType()));
}
else
{
if(!OrderDelete(OrderTicket())) ShowError("Delete Pending Order " + OrderCmd(OrderType()));
}
}
}
}
}
}
}
double TotalProfit()
{
double profit = 0;
if(TotalOrder() > 0)
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
profit += OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(profit);
}
void ShowError(string label)
{
string Error;
int error = GetLastError();
Error = StringConcatenate("Terminal: ",TerminalName(),"\n",
label," error ",error,"\n",
ErrorDescription(error));
if(error > 2)
{
if(IsTesting())
Comment(Error);
else
Alert(Error);
}
}
void AutoDigit()
{
POINT = MarketInfo(Symbol(),MODE_POINT);
DIGIT = (int)MarketInfo(Symbol(),MODE_DIGITS);
if (DIGIT == 3 || DIGIT == 5)
{
PT = 10;
SlipPage *= 10;
TakeProfit *= 10;
StopLoss *= 10;
TrailingStop *= 10;
TrailingStep *= 10;
PipRange *= 10;
}
}
bool IsTrade()
{
bool trade = true;
if(!IsTesting())
{
if(!IsTradeAllowed())
{
Alert("Allow live trading is disable, press F7, \nselect Common tab, check Allow live trading");
trade = false;
}
if(!IsExpertEnabled())
{
Alert("Expert Advisor is disable, click AutoTrading button to activate it ");
trade = false;
}
}
return(trade);
}
void DelObject(string objectName = "")
{
for(int i = ObjectsTotal()-1; i >= 0; i--)
{
if(StringFind(ObjectName(i),WindowExpertName()) != -1)
{
if(objectName == "")
ObjectDelete(ObjectName(i));
else
if(StringFind(ObjectName(i),objectName) != -1) ObjectDelete(ObjectName(i));
}
}
}
void expired_po()
{
int i;
double upper = NormalizeDouble(AskPrice()+(PipRange*POINT),DIGIT);
double lower = NormalizeDouble(BidPrice()-(PipRange*POINT),DIGIT);
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if((OrderType()==OP_BUYSTOP && upper < OrderOpenPrice()) || (OrderType()==OP_SELLSTOP && lower > OrderOpenPrice()))
{
if(TimeCurrent() >= OrderOpenTime()+POModifyMinute*60)
{
if(!OrderDelete(OrderTicket())) ShowError("Delete Pending Order " + OrderCmd(OrderType()));
}
}
}
}
}
void FirstOrderType()
{
datetime EarliestOrder = D'2099/12/31';
for (int i = 0; i < OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) {
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual)) {
if (EarliestOrder > OrderOpenTime()) {
EarliestOrder = OrderOpenTime();
fot = OrderType();
}
}
}
}
}
double last_price(int ordertype = -1)
{
int i;
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if(OrderType()==ordertype)
{
price = NormalizeDouble(OrderOpenPrice(),DIGIT);
}
}
}
return(price);
}
void last_lot()
{
int i;
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
ll = OrderLots();
}
}
}
void last_comment()
{
int i;
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
lc = OrderComment();
}
}
}
void LotsTotal()
{
int r;
if(OrdersTotal()>0)
{
openbuylots = 0; openselllots = 0; // set the variables to zero
for(int i=0;i<OrdersTotal();i++)
{
r = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if((OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) || (OrderSymbol() == Symbol() && ModeOrder == Manual))
{
if(OrderCloseTime()==0)
{
if(OrderType()==OP_BUY) openbuylots += OrderLots();
if(OrderType()==OP_SELL) openselllots += OrderLots();
}
}
}
}
}
void hedging()
{
int ticket;
FirstOrderType(); LotsTotal();
double nextbuy, nextsell; last_comment();
int totalopen = TotalOrder(OP_BUY)+TotalOrder(OP_SELL);
if(totalopen >= 1)range = PipRange;
if(TotalOrder(OP_SELLSTOP)>0 && lc != EA_Name && TotalOrder(OP_BUY)>0)
{
CloseOrder(OP_SELLSTOP);
}
if(TotalOrder(OP_BUYSTOP)>0 && lc != EA_Name && TotalOrder(OP_SELL)>0)
{
CloseOrder(OP_BUYSTOP);
}
double price_buystop = NormalizeDouble(BidPrice()+(PipRange*POINT),DIGIT);
double price_sellstop = NormalizeDouble(BidPrice()-(PipRange*POINT),DIGIT);
double tp_buystop = 0,linetp_buystop = 0, sl_buystop = 0, linesl_buystop = 0;
double tp_sellstop = 0, linetp_sellstop = 0, sl_sellstop = 0, linesl_sellstop = 0;
if(fot == 0)//OP_BUY
{
if(TotalOrder(OP_BUY)>TotalOrder(OP_SELL) && TotalOrder(OP_BUY) > 0)
{
last_price_buy(); last_comment(); last_lot();
nextsell = NormalizeDouble(lpb-(range*POINT),DIGIT);
if(TakeProfit > 0)
{
if(!HiddenTP){
tp_sellstop = NormalizeDouble(nextsell-(TakeProfit*POINT),DIGIT);
CreateLine("TP_Sell",tp_sellstop,linetpsel); }
if(HiddenTP){
tp_sellstop = 0;
linetp_sellstop = NormalizeDouble(nextsell-(TakeProfit*POINT),DIGIT);
CreateLine("TP_Sell",linetp_sellstop,clrRed); }
}
ifПоказано первые 50% кода (символов: 34677)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.