Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1926

 
Maxim Kuznetsov #:

Dibujar (vale, mapear) los niveles de "progresión, puede haber un stop loss" es, en general, bastante fácil. Pero no está muy claro POR QUÉ.

¿No ha intentado preguntar al cliente qué quiere allí en detalle?

PD / y, sí, es necesario hacer una "pausa creativa", creo que el cliente entenderá la situación.

Lleva más de una semana pensando y ya está decidido.

Originalmente era diferente, se entregó, pero después de una semana de pausa informó de las innovaciones. Entiendo que el encargo se ha completado, pero me parece mal dejar al cliente, aunque no formara parte de la RPT original.

Mi petición sigue en pie.

 
Vitaly Muzichenko #:

Lo pensó durante más de una semana y se decidió.

Originalmente era diferente, eso es lo que se entregó, pero después de una semana de pausa informó de las innovaciones. Entiendo que el encargo se ha completado, pero de alguna manera no me parece bien dejar al cliente, aunque no formara parte de los TdR originales.

¡Mi petición es válida!

Cálmate Vitaly, ¿la petición de qué?

para hacer ediciones en el EA ? no hay código ni lugar para hacer ediciones. Y no es del todo correcto editar el orden de los autónomos en este hilo. En general, ninguna de las partes

void OnStopLoss() {

    // some code placed here

}

es poco probable que ayude.

 
Maxim Kuznetsov #:

Cálmate Vitaly, ¿cuál es la petición?

¿Para hacer ediciones en el EA? No hay código ni lugar para hacer ediciones. Y no es del todo correcto corregir el orden de los autónomos en este hilo. En general, ninguna de las partes

void OnStopLoss() {

    // some code placed here

}

es poco útil.

En realidad no es un EA, es un arrastrador independiente que se cuelga en un gráfico y hace un seguimiento de todos los símbolos.

El código está muy hinchado

 
Vitaly Muzichenko #:

Hay una posición y un stoploss en ella.

En los ajustes la red de arrastre es de 30. Por lo tanto, mostrar la línea en el nivel donde la red de arrastre se activará, y así todas las 7 líneas: 30-60-90-120-150-180-210, como la progresión.

Pasado 30 y alcanzada la línea, el arrastre mueve los stops al nivel del precio de apertura, al llegar a 60, mueve los stops a +30 del precio de apertura, es decir, al nivel donde se disparó el primer stop, etc.

Supongo que quiere controlar las líneas del gráfico, pero esto es más complicado, así que hay que simplificarlo.

Alternativamente, ponga 7 parámetros para los niveles en la configuración.

P.D. Perdón por la larga respuesta, estaba perdiendo internet.

7 parámetros no es una opción) 7 nombres de líneas horizontales en los parámetros que dibujará y nombrará. Y bailaremos a partir de ellos. Y si los parámetros, el rango de movimiento del precio y el número de niveles. Calcula y dibuja. Pues bien, cuando el nivel se dispara, debería dibujar la línea sl y si ésta coincide con el nivel de precios, debería cambiar su color.
 
Valeriy Yastremskiy #:
7 parámetros no es una opción) 7 nombres de líneas horizontales en los parámetros que dibujará y nombrará. Y debemos proceder a partir de ellos. Y si los parámetros, el rango de movimiento del precio y el número de niveles. Calcula y dibuja. Pues bien, cuando el nivel se dispara, debería dibujar la línea sl y si ésta coincide con el nivel de precios, debería cambiar su color.

Se necesita un algoritmo que dibuje líneas en los precios calculados.

Cuando todas las posiciones estén cerradas, deberán ser eliminadas.

 
Valeriy Yastremskiy #:
7 parámetros no es una opción) 7 nombres de líneas horizontales en los parámetros que dibujará y nombrará. Y deberíamos bailar a partir de ellos. Si los parámetros, el rango de movimiento del precio y el número de niveles. Calcula y dibuja. Pues bien, cuando el nivel se dispara, debería dibujar la línea sl y si ésta coincide con el nivel de precios, debería cambiar su color.

