[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 390

 
chief2000 >>:

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

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

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

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

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

Por supuesto que habrá descargas, así que por qué habría que convertir las actas.

Puede tomar el CSV original y ejecutar un programa escrito por usted mismo para obtener todos los plazos estándar en los archivos de salida e importarlos.

 

Hola a todos.

No hay manera de que pueda implementar un algoritmo simple:

Después de una compra/venta una orden se cierra después de 2 barras.

No se me ocurre nada mejor que un temporizador, pero el temporizador está vinculado a un marco temporal y lo necesito después de n barras.

 

Hola de nuevo y de nuevo una pregunta que no puedo responder yo mismo.

Estoy escribiendo un Asesor Experto para practicar la colocación de órdenes cuando aparece una condición. La tarea es sencilla: negociar una sola posición. Si el precio es superior a МА10, compraré; si es inferior, venderé. Quiero probar la posibilidad de usar magos de órdenes para que el Asesor Experto cierre exactamente las órdenes que él mismo colocó. También existe la segunda variante de condiciones de compra y venta (aún no las he añadido). Y debería determinar por sí mismo a qué condición pertenece la orden - el código mágico se establece en la función que activa la apertura de una posición. Del mismo modo, según las condiciones, al principio debe determinar si hay una posición o no y luego buscar las condiciones de Compra o Venta.


Aquí está el código:


// Мувинг и цена
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;
}


Y este código, a pesar de que debería negociar una sola posición (sí, hay que buscar condiciones de venta, no, hay que buscar condiciones de compra), abre un gran número de posiciones y luego no las cierra. Mi cabeza ya está rota. ¿Puede decirme qué pasa?

 
sigma7i >>:

Всем привет!

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

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

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


Revise las órdenes abiertas, vea cuándo se abrieron y compárelas con la hora actual, han pasado dos barras y ciérrelas.
 
splxgf >>:

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

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

Parece que lo he confundido con MT5 - parece que los plazos más altos se generan a partir de períodos de 1 minuto, mientras que en MT4 es la misma forma antigua.

 
Vinin >>:

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

Gracias.

 

El convertidor de periodo es bueno para los gráficos, pero no se puede alimentar a un probador.

Uy, miré cómo funciona, sí escribe un archivo de historial recodificado. https://www.mql5.com/ru/code/8560

 

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

en CheckBuy añadir un orden de apertura mayor que cero, entonces fuera.

 
splxgf >>:

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

Sí, me pondré a ello. Gracias.

Pero aún así, ¿por qué compra muchas posiciones en primer lugar? Al fin y al cabo, al principio se le dice que si hay una posición -no se va aquí, se va allí-... Por idea, ni siquiera debería entrar en esta pieza de código. ¿O tal vez no lo entiendo?

 
Jahspear >>:

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

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


Aunque ahora he mirado el código con más detenimiento, es difícil entenderlo sin medio litro, te enviaré mi correo e intentaré explicar lo que he hecho ahí.