Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 126
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно поподробней о сигнале, он посредством МТ или сторонний?
Спасибо за помощь, исправил.
А можно ли останавливать/включать автоторговлю на всем терминале или какого-то отдельного советника, к примеру, по данным какого-либо индикатора?
На своих можно через глобальные переменные терминала, прописать всем одну и ту же ГП и следить за значением, например, когда 0 - все советники не торгуют.
Ещё можно через WinAPI найти кнопку автоторговли на панели терминала и отжать её.
Здравствуйте! Скажите существует ли код для вывода текста на график (стикер, напоминалка) которая не движется вместе с графиком, а зафиксирована? Спасибо!
Заранее спасибо!
extern double Lots = 0.1;
extern double Profit = 50;
extern int Step = 30;
extern int Magic = 6677;
extern int Slippage = 5;
extern int maPeriod =100;
extern int maShift =1;
double ma, FindLastBuyPrice, price;
//------------------------------------------------------------------
//___ПРОВЕРКА_ЗНАКОВ_ПОСЛЕ_ТОЧКИ___
//------------------------------------------------------------------
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
Step *= 10;
Slippage *= 10;
}
return(INIT_SUCCEEDED);
}
//---------------------------------------------
void OnDeinit(const int reason)
{
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
void OnTick()
{
ma = iMA(Symbol(),0,maPeriod, maShift, MODE_SMA, PRICE_CLOSE, 0);
if (CountBuy() && CountSell() == 0 && Bid < ma)//
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1)
Print ("Неудалось открыть ордер на Продажу");
}
if (CountBuy() && CountSell() == 0 && Ask < ma)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1)
Print ("Неудалось открыть ордер на Покупку");
}
if (CountBuy() >=1)
{
price = FindLastBuyPrice();
if ((price - Ask) >= Step*Point)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue) < 1)
Print ("Неудалось открыть ордер на Покупку");
}
}
if (CountSell() >=1)
{
price = FindLastBuyPrice();
if ((Bid - price) >= Step*Point)
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red) < 1)
Print ("Неудалось открыть ордер на Ппродажу");
}
}
double op = CalculateProfit();
if (op >= Profit)
{
CloseAll();
}
}
//------------------------------------------------------------------
void CloseAll()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage))
{
Print ("Не удалось закрыть ордер на ПОКУПКУ");
}
}
if (OrderType() == OP_SELL)
{
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage))
{
Print ("Не удалось закрыть ордер на ПРОДАЖУ");
}
}
}
}
}
}
//------------------------------------------------------------------
double CalculateProfit() // Считаем профит по всем ордерам
{
double oProfit = 0;
for (int i=OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
oProfit += OrderProfit();
}
}
}
}
return(oProfit);
}
//------------------------------------------------------------------
double FindLastBuyPrice()
{
int oldTicket, ticket = 0;
double oldopenPrice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
{
oldTicket = OrderTicket();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice();
}
}
}
}
return(oldopenPrice);
}
double FindLastSellPrice()
{
int oldTicket, ticket = 0;
double oldopenPrice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() ==Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
{
oldTicket = OrderTicket();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice();
}
}
}
}
return(oldopenPrice);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
Всем привет. Такой вопрос:
Есть индикатор с библиотекой, по нему надо написать советник
Какая схема действий понадобится чтобы не плодить файлы, а было бы их два или один в итоге. В идеале совместить.
Всем привет. Такой вопрос:
Есть индикатор с библиотекой, по нему надо написать советник
Какая схема действий понадобится чтобы не плодить файлы, а было бы их два или один в итоге. В идеале совместить.
Работа с пользовательскими индикаторами, подключенными в качестве ресурсов
Для работы mql4-программ может потребоваться один или несколько пользовательских индикаторов, все они могут быть включены в код исполняемой mql4-программы. Включение индикаторов в качестве ресурсов позволяет упростить распространение программ.