Aclaración:

В настройках трал 30. Значит показать линии на уровнях, где сработают тралы, и так все 7 линий: 30-60-90-120-150-180-210, типа прогрессии.

Прошли 30 и достигли линии, трал переводит стопы на уровень цены открытия, по достижении 60, переводит стопы на +30 от цены открытия, то есть на уровень, где срабатывал первый стоп и тд.

Cambiar el código, dibujar líneas y nada más.


Gracias.

 
Buenas tardes. Bueno aconsejar a un novato, tratando de subir un experto en el mercado. Da error "¡Error! Tipo de archivo cargado incorrecto, .....ex4 - Script.
Su categoría de producto - Expertos, el tipo de programa correcto para él - Experto" ¡Pero es un Experto! ¿Dónde cavo? Llevo 2 días luchando.
 
Vycheslav Vyrikov #:
Por la tarde. Bueno, puedes aconsejar a un novato, estoy tratando de subir un Asesor Experto al mercado. Da error "¡Error! Tipo de archivo incorrecto cargado, .....ex4 - Script.
Su categoría de producto - Expertos, el tipo de programa correcto para él - Experto" ¡Pero es un Experto! ¿Dónde cavo? Llevo 2 días luchando.

Cava hacia los manipuladores estándar.

Estoy seguro de que tienes start() ahí, no OnStart().

Документация по MQL5: Обработка событий / OnStart
Документация по MQL5: Обработка событий / OnStart
  • www.mql5.com
OnStart - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko #:

Se necesita un algoritmo que dibuje líneas en los precios calculados.

Cuando todas las posiciones estén cerradas, deberán ser eliminadas.

double sumLots[2]=0,weight[2]=0;

for(int pos=OrdersTotal()-1;pos>=0;pos--) {

   if (! OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) continue;

   // тут всякие прочии фильтры

   DrawOrderLevels(); // нарисовать уровни куда может перекатиться стоп-лосс конкретного ордера

   // расчёт общих позиций

   int type=OrderType();

   sumLots[type]+=OrderLots();

   weight[type]+=OrderLots()*OrderOpenPrice();

}

double avg[3]; // общии позиции

if (sumLots[OP_BUY]!=0) avg[OP_BUY]=weight[OP_BUY]/sumLots[OP_BUY]; 

if (sumLots[OP_SELL]!=0) avg[OP_SELL]=weight[OP_SELL]/sumLots[OP_SELL]; 

// совокупная позиция

int posType; // тип

double posPrice; // цена

double posLots; // объём

if (sumLots[OP_BUY]>sumLots[OP_SELL) { posType=OP_BUY; posPrice=avg[OP_BUY]; posLots=sumLots[OP_BUY]-sumLots[OP_SELL]; }

else { posType=OP_SELL; posPrice=avg[OP_SELL]; posLots=sumLots[OP_SELL]-sumLots[OP_BUY]; }

DrawPriceLevels(OP_BUY,avg[OP_BUY]); // нарисовать уровни суммарной позы в BUY

DrawPriceLevels(OP_SELL,avg[OP_SELL]); // нарисовать уровни суммарной позы в SELL

DrawPriceLevels(posType,posPrice); // уровни общей позиции

En los nombres de los niveles horizontales añada el número de billete. A veces (cuando es necesario) para comprobar - si el billete no está en el mercado, entonces todos los niveles con su nombre debe ser eliminado

 
Artyom Trishkin #:

Cava hacia los manipuladores estándar.

Estoy seguro de que tienes start() ahí, no OnStart().

Artyom ya estás cansado y has empezado a cometer inexactitudes tú mismo. Para el experto que Vyacheslav está tratando de cargar, la función de manejo de eventos debe ser OnTick()