[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 390

 
chief2000 >>:

Я экспортировал CSV-файл (1 мин с 1999 года) из МТ одного брокера. Попытался импортировать в МТ другого брокера - 1 минутки получил

без проблем, с 1999. Но вот что-то не пойму как во 2-м МТ получить 5, 15-мин и т.д. графики? - Т.е. после импортирования 1 минуток переключился на

5 минутный график и похоже МТ пытается докачать их из интернета, вместо конвертирования их из уже имеющихся 1-минуток.

Перегружал МТ - не помогло.

- Есть какое-нибудь нормальное решение для конвертирования 1 МИН в более высокие таймфреймы?

Ну естественно будет происходить докачка, с чего вдруг она должна происходить конвертация из минуток.

Можно взять исходный CSV и прогнать самописной прогой для получения на выходе в файлах всех стандартных таймфремов и импортировать их.

 

Всем привет!

Простой алгоритм никак не могу реализовать:

После покупки/продажи закрытие ордера через 2 бара.

Кроме таймера ничего лучше придумать не могу, но у таймера есть привязка к тайм фрейму, а мне необходимо через n баров.

 

Всем привет еще раз и опять вопрос, на который я не могу ответить сам.

Пишу эксперта для тренировки выставления ордеров при появлении условия. Задача простая: чтобы торговал только одной позицией. Чтобы, если цена выше МА10 - покупал, если ниже - продавал. Причем еще и тестирую возможность использования магиков ордеров - чтобы эксперт закрывал именно те ордера, что сам ставил. А также, существует, скажем, второй вариант условий на покупку-продажу (пока не добавлял). И чтобы он сам определял, к какому условию относится ордер - магик задается в той функции, которая вызывает открытие позиции. Так же, по условиям, в самом начале он должен определять,есть или нет позиция и идти либо в поиск условий на покупку, либо в поиск условий на продажу.


Вот код:


// Мувинг и цена
double MA10;
double Price;
// Есть или нет позиция и ее номер
int Pos;
int Magic;
double Lot=0.1;
double SL;
double TP;
int Slippage=3;

//--------------------------------------------------------------------

void start()
{
MA10 = iMA(NULL,0,10,0,0,0,0);
Price = Bid;

CheckPos();
}

//--------------------------------------------------------------------

void CheckPos()
{
if(Pos==0)
CheckBuy();
CheckSell();
}

//--------------------------------------------------------------------
// Поиск условий для покупки и продажи
//--------------------------------------------------------------------

void CheckBuy()
{
if (NormalizeDouble(Price,Digits) > NormalizeDouble(MA10,Digits))
Magic=10;
Buy();
return;
}

//--------------------------------------------------------------------

void CheckSell()
{
if (NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits))
Sell();
return;
}

//--------------------------------------------------------------------
// Выставление ордеров
//--------------------------------------------------------------------

void Buy()
{
string Symb=Symbol();
Pos=1;

OrderSend(Symb, OP_BUY, Lot, Ask, Slippage, SL, TP, NULL, Magic);
return;
}
//--------------------------------------------------------------------

void Sell()
{
Pos=0;
OrderClose(Magic, Lot, Bid, Slippage);
return;
}


И вот он, зараза, несмотря на то, что должен торговать только одной позицией (есть - ищем условия на продажу, нет - ищем условия на покупку), открывает большое количество позиций, и потом их не закрывает. Я уже голову поломал. Подскажите, что не так?

 
sigma7i >>:

Всем привет!

Простой алгоритм никак не могу реализовать:

После покупки/продажи закрытие ордера через 2 бара.

Кроме таймера ничего лучше придумать не могу, но у таймера есть привязка к тайм фрейму, а мне необходимо через n баров.


Перебираешь открытые ордера, смотришь когда они были открыты и сравниваешь с текущим временем, два бара прошло закрываешь.
 
splxgf >>:

Ну естественно будет происходить докачка, с чего вдруг она должна происходить конвертация из минуток.

Можно взять исходный CSV и прогнать самописной прогой для получения на выходе в файлах всех стандартных таймфремов и импортировать их.

Я кажется перепутал с МТ5 - там вроде более высокие таймфреймы генерируются из 1-минуток, а в МТ4 все по старинке.

 
Vinin >>:

Скрипт в CodeBase лежит, так и называется период конвертор

Спасибо!

 

Период конвертер для графиков сгодится, а тестеру его не скормишь.

Упс, глянул принцип работы, там все-таки пишется перекодированный файл истории. https://www.mql5.com/ru/code/8560

 

И вот он, зараза, несмотря на то, что должен торговать только одной позицией (есть - ищем условия на продажу, нет - ищем условия на покупку), открывает большое количество позиций, и потом их не закрывает. Я уже голову поломал. Подскажите, что не так?

в CheckBuy добавь иф опен ордерс больше нуля, то выходим.

 
splxgf >>:

в CheckBuy добавь иф опен ордерс больше нуля, то выходим.

Ага, щас добавлю. Спасибо.

Но всё-таки - почему он вообще покупает мого позиций? Ведь вначале ему сразу говорится, что если позиция есть - ты сюда не ходи, ты туда ходи? Он, по задумке, в этот кусок кода даже попадать не должен. Или я что не понимаю?

 
Jahspear >>:

Ага, щас добавлю. Спасибо.

Но всё-таки - почему он вообще покупает мого позиций? Ведь вначале ему сразу говорится, что если позиция есть - ты сюда не ходи, ты туда ходи? Он, по задумке, в этот кусок кода даже попадать не должен. Или я что не понимаю?


Хотя сейчас внимательней код глянул, тут без поллитра не разберешься, сейчас аську свою кину, попробую объяснить что там наваял.
Причина обращения: