MQL госпиталь (бывшая "Больничка"): исправляем ошибки

AlanTrade

Интересующийся
Ошибка записи 0

Здравия всем , Господа форумчане.
МТ4 не пишет файл. Открывает файл, выдаёт «Ошибка записи 0», т.е. нет ошибки и закрывает.
С файлами только начал работать. Хэндл какой то странный "1". Элементарная программка, вроде, всё правильно написал, что может быть?
С уважением, А.Н.

/+------------------------------------------------------------------+
//| News.mq4 |
//| Copyright 2018 |
//| // |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018"
#property link "//"
#property version "1.00"
#property strict
double arClose[50][2];
string Handle; // Файловый описатель
int i;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
Alert("Автоматическая торговля запрещена для счета ",AccountInfoInteger(ACCOUNT_LOGIN),
" на стороне торгового сервера");

//*************** Заполняем массив
for(i=0; i<50; i++) // Цикл по всему массиву
{
arClose[i,0]=Time;
arClose[i,1]=Close;
Print(arClose[i,0]);
Print(arClose[i,1]);
}//for(i=0; i<50; i++)
Handle=FileOpen("arClose"+TimeToString(arClose[0,0],TIME_DATE|TIME_MINUTES),FILE_WRITE|FILE_CSV,";");//Открытие файла +TimeToString(arClose[0,0])
if(Handle==-1) // Неудача при открытии файла
{
Alert("Ошибка при открытии файла. ",GetLastError());// Сообщение об ошибке
}//if(Handle==-1)
else
{
Alert("Файл открыт. ",Handle);// Сообщение об открытии
}//if(Handle==-1)
for(i=0; i<50; i++) // Цикл по всему массиву
{
if((FileWrite(Handle,arClose[i,0],arClose[i,1]))<0);//Запись в файл
{
Alert("Ошибка записи в файл ",GetLastError());// Сообщение
//FileClose( Handle ); // Закрываем файл
}
}//for(int i=0; i<9000; i++)
FileClose( Handle ); // Закрываем файл
Alert("Файл закріт.");// Сообщение

return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
if(!FileIsExist("arClose"+TimeToString(arClose[0,0])))
{
Handle=FileOpen("arClose"+TimeToString(arClose[0,0],TIME_DATE|TIME_MINUTES),FILE_CSV|FILE_WRITE,";");//Открытие файла
if(Handle==-1) // Неудача при открытии файла
{
Alert("Ошибка при открытии файла Deinit. ");// Сообщение об ошибке
}//if(Handle==-1)
for(int i=0; i<50; i++) // Цикл по всему массиву
{
if((FileWrite(Handle,arClose[i,0],arClose[i,1]))< 0);//Запись в файл
{
Alert("Ошибка записи в файл Deinit",GetLastError());// Сообщение
FileClose( Handle ); // Закрываем файл
}
}//for(int i=0; i<9000; i++)
FileClose( Handle ); // Закрываем файл
Alert("Файл создан.");// Сообщение
}// if(FileIsExist())
else Alert("Deinit. Файл существует.");
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
i=0;
}
//+------------------------------------------------------------------+
 

Вложения

  • Файл.mq4
    8,1 КБ · Просмотры: 33
Последнее редактирование модератором:

Fed77

Гуру форума
Привет.Лечил, лечил и не вылечил. Помогите плиз.
 

Вложения

  • ProTrader_edu.zip
    585,2 КБ · Просмотры: 85

vlad_123

Местный знаток
Господа форумчане.
МТ4 не пишет файл. Открывает файл, выдаёт «Ошибка записи 0», т.е. нет ошибки и закрывает.

Попробовать формировать имя файла не через TimeToString, а через IntegerToString(Time[0]...
Двоеточие в имени файла имхо некошерно.
 

MrGreen86

Гуру форума
Здравия всем , Господа форумчане.
МТ4 не пишет файл. Открывает файл, выдаёт «Ошибка записи 0», т.е. нет ошибки и закрывает.
С файлами только начал работать. Хэндл какой то странный "1". Элементарная программка, вроде, всё правильно написал, что может быть?
С уважением, А.Н.
у вас сразу несколько ошибок.
1) в имени файла отсутсвует расширение .csv
2) имя файла получается слишком длинное, оно просто не помщается.
я удалил из него точки и доветочие
3) вы не ставите указатель в файле FileSeek
4) в строке "if((FileWrite(Handle,arClose[i,0],arClose[i,1]))<0);"
зачем точка с запятой в конце?

вот исправленный вариант.
Посмотреть вложение Файл.mq4
 

vladej

Почетный гражданин
Добрый вечер Уважаемые программисты!! Кто нибудь может подремонтировать этот индюк, при компиляции выдаёт 12 ошибок и одно предупреждение. Вот файл для МТ4. Заранее всем благодарен!;)
 

Вложения

  • TMA.mq4
    8,4 КБ · Просмотры: 17

AlanTrade

Интересующийся
у вас сразу несколько ошибок.
1) в имени файла отсутсвует расширение .csv
2) имя файла получается слишком длинное, оно просто не помщается.
я удалил из него точки и доветочие
3) вы не ставите указатель в файле FileSeek
4) в строке "if((FileWrite(Handle,arClose[i,0],arClose[i,1]))<0);"
зачем точка с запятой в конце?


Посмотреть вложение 291427

