Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Приветствую! А может для MQL5 сделать новую ветку? А то тут все перемешается и будет очень неудобно и тем кто MQL4 изучает и тем кто MQL5.


Поддерживаю. Ув. pavlus777 и модераторы, может откроете новую ветку под MQL5?
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано



Приветствую! А может для MQL5 сделать новую ветку? А то тут все перемешается и будет очень неудобно и тем кто MQL4 изучает и тем кто MQL5.


Поддерживаю. Ув. pavlus777 и модераторы, может откроете новую ветку под MQL5?

Легко
http://tlap.com/forum/ugolok-programmista/13/obuchenie-yazyku-mql5-pod-metatrader-5/14302
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток! Подскажите, возможно ли написать стрелочник на совпадение условий от нескольких индикаторов, не имея декомпилированных версий этих индикаторов?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте!Помогите найти ошибку!Написал функцию для закрытия части лота, когда цена проходит определенное кол-во пунктов в плюс, стоп лосс не переносится.Для проверки написал написал советник(не судите строго.я только учусь).Идея взята из системы "Снайпер".
-----------------------------------------------------------+//+-------
//| CloseLots.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//|
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link
#property version "1.00"
#property strict

extern double Lots = 0.1;
extern int TakeProfit = 50;
extern int StopLoss = 30;
extern int Slippage = 3;
extern int Magic = 123;

extern string iMA = "Настройки МА";
extern int period = 14;
extern int shift = 0;
extern int method = 0;
extern int applied_price = 0;

extern bool CloseLots = true; // включение функции
extern int CL = 2; // какая часть лота закрывается(2=50%)
extern int CP = 30; // кол-во пунктов для закрытия части лота

int timeprev = 0;
double SL, SL1, TP, TP1;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if (Digits == 3 || Digits == 5)
CP *= 10;
Slippage *= 10;
TakeProfit *= 10;
StopLoss *= 10;
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if( timeprev == Time[0]) return;
timeprev = Time[0];

double ima = iMA( Symbol(),0, period, shift, method, applied_price,1);
double ima1 = iMA( Symbol(),0, period, shift, method, applied_price,2);

SL = NormalizeDouble( Ask - StopLoss * Point, Digits);
TP = NormalizeDouble( Ask + TakeProfit * Point, Digits);
SL1 = NormalizeDouble( Bid + StopLoss * Point, Digits);
TP1 = NormalizeDouble( Bid - TakeProfit * Point, Digits);

if(Close[1]> ima && Close[2] {
if( OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"",Magic,0,Blue))
Print("Ошибка открытия ордера на покупку!");
}
if(Close[1]ima1 && SellCount()==0)
{
if( OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL1,TP1,"",Magic,0,Red))
Print("Ошибка открытия ордера на продажу!");
}
closelots();
}
//+------------------------------------------------------------------+
void closelots()
{
int tip,ticket;
double OOP,OL,NKL,cp,cl;
if(CloseLots == true)
for (int i=0; i {
if(OrderSelect(i, SELECT_BY_POS))
{
if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
tip = OrderType();
ticket = OrderTicket();
OOP = OrderOpenPrice();
OL = OrderLots();
cp = NormalizeDouble(CP+Point,Digits);
cl = NormalizeDouble(OL/CL,2);
if(tip==OP_BUY)
{
if(OL==Lots)
{
NKL= NormalizeDouble(OOP+cp,Digits);

if(NKL {
if(OrderClose(ticket,cl,Bid,Slippage,Aqua))
Print("Часть лота успешно закрылась");
else Print("Часть лота не закрылась");
}
}
}
if(tip==OP_SELL)
{
if(OL==Lots)
{
NKL= NormalizeDouble(OOP-cp,Digits);

if(NKL>=Ask)
{
if(OrderClose(ticket,cl,Ask,Slippage,Aqua))
Print("Часть лота успешно закрылась");
else Print("Часть лота не закрылась");
}
}
}
}
}
}

}
//+------------------------------------------------------------------+
int BuyCount()
{
int count = 0;

for ( int i = OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES) == true &&
OrderMagicNumber() == Magic &&
OrderType() == OP_BUY)
{
count++;
}
}
return( count );
}
//+------------------------------------------------------------------+

int SellCount()
{
int count = 0;

for ( int i = OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES) == true &&
OrderMagicNumber() == Magic &&
OrderType() == OP_SELL)
{
count++;
}
}
return( count );
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Уважаемые специалисты вынесите пожалуйста в настройки индикатора "Стиль" линий.
Заранее благодарен!!!




Держите

Trendlines_Original__LA_mod.mq4

Изменено пользователем Pavel888
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Всем привет! Вопрос к Сергею, но если кто ещё компетентно ответит, то буду благодарен. Думаю, на эту тему можно даже небольшое видео записать. Итак, вопрос по безопасности прав автора. Мы все знаем, что в mql4 коде можно прописать определение номера счёта и, соответственно, можно указать, чтобы советник работал на конкретном счету, а если счёт другой, то сообщение "обратитесь к автору", например. Это бывает полезно, когда написанную тобой программу просят люди и ты не против её дать конкретному человеку (естественно формат ex4) для использования или теста, но заинтересован, чтобы её не распространяли дальше. Так вот вопрос, насколько это надёжный способ защиты своих авторских прав, есть ли методы декомпиляции, возможно есть ещё какой-то метод аналогичный написанному мной или дополнение к нему, поделитесь, пожалуйста. Спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый день,

большая просьба к программистам, добавить суффиксы-префиксы в 2 однотипных индикатора для парной торговли.

Спойлер




скачать