Спасибо MrGreen86 и vlad_123 за помощь, заработало.
Действительно, критическим оказалось некорректное имя и ошибочная «;».
И никак не ожидал, что флага FILE_CSV недостаточно и расширение файла нужно дублировать в названии. Файл создаётся, но без расширения.

Еще вопрос, не знаете ли Вы, как получить время тиков от брокера с миллисекундами для анализа Bid?

Ещё раз благодарен, с уважением А.Н.
 
Последнее редактирование:

javckin

Почетный гражданин
может так?
 

Вложения

  • ProTrader.mq4
    250 КБ · Просмотры: 98
  • ProTrader.ex4
    291 КБ · Просмотры: 48

javckin

Почетный гражданин
нет ошибок
 

Вложения

  • Файл.mq4
    6 КБ · Просмотры: 52
  • Файл.ex4
    8 КБ · Просмотры: 32

Артмен

Новичок форума
Добрый день уважаемые программисты! Помогите пожалуйста - выдаёт в тестере ошибку 130 только на сэлл, а на бай открывает без проблем;Код прилагаю;
void OpenOrder()
{
//======================================================
Stoploss = Stoploss*Point;
Takeprofit = Takeprofit*Point;
//==============================================================================================================
if(p1 > p0 && Alrt1==1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,Stoploss,Takeprofit,comm_buy,Magic,0,clr_buy);
if(ticket<=0) Print("Ошибка открытия ордера на покупку! - ",GetLastError());
}
if(p1 < p0 && Alrt2==2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Ask,Slippage,Stoploss,Takeprofit,comm_sell,Magic,0,clr_sell);
if(ticket<=0) Print("Ошибка открытия ордера на продажу! - ",GetLastError());
}

}
 

AlexeyVik

Программист mql4 mql5
Добрый день уважаемые программисты! Помогите пожалуйста - выдаёт в тестере ошибку 130 только на сэлл, а на бай открывает без проблем;Код прилагаю;
void OpenOrder()
{
//======================================================
Stoploss = Stoploss*Point;
Takeprofit = Takeprofit*Point;
//==============================================================================================================
if(p1 > p0 && Alrt1==1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,Stoploss,Takeprofit,comm_buy,Magic,0,clr_buy);
if(ticket<=0) Print("Ошибка открытия ордера на покупку! - ",GetLastError());
}
if(p1 < p0 && Alrt2==2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Ask,Slippage,Stoploss,Takeprofit,comm_sell,Magic,0,clr_sell);
if(ticket<=0) Print("Ошибка открытия ордера на продажу! - ",GetLastError());
}

}
Ордер Sell открывается по цене Bid а не Ask.
 

Kasander

Местный знаток
Всем доброго дня. У меня тут индикатор Vasia который работает только при наличии другого индикатора Renko_v.11

Кто-нибудь может сделать так что бы индикатор Vasia работал сам по себе без наличия в Терминале Renko_v.11?
 

Вложения

  • vasia.mq4
    3,9 КБ · Просмотры: 91
  • vasia.ex4
    10,4 КБ · Просмотры: 46
  • Renko_v11.mq4
    2,7 КБ · Просмотры: 83
  • Renko_v11.ex4
    8,1 КБ · Просмотры: 45

Fed77

Гуру форума
Всем доброго дня. У меня тут индикатор Vasia который работает только при наличии другого индикатора Renko_v.11

Кто-нибудь может сделать так что бы индикатор Vasia работал сам по себе без наличия в Терминале Renko_v.11?
Привет, чем вас Вася не устраивает? Можно сову по нему написать, смотрю входы хорошие получаются, вы тестировали сами эту систему? Какое соотношение прибыльных сделок к убыточным? У меня есть сова на продажу по ренко, там соотношение сделок в процентах- 80 положительных на 20 отрицательных.
 

Вложения

  • 89.jpg
    89.jpg
    100,9 КБ · Просмотры: 179
  • 90.jpg
    90.jpg
    143 КБ · Просмотры: 144
  • Вася.tpl
    1,2 КБ · Просмотры: 50

vaas04

$$$$$$$$$
Всем доброго дня. У меня тут индикатор Vasia который работает только при наличии другого индикатора Renko_v.11

Кто-нибудь может сделать так что бы индикатор Vasia работал сам по себе без наличия в Терминале Renko_v.11?
Проще сделать кастомный инди. Наличие первых двух в папке индикаторы обязательно. Удачи.
 

Вложения

  • EURUSDM1.png
    EURUSDM1.png
    47,4 КБ · Просмотры: 216
  • Vasia+Renko.mq4
    4,9 КБ · Просмотры: 70

Kasander

Местный знаток
Проще сделать кастомный инди. Наличие первых двух в папке индикаторы обязательно. Удачи.

Понял. Спасибо и за это.

Подскажите - вы могли бы прицепить индикатор Стрелочник Sixty Second Trade к индикатору ARSI ? То есть нужно что бы ADX который находится внутри индикатора Sixty Second Trade рассчитывался не от Цены, а от индикатора ARSI.

Это позволит убрать лишние Мини Сигналы и оставить только самые Основные:
 

Вложения

  • MetaTrader 4 Terminal_2.png
    MetaTrader 4 Terminal_2.png
    72,6 КБ · Просмотры: 177
  • SixtySecondTrades_Alert.mq4
    2,8 КБ · Просмотры: 58
  • ARSI.mq4
    1,9 КБ · Просмотры: 65
Последнее редактирование:
Верх