_https://yadi.sk/d/oWmd4w5htxNLq
_https://yadi.sk/d/SsO6j7gutxNLw
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Советник по урокам и не работет... Решил добавить MM. Открывает 2 сделки потом пишет :
2016.08.06 20:06:56.027 2016.08.05 23:00 TMA Fair MM GBPUSD,H1: invalid lots amount for OrderSend function
2016.08.06 20:06:56.027 2016.08.05 23:00 TMA Fair MM GBPUSD,H1: Alert: Не возможно открыть позицию с обьёмом 0.05
2016.08.06 20:06:56.027 2016.08.05 23:00 TMA Fair MM GBPUSD,H1: invalid trade cmd -1 for FreeMarginCheck function
8-} Менял всё что только можно.




//-------------------------------------------------------------------
extern int TakeProfit = 30;
extern int StopLoss = 20;
extern int Magic = 777;
extern int Slippage = 3;
extern double Risk = 4;
//-------------------------------------------------------------------
extern string TMA = "Параметры индикатора TMA Fair";
extern string TimeFrame = "current time frame";
extern int HalfLength = 56;
extern int Price = PRICE_CLOSE;
extern double ATRMultiplier = 2.0;
extern int ATRPeriod = 100;
extern bool Interpolate = true;
//--------------------------------------------------------------------
double PriceHigh, PriceLow, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
TakeProfit *=10;
StopLoss *=10;
Slippage *=10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
PriceHigh = iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
PriceLow = iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);
if (CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(),OP_SELL,LotsByRisk(),Bid,Slippage,0,0,"Советник TMA Fair",Magic,0,Red);
if (ticket > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
TP = NormalizeDouble(Bid - TakeProfit*Point, Digits);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("Ошибка модификации ордера на продажу!");
} else Print("Ошибка открытия ордера на продажу!");
}
if (CountBuy() == 0 && Ask {
ticket = OrderSend(Symbol(),OP_BUY,LotsByRisk(),Ask,Slippage,0,0,"Советник TMA Fair",Magic,0,Blue);
if (ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("Ошибка модификации ордера на покупку!");
} else Print("Ошибка открытия ордера на покупку!");
}
if (Ask 0)
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
if (OrderClose(!OrderTicket(), OrderLots(), Ask, Slippage, Indigo))
Print("Ошибка закрытия ордера на продажу!");
}
}
}
if (Bid >= PriceHigh && CountBuy() > 0)
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Indigo))
Print("Ошибка закрытия ордера на покупку!");
}
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
double LotsByRisk()
{
double lot_min = MarketInfo(Symbol(), MODE_MINLOT);
double lot_max = MarketInfo(Symbol(), MODE_MAXLOT);
double lot_step = MarketInfo(Symbol(), MODE_LOTSTEP);
double lotcost = MarketInfo(Symbol(), MODE_TICKVALUE);
double lot = 0;
double UsdPerPip = 0;
lot = AccountBalance() * Risk/100;
UsdPerPip = lot/StopLoss;
lot = NormalizeDouble(UsdPerPip/lotcost,2);
lot = NormalizeDouble(lot/lot_step, 0) * lot_step;
if (lot if (lot > lot_max) lot = lot_max;
if (AccountFreeMarginCheck(Symbol(), ticket, lot) {
Alert("Не возможно открыть позицию с обьёмом = " + DoubleToStr(lot, 2), "Недостаточно средств!");
return(-1);
}
return(lot);
}
//+------------------------------------------------------------------+

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Советник по урокам и не работет... Решил добавить MM. Открывает 2 сделки потом пишет :
2016.08.06 20:06:56.027 2016.08.05 23:00 TMA Fair MM GBPUSD,H1: invalid lots amount for OrderSend function
2016.08.06 20:06:56.027 2016.08.05 23:00 TMA Fair MM GBPUSD,H1: Alert: Не возможно открыть позицию с обьёмом 0.05
2016.08.06 20:06:56.027 2016.08.05 23:00 TMA Fair MM GBPUSD,H1: invalid trade cmd -1 for FreeMarginCheck function

Ошибка тут) Ищи


if(AccountFreeMarginCheck(Symbol(),ticket,lot) {
Alert("Не возможно открыть позицию с обьёмом = "+DoubleToStr(lot,2)," Недостаточно средств!");
return(-1);
}
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток! Уважаемые господа знатоки, подскажите, пожалуйста, ответ на такой вопрос: с помощью какой функции можно посчитать разницу (чтобы она была в пунктах) между верхней линией и нижней линией индикатора Bands?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте!
Помогите написать код для определения цены открытия, закрытия, максимума и минимума 12-ти часовой свечи.
Не знаю, как реализовать период 12 часов, поэтому использую три четырехчасовых свечи.
Пример: определение цены открытия первой из трех четырех часовой свечи.

void GetOpenPrice() //Задаем функцию определения цены открытия предыдущей свечи
{
int xopp = 0;

for (int i = 1; i //Количество 4-х часовых свечей в 12-ти часовой свече
{
if (TimeHour(iTime(Symbol(),PERIOD_H4, i)) >= 0 && TimeHour(iTime(Symbol(),PERIOD_H4, i)
// Если время отркытия 4-х часовой свечи попадает во временной промежуток между 0 и 12 часами

xopp = xopp+1;
else xopp=0;


if (xopp == 3) // Если время открытия 3-х четырех часовых свечей попадает в промежуток от 0 до 12 часов
{
PriceOpen = iOpen(Symbol(), PERIOD_H4, 3);
//Опрееляем цену открытия 1-й свечи открытой от 0 до 4 часов
Print("OpenPrice - " + DoubleToStr(PriceOpen)); // Выводим в журнал
}
}
return;
}


Если тестировать все тики, то выдает такую ошибку:
TestGenerator: unmatched data error (volume limit 4729 at 2016.06.16 15:05 exceeded)

Если тестировать ценам открытия то вообще никаких данных в журнал не выдает.

Если вынести из функции Print, то выдает в журнал значение цены 0.000000 и и причем за каждый четверты час, а не один раз за 12 часов.

Где ошибка?

Изменено пользователем Raskatov
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Походу автор забил на тему. x( Жаль. Я бы помог ток сам разбираюсь нифига не получается.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Коллеги,
есть трал, который тралит последние профитные позиции сетки.
Как посчитать, на какую сумму он закрыл этих последних сделок в рамках одной (последней открытой) сетки?
Большое спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Подскажите пожалуйста как открыть для чтения файл .XML

Открывать и читать как текстовый файл и выписывать поиск тегов xml разметки.

с помощью какой функции можно посчитать разницу (чтобы она была в пунктах) между верхней линией и нижней линией индикатора Bands?

С помощью вычитания. У Вас будет два буфера с верхней и нижней линией: pips = bufHigh - bufLow

Помогите написать код для определения цены открытия, закрытия, максимума и минимума 12-ти часовой свечи.
Не знаю, как реализовать период 12 часов, поэтому использую три четырехчасовых свечи.


Брокеры начинают рисовать свечу в момент старта торгов в вск или пнд, если Вы хотите получать данные в 12 и 0 часов, то лучше использовать Н1 ( мало ли на какого брокера поставите ), и раз уж всё равно цикл, то лучше исследовать свечи текущего ТФ - имхо. тем более есть все нужные функции типа - iHighest. Изменено пользователем 0ll
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

берём простой код:

void OnTick(){

if (timeprev == Time[0]) return;
timeprev = Time[0];

Print(Time[0]);

}


ставим на GBPUSD, M5, 99%

получаем:
Спойлер

Цитата

2016.08.16 21:39:07.234 2015.03.17 09:40 test123 GBPUSD,M5: 2015.03.17 09:40:00
2016.08.16 21:39:07.234 2015.03.17 09:35 test123 GBPUSD,M5: 2015.03.17 09:35:00
2016.08.16 21:39:07.234 2015.03.17 09:30 test123 GBPUSD,M5: 2015.03.17 09:30:00
2016.08.16 21:39:07.234 2015.03.17 09:25 test123 GBPUSD,M5: 2015.03.17 09:25:00
2016.08.16 21:39:07.234 2015.03.17 09:20 test123 GBPUSD,M5: 2015.03.17 09:20:00
2016.08.16 21:39:07.234 2015.03.17 09:15 test123 GBPUSD,M5: 2015.03.17 09:15:00
2016.08.16 21:39:07.234 2015.03.17 09:10 test123 GBPUSD,M5: 2015.03.17 09:10:00
2016.08.16 21:39:07.234 2015.03.17 09:05 test123 GBPUSD,M5: 2015.03.17 09:05:00
2016.08.16 21:39:07.234 2015.03.17 09:00 test123 GBPUSD,M5: 2015.03.17 09:00:00
2016.08.16 21:39:07.234 2015.03.17 08:55 test123 GBPUSD,M5: 2015.03.17 08:55:00
2016.08.16 21:39:07.234 2015.03.17 08:50 test123 GBPUSD,M5: 2015.03.17 08:50:00
2016.08.16 21:39:07.234 2015.03.17 08:45 test123 GBPUSD,M5: 2015.03.17 08:45:00
2016.08.16 21:39:07.234 2015.03.17 08:40 test123 GBPUSD,M5: 2015.03.17 08:40:00
2016.08.16 21:39:07.234 2015.03.17 08:35 test123 GBPUSD,M5: 2015.03.17 08:35:00
2016.08.16 21:39:07.234 2015.03.17 03:50 test123 GBPUSD,M5: 2015.03.17 03:50:00

2016.08.16 21:39:07.234 2015.03.17 03:45 test123 GBPUSD,M5: 2015.03.17 03:45:00
2016.08.16 21:39:07.234 2015.03.17 03:40 test123 GBPUSD,M5: 2015.03.17 03:40:00
2016.08.16 21:39:07.234 2015.03.17 03:35 test123 GBPUSD,M5: 2015.03.17 03:35:00
2016.08.16 21:39:07.234 2015.03.17 03:30 test123 GBPUSD,M5: 2015.03.17 03:30:00
2016.08.16 21:39:07.234 2015.03.17 03:25 test123 GBPUSD,M5: 2015.03.17 03:25:00
2016.08.16 21:39:07.234 2015.03.17 03:20 test123 GBPUSD,M5: 2015.03.17 03:20:00
2016.08.16 21:39:07.234 2015.03.17 03:15 test123 GBPUSD,M5: 2015.03.17 03:15:00
2016.08.16 21:39:06.968 2015.03.10 22:30 test123 GBPUSD,M5: 2015.03.10 22:30:00

2016.08.16 21:39:06.968 2015.03.10 22:25 test123 GBPUSD,M5: 2015.03.10 22:25:00
2016.08.16 21:39:06.968 2015.03.10 22:20 test123 GBPUSD,M5: 2015.03.10 22:20:00
2016.08.16 21:39:06.968 2015.03.10 22:15 test123 GBPUSD,M5: 2015.03.10 22:15:00
2016.08.16 21:39:06.968 2015.03.10 22:10 test123 GBPUSD,M5: 2015.03.10 22:10:00
2016.08.16 21:39:06.968 2015.03.10 22:05 test123 GBPUSD,M5: 2015.03.10 22:05:00
2016.08.16 21:39:06.968 2015.03.10 22:00 test123 GBPUSD,M5: 2015.03.10 22:00:00
2016.08.16 21:39:06.968 2015.03.10 21:55 test123 GBPUSD,M5: 2015.03.10 21:55:00
2016.08.16 21:39:06.734 2015.03.05 10:10 test123 GBPUSD,M5: 2015.03.05 10:10:00

2016.08.16 21:39:06.734 2015.03.05 10:05 test123 GBPUSD,M5: 2015.03.05 10:05:00
2016.08.16 21:39:06.734 2015.03.05 10:00 test123 GBPUSD,M5: 2015.03.05 10:00:00
2016.08.16 21:39:06.734 2015.03.05 09:55 test123 GBPUSD,M5: 2015.03.05 09:55:00
2016.08.16 21:39:06.734 2015.03.05 09:50 test123 GBPUSD,M5: 2015.03.05 09:50:00
2016.08.16 21:39:06.734 2015.03.05 09:45 test123 GBPUSD,M5: 2015.03.05 09:45:00
2016.08.16 21:39:06.734 2015.03.05 09:40 test123 GBPUSD,M5: 2015.03.05 09:40:00
2016.08.16 21:39:06.734 2015.03.05 09:35 test123 GBPUSD,M5: 2015.03.05 09:35:00
2016.08.16 21:39:06.453 2015.02.24 07:30 test123 GBPUSD,M5: 2015.02.24 07:30:00

2016.08.16 21:39:06.453 2015.02.24 07:25 test123 GBPUSD,M5: 2015.02.24 07:25:00
2016.08.16 21:39:06.453 2015.02.24 07:20 test123 GBPUSD,M5: 2015.02.24 07:20:00
2016.08.16 21:39:06.453 2015.02.24 07:15 test123 GBPUSD,M5: 2015.02.24 07:15:00
2016.08.16 21:39:06.453 2015.02.24 07:10 test123 GBPUSD,M5: 2015.02.24 07:10:00
2016.08.16 21:39:06.453 2015.02.24 07:05 test123 GBPUSD,M5: 2015.02.24 07:05:00
2016.08.16 21:39:06.453 2015.02.24 07:00 test123 GBPUSD,M5: 2015.02.24 07:00:00
2016.08.16 21:39:06.453 2015.02.24 06:55 test123 GBPUSD,M5: 2015.02.24 06:55:00
2016.08.16 21:39:06.250 2015.02.17 15:30 test123 GBPUSD,M5: 2015.02.17 15:30:00

2016.08.16 21:39:06.250 2015.02.17 15:25 test123 GBPUSD,M5: 2015.02.17 15:25:00
2016.08.16 21:39:06.250 2015.02.17 15:20 test123 GBPUSD,M5: 2015.02.17 15:20:00
2016.08.16 21:39:06.250 2015.02.17 15:15 test123 GBPUSD,M5: 2015.02.17 15:15:00
2016.08.16 21:39:06.250 2015.02.17 15:10 test123 GBPUSD,M5: 2015.02.17 15:10:00
2016.08.16 21:39:06.250 2015.02.17 15:05 test123 GBPUSD,M5: 2015.02.17 15:05:00
2016.08.16 21:39:06.250 2015.02.17 15:00 test123 GBPUSD,M5: 2015.02.17 15:00:00
2016.08.16 21:39:06.250 2015.02.17 14:55 test123 GBPUSD,M5: 2015.02.17 14:55:00
2016.08.16 21:39:05.968 2015.02.06 02:10 test123 GBPUSD,M5: 2015.02.06 02:10:00

2016.08.16 21:39:05.968 2015.02.06 02:05 test123 GBPUSD,M5: 2015.02.06 02:05:00
2016.08.16 21:39:05.968 2015.02.06 02:00 test123 GBPUSD,M5: 2015.02.06 02:00:00
2016.08.16 21:39:05.968 2015.02.06 01:55 test123 GBPUSD,M5: 2015.02.06 01:55:00
2016.08.16 21:39:05.968 2015.02.06 01:50 test123 GBPUSD,M5: 2015.02.06 01:50:00
2016.08.16 21:39:05.968 2015.02.06 01:45 test123 GBPUSD,M5: 2015.02.06 01:45:00
2016.08.16 21:39:05.968 2015.02.06 01:40 test123 GBPUSD,M5: 2015.02.06 01:40:00
2016.08.16 21:39:05.968 2015.02.06 01:35 test123 GBPUSD,M5: 2015.02.06 01:35:00
2016.08.16 21:39:05.734 2015.01.29 18:10 test123 GBPUSD,M5: 2015.01.29 18:10:00

2016.08.16 21:39:05.734 2015.01.29 18:05 test123 GBPUSD,M5: 2015.01.29 18:05:00
2016.08.16 21:39:05.734 2015.01.29 18:00 test123 GBPUSD,M5: 2015.01.29 18:00:00
2016.08.16 21:39:05.734 2015.01.29 17:55 test123 GBPUSD,M5: 2015.01.29 17:55:00
2016.08.16 21:39:05.734 2015.01.29 17:50 test123 GBPUSD,M5: 2015.01.29 17:50:00
2016.08.16 21:39:05.734 2015.01.29 17:45 test123 GBPUSD,M5: 2015.01.29 17:45:00
2016.08.16 21:39:05.734 2015.01.29 17:40 test123 GBPUSD,M5: 2015.01.29 17:40:00
2016.08.16 21:39:05.734 2015.01.29 17:35 test123 GBPUSD,M5: 2015.01.29 17:35:00
2016.08.16 21:39:05.468 2015.01.22 15:30 test123 GBPUSD,M5: 2015.01.22 15:30:00

2016.08.16 21:39:05.468 2015.01.22 15:25 test123 GBPUSD,M5: 2015.01.22 15:25:00
2016.08.16 21:39:05.468 2015.01.22 15:20 test123 GBPUSD,M5: 2015.01.22 15:20:00
2016.08.16 21:39:05.468 2015.01.22 15:15 test123 GBPUSD,M5: 2015.01.22 15:15:00
2016.08.16 21:39:05.468 2015.01.22 15:10 test123 GBPUSD,M5: 2015.01.22 15:10:00
2016.08.16 21:39:05.468 2015.01.22 15:05 test123 GBPUSD,M5: 2015.01.22 15:05:00
2016.08.16 21:39:05.468 2015.01.22 15:00 test123 GBPUSD,M5: 2015.01.22 15:00:00
2016.08.16 21:39:05.468 2015.01.22 14:55 test123 GBPUSD,M5: 2015.01.22 14:55:00
2016.08.16 21:39:05.203 2015.01.14 15:30 test123 GBPUSD,M5: 2015.01.14 15:30:00

2016.08.16 21:39:05.203 2015.01.14 15:25 test123 GBPUSD,M5: 2015.01.14 15:25:00
2016.08.16 21:39:05.203 2015.01.14 15:20 test123 GBPUSD,M5: 2015.01.14 15:20:00
2016.08.16 21:39:05.203 2015.01.14 15:15 test123 GBPUSD,M5: 2015.01.14 15:15:00
2016.08.16 21:39:05.203 2015.01.14 15:10 test123 GBPUSD,M5: 2015.01.14 15:10:00
2016.08.16 21:39:05.203 2015.01.14 15:05 test123 GBPUSD,M5: 2015.01.14 15:05:00
2016.08.16 21:39:05.203 2015.01.14 15:00 test123 GBPUSD,M5: 2015.01.14 15:00:00
2016.08.16 21:39:05.203 2015.01.14 14:55 test123 GBPUSD,M5: 2015.01.14 14:55:00
2016.08.16 21:39:04.968 2015.01.06 20:50 test123 GBPUSD,M5: 2015.01.06 20:50:00

2016.08.16 21:39:04.968 2015.01.06 20:45 test123 GBPUSD,M5: 2015.01.06 20:45:00
2016.08.16 21:39:04.968 2015.01.06 20:40 test123 GBPUSD,M5: 2015.01.06 20:40:00
2016.08.16 21:39:04.968 2015.01.06 20:35 test123 GBPUSD,M5: 2015.01.06 20:35:00
2016.08.16 21:39:04.968 2015.01.06 20:30 test123 GBPUSD,M5: 2015.01.06 20:30:00
2016.08.16 21:39:04.968 2015.01.06 20:25 test123 GBPUSD,M5: 2015.01.06 20:25:00
2016.08.16 21:39:04.968 2015.01.06 20:20 test123 GBPUSD,M5: 2015.01.06 20:20:00
2016.08.16 21:39:04.968 2015.01.06 20:15 test123 GBPUSD,M5: 2015.01.06 20:15:00



почему получаются пропуски во времени?

Добавлено: 16-08-2016 20:30:08

видимо, в лог пишется всё, а в тестере на вкладке "журнал", почему-то, выпадает.
ну вот, на самом интересном месте... Изменено пользователем machine
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Возможно потому, что Тик - это изменение цены или курса валюты. Например, если цена изменилась, говорят, что произошел один тик. Так же - это Единичная котировка, поступающая из информационной системы (в данном случае ...я так понимаю tickstory) - что metat не особо волнует)0.
Проверьте настройки и требования программы (для выходных данных). Не забывайте про 99%))
И вот кусок кода для сравнения результатов Вашей пары-----



bool timeprev;

void OnTick(){

if (timeprev == Time[0]) return;

timeprev = Time[0];


Print("Current bar for GBPUSD M5: ",iTime("GBPUSD",PERIOD_M5,0),", ", iOpen("GBPUSD",PERIOD_M5,0),", ",
iHigh("GBPUSD",PERIOD_M5,0),", ", iLow("GBPUSD",PERIOD_M5,0),", ",
iClose("GBPUSD",PERIOD_M5,0),", ", iVolume("GBPUSD",PERIOD_M5,0));

Print(Time[0]);

11111.mq4

Изменено пользователем sniv
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Вставсь такой код, а не свой и все у тебя будет гуд <:-p>

Спойлер

void OnInit()
{
EventSetTimer(1);
}
void OnDeinit()
{
EventKillTimer();
}
void OnTimer()
{
if (timeprev == Time[0]) return;
timeprev = Time[0];
Print(Time[0]);
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Спойлер


берём простой код:

void OnTick(){

if (timeprev == Time[0]) return;
timeprev = Time[0];

Print(Time[0]);

}


ставим на GBPUSD, M5, 99%

получаем:
Спойлер

Цитата

2016.08.16 21:39:07.234 2015.03.17 09:40 test123 GBPUSD,M5: 2015.03.17 09:40:00
2016.08.16 21:39:07.234 2015.03.17 09:35 test123 GBPUSD,M5: 2015.03.17 09:35:00
2016.08.16 21:39:07.234 2015.03.17 09:30 test123 GBPUSD,M5: 2015.03.17 09:30:00
2016.08.16 21:39:07.234 2015.03.17 09:25 test123 GBPUSD,M5: 2015.03.17 09:25:00
2016.08.16 21:39:07.234 2015.03.17 09:20 test123 GBPUSD,M5: 2015.03.17 09:20:00
2016.08.16 21:39:07.234 2015.03.17 09:15 test123 GBPUSD,M5: 2015.03.17 09:15:00
2016.08.16 21:39:07.234 2015.03.17 09:10 test123 GBPUSD,M5: 2015.03.17 09:10:00
2016.08.16 21:39:07.234 2015.03.17 09:05 test123 GBPUSD,M5: 2015.03.17 09:05:00
2016.08.16 21:39:07.234 2015.03.17 09:00 test123 GBPUSD,M5: 2015.03.17 09:00:00
2016.08.16 21:39:07.234 2015.03.17 08:55 test123 GBPUSD,M5: 2015.03.17 08:55:00
2016.08.16 21:39:07.234 2015.03.17 08:50 test123 GBPUSD,M5: 2015.03.17 08:50:00
2016.08.16 21:39:07.234 2015.03.17 08:45 test123 GBPUSD,M5: 2015.03.17 08:45:00
2016.08.16 21:39:07.234 2015.03.17 08:40 test123 GBPUSD,M5: 2015.03.17 08:40:00
2016.08.16 21:39:07.234 2015.03.17 08:35 test123 GBPUSD,M5: 2015.03.17 08:35:00
2016.08.16 21:39:07.234 2015.03.17 03:50 test123 GBPUSD,M5: 2015.03.17 03:50:00

2016.08.16 21:39:07.234 2015.03.17 03:45 test123 GBPUSD,M5: 2015.03.17 03:45:00
2016.08.16 21:39:07.234 2015.03.17 03:40 test123 GBPUSD,M5: 2015.03.17 03:40:00
2016.08.16 21:39:07.234 2015.03.17 03:35 test123 GBPUSD,M5: 2015.03.17 03:35:00
2016.08.16 21:39:07.234 2015.03.17 03:30 test123 GBPUSD,M5: 2015.03.17 03:30:00
2016.08.16 21:39:07.234 2015.03.17 03:25 test123 GBPUSD,M5: 2015.03.17 03:25:00
2016.08.16 21:39:07.234 2015.03.17 03:20 test123 GBPUSD,M5: 2015.03.17 03:20:00
2016.08.16 21:39:07.234 2015.03.17 03:15 test123 GBPUSD,M5: 2015.03.17 03:15:00
2016.08.16 21:39:06.968 2015.03.10 22:30 test123 GBPUSD,M5: 2015.03.10 22:30:00

2016.08.16 21:39:06.968 2015.03.10 22:25 test123 GBPUSD,M5: 2015.03.10 22:25:00
2016.08.16 21:39:06.968 2015.03.10 22:20 test123 GBPUSD,M5: 2015.03.10 22:20:00
2016.08.16 21:39:06.968 2015.03.10 22:15 test123 GBPUSD,M5: 2015.03.10 22:15:00
2016.08.16 21:39:06.968 2015.03.10 22:10 test123 GBPUSD,M5: 2015.03.10 22:10:00
2016.08.16 21:39:06.968 2015.03.10 22:05 test123 GBPUSD,M5: 2015.03.10 22:05:00
2016.08.16 21:39:06.968 2015.03.10 22:00 test123 GBPUSD,M5: 2015.03.10 22:00:00
2016.08.16 21:39:06.968 2015.03.10 21:55 test123 GBPUSD,M5: 2015.03.10 21:55:00
2016.08.16 21:39:06.734 2015.03.05 10:10 test123 GBPUSD,M5: 2015.03.05 10:10:00

2016.08.16 21:39:06.734 2015.03.05 10:05 test123 GBPUSD,M5: 2015.03.05 10:05:00
2016.08.16 21:39:06.734 2015.03.05 10:00 test123 GBPUSD,M5: 2015.03.05 10:00:00
2016.08.16 21:39:06.734 2015.03.05 09:55 test123 GBPUSD,M5: 2015.03.05 09:55:00
2016.08.16 21:39:06.734 2015.03.05 09:50 test123 GBPUSD,M5: 2015.03.05 09:50:00
2016.08.16 21:39:06.734 2015.03.05 09:45 test123 GBPUSD,M5: 2015.03.05 09:45:00
2016.08.16 21:39:06.734 2015.03.05 09:40 test123 GBPUSD,M5: 2015.03.05 09:40:00
2016.08.16 21:39:06.734 2015.03.05 09:35 test123 GBPUSD,M5: 2015.03.05 09:35:00
2016.08.16 21:39:06.453 2015.02.24 07:30 test123 GBPUSD,M5: 2015.02.24 07:30:00

2016.08.16 21:39:06.453 2015.02.24 07:25 test123 GBPUSD,M5: 2015.02.24 07:25:00
2016.08.16 21:39:06.453 2015.02.24 07:20 test123 GBPUSD,M5: 2015.02.24 07:20:00
2016.08.16 21:39:06.453 2015.02.24 07:15 test123 GBPUSD,M5: 2015.02.24 07:15:00
2016.08.16 21:39:06.453 2015.02.24 07:10 test123 GBPUSD,M5: 2015.02.24 07:10:00
2016.08.16 21:39:06.453 2015.02.24 07:05 test123 GBPUSD,M5: 2015.02.24 07:05:00
2016.08.16 21:39:06.453 2015.02.24 07:00 test123 GBPUSD,M5: 2015.02.24 07:00:00
2016.08.16 21:39:06.453 2015.02.24 06:55 test123 GBPUSD,M5: 2015.02.24 06:55:00
2016.08.16 21:39:06.250 2015.02.17 15:30 test123 GBPUSD,M5: 2015.02.17 15:30:00

2016.08.16 21:39:06.250 2015.02.17 15:25 test123 GBPUSD,M5: 2015.02.17 15:25:00
2016.08.16 21:39:06.250 2015.02.17 15:20 test123 GBPUSD,M5: 2015.02.17 15:20:00
2016.08.16 21:39:06.250 2015.02.17 15:15 test123 GBPUSD,M5: 2015.02.17 15:15:00
2016.08.16 21:39:06.250 2015.02.17 15:10 test123 GBPUSD,M5: 2015.02.17 15:10:00
2016.08.16 21:39:06.250 2015.02.17 15:05 test123 GBPUSD,M5: 2015.02.17 15:05:00
2016.08.16 21:39:06.250 2015.02.17 15:00 test123 GBPUSD,M5: 2015.02.17 15:00:00
2016.08.16 21:39:06.250 2015.02.17 14:55 test123 GBPUSD,M5: 2015.02.17 14:55:00
2016.08.16 21:39:05.968 2015.02.06 02:10 test123 GBPUSD,M5: 2015.02.06 02:10:00

2016.08.16 21:39:05.968 2015.02.06 02:05 test123 GBPUSD,M5: 2015.02.06 02:05:00
2016.08.16 21:39:05.968 2015.02.06 02:00 test123 GBPUSD,M5: 2015.02.06 02:00:00
2016.08.16 21:39:05.968 2015.02.06 01:55 test123 GBPUSD,M5: 2015.02.06 01:55:00
2016.08.16 21:39:05.968 2015.02.06 01:50 test123 GBPUSD,M5: 2015.02.06 01:50:00
2016.08.16 21:39:05.968 2015.02.06 01:45 test123 GBPUSD,M5: 2015.02.06 01:45:00
2016.08.16 21:39:05.968 2015.02.06 01:40 test123 GBPUSD,M5: 2015.02.06 01:40:00
2016.08.16 21:39:05.968 2015.02.06 01:35 test123 GBPUSD,M5: 2015.02.06 01:35:00
2016.08.16 21:39:05.734 2015.01.29 18:10 test123 GBPUSD,M5: 2015.01.29 18:10:00

2016.08.16 21:39:05.734 2015.01.29 18:05 test123 GBPUSD,M5: 2015.01.29 18:05:00
2016.08.16 21:39:05.734 2015.01.29 18:00 test123 GBPUSD,M5: 2015.01.29 18:00:00
2016.08.16 21:39:05.734 2015.01.29 17:55 test123 GBPUSD,M5: 2015.01.29 17:55:00
2016.08.16 21:39:05.734 2015.01.29 17:50 test123 GBPUSD,M5: 2015.01.29 17:50:00
2016.08.16 21:39:05.734 2015.01.29 17:45 test123 GBPUSD,M5: 2015.01.29 17:45:00
2016.08.16 21:39:05.734 2015.01.29 17:40 test123 GBPUSD,M5: 2015.01.29 17:40:00
2016.08.16 21:39:05.734 2015.01.29 17:35 test123 GBPUSD,M5: 2015.01.29 17:35:00
2016.08.16 21:39:05.468 2015.01.22 15:30 test123 GBPUSD,M5: 2015.01.22 15:30:00

2016.08.16 21:39:05.468 2015.01.22 15:25 test123 GBPUSD,M5: 2015.01.22 15:25:00
2016.08.16 21:39:05.468 2015.01.22 15:20 test123 GBPUSD,M5: 2015.01.22 15:20:00
2016.08.16 21:39:05.468 2015.01.22 15:15 test123 GBPUSD,M5: 2015.01.22 15:15:00
2016.08.16 21:39:05.468 2015.01.22 15:10 test123 GBPUSD,M5: 2015.01.22 15:10:00
2016.08.16 21:39:05.468 2015.01.22 15:05 test123 GBPUSD,M5: 2015.01.22 15:05:00
2016.08.16 21:39:05.468 2015.01.22 15:00 test123 GBPUSD,M5: 2015.01.22 15:00:00
2016.08.16 21:39:05.468 2015.01.22 14:55 test123 GBPUSD,M5: 2015.01.22 14:55:00
2016.08.16 21:39:05.203 2015.01.14 15:30 test123 GBPUSD,M5: 2015.01.14 15:30:00

2016.08.16 21:39:05.203 2015.01.14 15:25 test123 GBPUSD,M5: 2015.01.14 15:25:00
2016.08.16 21:39:05.203 2015.01.14 15:20 test123 GBPUSD,M5: 2015.01.14 15:20:00
2016.08.16 21:39:05.203 2015.01.14 15:15 test123 GBPUSD,M5: 2015.01.14 15:15:00
2016.08.16 21:39:05.203 2015.01.14 15:10 test123 GBPUSD,M5: 2015.01.14 15:10:00
2016.08.16 21:39:05.203 2015.01.14 15:05 test123 GBPUSD,M5: 2015.01.14 15:05:00
2016.08.16 21:39:05.203 2015.01.14 15:00 test123 GBPUSD,M5: 2015.01.14 15:00:00
2016.08.16 21:39:05.203 2015.01.14 14:55 test123 GBPUSD,M5: 2015.01.14 14:55:00
2016.08.16 21:39:04.968 2015.01.06 20:50 test123 GBPUSD,M5: 2015.01.06 20:50:00

2016.08.16 21:39:04.968 2015.01.06 20:45 test123 GBPUSD,M5: 2015.01.06 20:45:00
2016.08.16 21:39:04.968 2015.01.06 20:40 test123 GBPUSD,M5: 2015.01.06 20:40:00
2016.08.16 21:39:04.968 2015.01.06 20:35 test123 GBPUSD,M5: 2015.01.06 20:35:00
2016.08.16 21:39:04.968 2015.01.06 20:30 test123 GBPUSD,M5: 2015.01.06 20:30:00
2016.08.16 21:39:04.968 2015.01.06 20:25 test123 GBPUSD,M5: 2015.01.06 20:25:00
2016.08.16 21:39:04.968 2015.01.06 20:20 test123 GBPUSD,M5: 2015.01.06 20:20:00
2016.08.16 21:39:04.968 2015.01.06 20:15 test123 GBPUSD,M5: 2015.01.06 20:15:00



почему получаются пропуски во времени?

Добавлено: 16-08-2016 20:30:08

видимо, в лог пишется всё, а в тестере на вкладке "журнал", почему-то, выпадает.
ну вот, на самом интересном месте...


У меня этот несколько модифицированный код дает пропуски с пятницы на понедельник, или когда явная дыра в истории (тикстори дука 99%).

Какой тип переменной "timeprev" в вашем коде?

void OnTick()
{
//---
static datetime timeprev, mem;


if (timeprev == Time[0]) return;
timeprev = Time[0];

if(timeprev - mem > 301)
Print("!!! timeprev - mem= ", int(timeprev - mem)," mem= ", TimeToString(mem, TIME_DATE|TIME_SECONDS), " timeprev= ", TimeToString(timeprev, TIME_DATE|TIME_SECONDS) );

mem = timeprev;

}



"видимо, в лог пишется всё, а в тестере на вкладке "журнал", почему-то, выпадает.
ну вот, на самом интересном месте..."

Да в лог все попадает, а в журнал фильтруется то чего много и очень быстро генерится. Изменено пользователем dzennn2
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте товарищи, подскажите пожалуйста в чем проблема? запускаю тестер стратегий с данным советником, но он неправильно считает хай и лоу в заданном временном периоде! а запускаю в режиме реального тестирование нормально работает, только вот не обновляет хаи и лоу если наступил следующий день!

Спойлер

//+------------------------------------------------------------------+
//| GEAF.mq4 |
//| Foxonn |
//| hitman_94_1@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Foxonn"
#property link "hitman_94_1@mail.ru"
#property version "1.00"

extern string com = "Asia Box";
extern double Lots = 1.0;
extern double Mtp = 3.0; //множитель тейкпрофита от ширины коробки
extern double Mkoef = 2.0; //коэфециент умножения для мартина
extern double Otstypotgranic = 0.00050; //отступ от граници коробки
extern int RazmerKorobki = 500; //ограничения на размер коробки
extern int Slippage = 1;
extern int Magic = 101010;
extern string TimeStart = "10:00";
extern string TimeStop = "23:00";

int prodazhi=0,pokypki=0;
double lo=0,hi=0,oOpen=0;

string itrade, hlhp=0, hllp=0, flat, trend, price;
double sl=0,tp=0,dist=0,boxsize=0,otstupothi=0,otstupotlo=0,Lot=0;
int ticket,timetrade,j;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if( Digits == 3 || Digits == 5)
{
Slippage *= 10;
}

if(TimeHour(TimeCurrent()) >= TimeStart && TimeHour(TimeCurrent()) {
prodazhi = 1;
Print("Имеется сигнал на продажу, сделка откроется при повторном сигнале!");
} else if (price == flat)
{
prodazhi = 0;
}

if(TimeHour(TimeCurrent()) >= TimeStart && TimeHour(TimeCurrent()) otstupothi && boxsize {
pokypki = 1;
Print("Имеется сигнал на покупку, сделка откроется при повторном сигнале!");
} else if (price == flat)
{
pokypki = 0;
}

return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{ //--------------------------------------------------------

Comment("Баланс: " + NormalizeDouble(AccountBalance(),2)
+ "\n" + "Следующий лот: " + (Lot)
+ "\n" + "Ширина коробки: " + (boxsize)
+ "\n" + "Значение верхней шраницы коробки: " + (hi)
+ "\n" + "Значние нижней шраницы коробки: " + (lo)
+ "\n" + "Торговля в данное время: " +(itrade));
//+------------------------------------------------------------------+
if (TimeHour(TimeCurrent()) >= TimeStart && TimeHour(TimeCurrent()) {
itrade = " разрешена";
timetrade = 0;
} else itrade = " запрещена";
timetrade = 1;
//+------------------------------------------------------------------+
dist = hi - lo; //находим дистанциюмежду Hight и Low точками.
boxsize = dist * 100000;
//+------------------------------------------------------------------+
otstupothi = hi + Otstypotgranic; //Отступ от границ коробки.
otstupotlo = lo - Otstypotgranic;
//+------------------------------------------------------------------+
j = OrdersHistoryTotal()-1;
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==true && OrderMagicNumber() == Magic && OrderSymbol() == Symbol() && OrderProfit() {
Lot = Lots * Mkoef;
Print("Работает мартингейл!");
}
else
{
Lot = Lots;
}
//+------------------------------------------------------------------+
if(Ask && Bid lo)
{
price = flat;
}else price = trend;
//+------------------------------------------------------------------+
oOpen = iOpen(0,0,0);
//+------------------------------------------------------------------+
datetime timestart=D'07:00'; //время поиска, от
datetime timeend=D'09:59'; //и до

int shiftstart=0,shiftend=0,diff=0;

shiftstart=iBarShift(Symbol(),0,timestart); //выясняем индекс бара с временем старта поиска
shiftend=iBarShift(Symbol(),0,timeend); //выясняем индекс бара с временем финиша поиска
diff=shiftstart-shiftend; //вычисляем кол-во баров для поиска экстремумов
lo=iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,diff,shiftend)); //выясняем минимум
hi=iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,diff,shiftend)); //и максимум
//+------------------------------------------------------------------+
if (TimeHour(TimeCurrent()) >= TimeStart && TimeHour(TimeCurrent()) {
tp = NormalizeDouble(lo - (dist*Mtp), Digits);
sl = NormalizeDouble(otstupothi, Digits);
ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, sl, tp, com, Magic, 0, Red);
if(ticket prodazhi = 1;
pokypki = 0;
}

if (TimeHour(TimeCurrent()) >= TimeStart && TimeHour(TimeCurrent()) otstupothi && boxsize {
tp = NormalizeDouble(hi + (dist*Mtp), Digits);
sl = NormalizeDouble(otstupotlo, Digits);
ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, sl, tp, com, Magic, 0, Blue);
if(ticket prodazhi = 0;
pokypki = 1;
}
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;

for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
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))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+

AsiaBoxEA.mq4

Изменено пользователем Foxonn
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Цитата

Здравствуйте товарищи, подскажите пожалуйста в чем проблема?


Бегло пробежался, думаю тут следующие ошибки (возможно, более тщательный взгляд показал бы больше):
Мне кажется, что проблема в том, что неправильно указал время timestart и timeend. Выдержка из справочника:
Цитата

//--- примеры объявлений, на которые будут получены предупреждения компилятора
datetime warning1=D'12:30:27'; // равнозначно D'[дата компиляции] 12:30:27'
datetime warning2=D''; // равнозначно __DATETIME__


в режиме реального времени нормально работает, потому что он берет даты с последней компиляции, попробуйте запустить через день после этого, не компилируя - выдаст вчерашние значения.
Код неудобно читать - почему бы не сделать по порядку все расчеты - в начале рассчитать хай и лоу, а затем уж их использовать.
А чтобы каждый день обновлял, как раз и надо в переменных datetime объявить полностью с днем - "datetime NY=D'2015.01.01 00:00'" и вместо 2015.01.01 подставлять текущий день. можно подумать, как это лучше сделать ;)
Я бы использовал действительные переменные double выведенные из datetime. А вообще, пока писал это сообщение, вижу много несостыковок в коде - к примеру, в OnInit Вы сравниваете переменные int (TimeHour) и строковые переменные string (TimeStart)... В общем, надо разбираться, я Вас натолкнул, надеюсь, в нужное русло :-?
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...