Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Como participante en esta acción, acepto hacer público el caso, no tengo nada que ocultar.
Así que sácalo.
Hola, me gustaría un EA o indicador y un script para crear un gráfico Renko - en MT5.
Es decir, es posible poner indicadores y scripts en el gráfico.
En MT4 está implementado por varios asesores, yo personalmente uso RenkoLiveChart_v3.2, me gustaría tener algo similar para MT5.
Bueno, adjunto el código de RenkoLiveChart_v3.2,
Esta es la respuesta del artista:
"Puedo empezar.
Pero lo haré en esta semana.
Eso es todo, más rechazo y bien.
así que ponlo.
Esto es lo que el contratista escribió sobre los términos de referencia (copiado textualmente):
"Por favor, adjunte el código fuente del experto como TdR. (significa RenkoLiveChart_v3.2)
cantidad 100 tiempo 5".
Toda la correspondencia con el ejecutante estaba sólo en el servicio, de modo que los moderadores la veían cuando decidían la multa.
¿Qué publicar? ¿Código EA para MT4? Este es el texto del anuncio:
Hola, me gustaría un Asesor Experto o indicador y un script para crear Renco-Chart en MT5.
Es decir, es posible poner indicadores y scripts en el gráfico.
En MT4 está implementado por varios asesores, yo personalmente uso RenkoLiveChart_v3.2, me gustaría tener algo similar para MT5.
Bueno, adjunto el código de RenkoLiveChart_v3.2,
Esta es la respuesta del artista:
"Puedo empezar.
Pero lo haré en esta semana.
Eso es todo, más rechazo y bien.
Y aquí está la siguiente frase escrita que en general - es real para hacer el trabajo, pero a un precio de 4 veces más.
Por supuesto, en las discusiones anteriores hay frases que tal vez han cambiado los términos de referencia, o alguna otra fuerza mayor.
He aquí una frase literal del ejecutor (copiada) de por qué no se hizo el trabajo: "resulta que será irreal por la arquitectura de MT5".
Y la siguiente frase está escrita que en general - es posible hacer el trabajo, pero a un costo de 4 veces mayor.
¿Qué tengo que hacer como cliente? El árbitro Rosh todavía no me lo ha explicado.
Bueno, y para completar el cuadro, trae un artista aquí.
Para ser honesto, si yo fuera él, habría venido yo mismo hace mucho tiempo, le habría dado 5 dólares y habría dormido tranquilamente.
Pero ahora que hemos empezado, sigamos con ello. Publica el texto completo de la correspondencia (incluyendo tu encargo y su carta) con una cronología, y pide a Rashid o a Renat que hagan comentarios.
komposter:
Bueno, y para completar el cuadro, trae un artista aquí.
Para ser honesto, si yo fuera él, habría venido yo mismo hace mucho tiempo, le habría dado 5 dólares y habría dormido tranquilamente.
Pero ahora que hemos empezado, sigamos con ello. Publica el texto completo de la correspondencia (incluyendo tu asignación y su carta) con cronología, y pide a Rashid o a Renat que hagan comentarios.
Como he escrito antes, no es en la cantidad (5feb.) Y ni siquiera en el artista (bueno, no se calcula su fuerza, sucede), y en el principio de la recogida de multas por los moderadores del recurso. La pena se impone no al autor, sino a quien más le convenga.
No puedo invitar al albacea, si no viene, para que lo considere mejor, está en su derecho.
Este es el texto de los términos de referencia:
MANDATO
La tarea consiste en crear un asesor que cree un gráfico Renko en el terminal de comercio Metatrader 5, similar en funcionalidad a RenkoLiveChart_v3.2.mq4, utilizado en el terminal de comercio Metatrader 4.
Código fuente de RenkoLiveChart_v3.2.mq4:
//+---------------------------------------------------------------------------+
//| EA VERSION
//| RenkoLiveChart_v3.2.mq4
//| Inspirado en el script Renko de "e4" (renko_live_scr.mq4)
//| Copyleft 2009 LastViking
//|
//| 12 de agosto de 2009 (LV):
//| - Quería volumen en mi gráfico Renko así que escribí mi propio script
//|
//| 20-21 ago 2009 (LV) (v1.1 - v1.3):
//| - Primer intento de formación de ladrillos Renko en vivo (bugs O bugs...)
//| - Se ha corregido el problema de los nombres de símbolos extraños en algunos 5 dígitos
//| corredores (crédito a Tigertron)
//|
//| 24 agosto 2009 (LV) (v1.4):
//| - Manejar el Alto / Bajo en la historia de una manera razonable (prev.
//| utilizado Cerrar)
//|
//| 26 de agosto de 2009 (Lou G) (v1.5/v1.6):
//| - Finalmente arreglar la "aparición tardía" (ladrillo Renko en vivo)
//| formación) error
//|
//| 31 de agosto de 2009 (LV) (v2.0):
//| - Ya no es un script, sino que se ejecuta como indicador
//| - Se ha eliminado el error de MT4 que causaba el "error de aparición tardía".
//| un poco más cerca (tiene que ver con las brechas Alto / Bajo)
//| - Se ha eliminado el while ... bucle sleep(). El gráfico Renko es ahora tick
//| conducido: -MUSH más amable con los recursos del sistema de esta manera
//|
//| Sep 03 2009 (LV) (v2.1):
//| - Fijado para que Time[] mantenga la hora de apertura del renko
//| ladrillos (tiempo de cierre utilizado anteriormente)
//|
//| 16 de septiembre de 2009 (Lou G) (v3.0):
//| - Mechas opcionales añadidas
//| - Conversión de nuevo a EA
//| - Ajuste automático para corredores de 5 y 6 dec añadidos
//| - introduzca RenkoBoxSize como tamaño "real", por ejemplo "10" para 10 pips
//| - Se ha añadido la compensación del problema de "comparación cero"
//|
//| Okt 05 2009 (LV) (v3.1):
//| - Se ha corregido un error relacionado con BoxOffset
//| - Ajuste automático para los pares JPY de 3 y 4 dec.
//| - Se ha eliminado la función init()
//| - Cambiado a la antigua formación de ladrillos Renko
//|
//| Okt 13 2009 (LV) (v3.2):
//| - Añadida la opción "EmulateOnLineChart" (crédito a Skipperxit/Mimmo)
//|
//+---------------------------------------------------------------------------+
#property copyright ""
//+------------------------------------------------------------------+
#include <WinUser32.mqh>
#include <stdlib.mqh>
//+------------------------------------------------------------------+
#importar "user32.dll"
int RegisterWindowMessageA(cadena lpString);
#importar
//+------------------------------------------------------------------+
extern int RenkoBoxSize = 10;
extern intern RenkoBoxOffset = 0;
extern inttern RenkoTimeFrame = 2; // Qué marco temporal utilizar para el gráfico renko offline
extern bool ShowWicks = true;
extern bool EmularOnLineChart = true;
extern bool StrangeSymbolName = false;
//+------------------------------------------------------------------+
int HstHandle = -1, LastFPos = 0, MT4InternalMsg = 0;
cadena SymbolName;
//+------------------------------------------------------------------+
void UpdateChartWindow() {
static int hwnd = 0;
if(hwnd == 0) {
hwnd = WindowHandle(SymbolName, RenkoTimeFrame);
if(hwnd != 0) Print("Ventana de gráfico detectada");
}
if(EmulateOnLineChart && MT4InternalMsg == 0)
MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
if(hwnd != 0) if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == 0) hwnd = 0;
if(hwnd != 0 && MT4InternalMsg != 0) PostMessageA(hwnd, MT4InternalMsg, 2, 1);
volver;
}
//+------------------------------------------------------------------+
int inicio() {
static double BoxPoints, UpWick, DnWick;
static double PrevLow, PrevHigh, PrevOpen, PrevClose, CurVolume, CurLow, CurHigh, CurOpen, CurClose;
static datetime PrevTime;
//+------------------------------------------------------------------+
// Esto solo se ejecuta uno, luego llega el primer tick.
if(HstHandle < 0) {
// Init
// Comprobación de errores
if(!IsConnected()) {
Print("Esperando conexión...");
return(0);
}
if(!IsDllsAllowed()) {
Print("Error: ¡Las llamadas Dll deben estar permitidas!");
return(-1);
}
if(MathAbs(RenkoBoxOffset) >= RenkoBoxSize) {
Print("Error: |RenkoBoxOffset| debe ser menor que RenkoBoxSize!");
return(-1);
}
switch(RenkoTimeFrame) {
caso 1: caso 5: caso 15: caso 30: caso 60: caso 240:
caso 1440: caso 10080: caso 43200: caso 0:
Print("¡Error: marco de tiempo inválido utilizado para el gráfico renko offline (RenkoTimeFrame)!");
return(-1);
}
//
int BoxSize = RenkoBoxSize;
int BoxOffset = RenkoBoxOffset;
if(Dígitos = 5 || (Dígitos = 3 && StringFind(Symbol(), "JPY") != -1)) {
BoxSize = BoxSize*10;
BoxOffset = BoxOffset*10;
}
if(Dígitos = 6 || (Dígitos = 4 && StringFind(Symbol(), "JPY") != -1)) {
BoxSize = BoxSize*100;
BoxOffset = BoxOffset*100;
}
if(StrangeSymbolName) SymbolName = StringSubstr(Symbol(), 0, 6);
else NombreSímbolo = Símbolo();
BoxPoints = NormalizeDouble(BoxSize*Point, Digits);
PrevLow = NormalizeDouble(BoxOffset*Point + MathFloor(Close[Bars-1]/BoxPoints)*BoxPoints, Digits);
DnWick = PrevLow;
PrevHigh = PrevLow + BoxPoints;
PrevWick = PrevHigh;
PrevOpen = PrevLow;
PrevClose = PrevHigh;
CurVolume = 1;
PrevTime = Time[Bars-1];
// crear / abrir el archivo hst
HstHandle = FileOpenHistory(SymbolName + RenkoTimeFrame + ".hst", FILE_BIN|FILE_WRITE);
if(HstHandle < 0) {
Print("Error: no se puede crear / abrir el archivo histórico: " + ErrorDescription(GetLastError()) + ": " + SymbolName + RenkoTimeFrame + ".hst");
return(-1);
}
//
// escribir la cabecera del archivo hst
int HstUnused[13];
FileWriteInteger(HstHandle, 400, LONG_VALUE); // Versión
FileWriteString(HstHandle, "", 64); // FileWriteString(HstHandle, "", 64); // Versión
FileWriteString(HstHandle, SymbolName, 12); // Símbolo
FileWriteInteger(HstHandle, RenkoTimeFrame, LONG_VALUE); // Periodo
FileWriteInteger(HstHandle, Digits, LONG_VALUE); // Digits
FileWriteInteger(HstHandle, 0, LONG_VALUE); // Señal de tiempo
FileWriteInteger(HstHandle, 0, LONG_VALUE); // Última sincronización
FileWriteArray(HstHandle, HstUnused, 0, 13); // No utilizado
//
// procesar los datos históricos
int = Bares-2;
//Print(Symbol() + " + High[i] + " + Low[i] + " + Open[i] + " + Close[i]);
//---------------------------------------------------------------------------
while(i >= 0) {
CurVolume = CurVolume + Volume[i];
UpWick = MathMax(UpWick, High[i]);
DnWick = MathMin(DnWick, Low[i]);
// actualiza la baja antes que la alta o la inversión dependiendo de si está más cerca de la barra anterior
bool Tendencia alcista = Alto[i]+Bajo[i] > Alto[i+1]+Bajo[i+1];
while(UpTrend && (Low[i] < PrevLow-BoxPoints || CompareDoubles(Low[i], PrevLow-BoxPoints)) {
PrevHigh = PrevHigh - BoxPoints;
PrevLow = PrevLow - BoxPoints;
PrevOpen = PrevHigh;
PrevClose = PrevLow;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
UpWick = 0;
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
if(PrevTime < Time[i]) PrevTime = Time[i];
Si no, PrevTime++;
}
while(High[i] > PrevHigh+BoxPoints | CompareDoubles(High[i], PrevHigh+BoxPoints)) {
PrevHigh = PrevHigh + BoxPoints;
PrevLow = PrevLow + BoxPoints;
PrevOpen = PrevLow;
PrevClose = PrevHigh;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
if(ShowWicks && DnWick < PrevLow) FileWriteDouble(HstHandle, DnWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
UpWick = 0;
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevHigh;
CurLow = PrevHigh;
if(PrevTime < Time[i]) PrevTime = Time[i];
Si no, PrevTime++;
}
while(!UpTrend && (Low[i] < PrevLow-BoxPoints || CompareDoubles(Low[i], PrevLow-BoxPoints)) {
PrevHigh = PrevHigh - BoxPoints;
PrevLow = PrevLow - BoxPoints;
PrevOpen = PrevHigh;
PrevClose = PrevLow;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
UpWick = 0;
DnWick = EMPTY_VALUE;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
if(PrevTime < Time[i]) PrevTime = Time[i];
Si no, PrevTime++;
}
i--;
}
LastFPos = FileTell(HstHandle); // Recuerda la última posición en el archivo
//
Comment("RenkoLiveChart(" + RenkoBoxSize + "): Abrir Offline ", SymbolName, ",M", RenkoTimeFrame, " para ver el gráfico");
if(Close[0] > MathMax(PrevClose, PrevOpen)) CurOpen = MathMax(PrevClose, PrevOpen);
else if (Close[0] < MathMin(PrevClose, PrevOpen)) CurOpen = MathMin(PrevClose, PrevOpen);
si no CurOpen = Close[0];
CurClose = Close[0];
if(UpWick > PrevHigh) CurHigh = UpWick;
if(DnWick < PrevLow) CurLow = DnWick;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE); // Tiempo
FileWriteDouble(HstHandle, CurOpen, DOUBLE_VALUE); // Abrir
FileWriteDouble(HstHandle, CurLow, DOUBLE_VALUE); // Low
FileWriteDouble(HstHandle, CurHigh, DOUBLE_VALUE); // Alto
FileWriteDouble(HstHandle, CurClose, DOUBLE_VALUE); // Cerrar
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE); // Volumen
FileFlush(HstHandle);
UpdateChartWindow();
return(0);
// Fin de los datos históricos / Init
}
//----------------------------------------------------------------------------
// HstHandle no < 0 por lo que siempre entramos aquí después de la historia hecha
// Comenzar la alimentación de datos en vivo
UpWick = MathMax(UpWick, Bid);
DnWick = MathMin(DnWick, Bid);
CurVolume++;
FileSeek(HstHandle, LastFPos, SEEK_SET);
//-------------------------------------------------------------------------
// caja de arriba
if(Oferta > PrevAlto+PuntosCaja | CompareDoubles(Oferta, PrevAlto+PuntosCaja)) {
PrevHigh = PrevHigh + BoxPoints;
PrevLow = PrevLow + BoxPoints;
PrevOpen = PrevLow;
PrevClose = PrevHigh;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
if (ShowWicks && DnWick < PrevLow) FileWriteDouble(HstHandle, DnWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
FileFlush(HstHandle);
LastFPos = FileTell(HstHandle); // Recuerda la última posición en el archivo
if(PrevTime < TimeCurrent()) PrevTime = TimeCurrent();
Si no, PrevTime++;
CurVolume = 0;
CurHigh = PrevHigh;
CurLow = PrevHigh;
UpWick = 0;
DnWick = EMPTY_VALUE;
UpdateChartWindow();
}
//-------------------------------------------------------------------------
// caja de abajo
else if(Oferta < PuntosCajaAnteriorBaja || CompareDoubles(Oferta,PuntosCajaAnteriorBaja)) {
PrevHigh = PrevHigh - BoxPoints;
PrevLow = PrevLow - BoxPoints;
PrevOpen = PrevHigh;
PrevClose = PrevLow;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);
FileFlush(HstHandle);
LastFPos = FileTell(HstHandle); // Recuerda la última posición en el archivo
if(PrevTime < TimeCurrent()) PrevTime = TimeCurrent();
Si no, PrevTime++;
CurVolume = 0;
CurHigh = PrevLow;
CurLow = PrevLow;
UpWick = 0;
DnWick = EMPTY_VALUE;
UpdateChartWindow();
}
//-------------------------------------------------------------------------
// sin caja - alta/baja no golpeada
si no {
if(Oferta > CurHigh) CurHigh = Oferta;
if(Oferta < CurLow) CurLow = Oferta;
if(PrevHigh <= Bid) CurOpen = PrevHigh;
else if(PrevLow >= Bid) CurOpen = PrevLow;
si no CurOpen = Oferta;
CurClose = Oferta;
FileWriteInteger(HstHandle, PrevTime, LONG_VALUE); // Tiempo
FileWriteDouble(HstHandle, CurOpen, DOUBLE_VALUE); // Abrir
FileWriteDouble(HstHandle, CurLow, DOUBLE_VALUE); // Low
FileWriteDouble(HstHandle, CurHigh, DOUBLE_VALUE); // Alto
FileWriteDouble(HstHandle, CurClose, DOUBLE_VALUE); // Cerrar
FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE); // Volumen
FileFlush(HstHandle);
UpdateChartWindow();
}
return(0);
}
//+------------------------------------------------------------------+
int deinit() {
if(HstHandle >= 0) {
FileClose(HstHandle);
HstHandle = -1;
}
Comentario(");
return(0);
}
//+------------------------------------------------------------------+
Esta es la respuesta del EJECUTIVO:
15794
Im_hungry 2013.11.25 17:25 #
Puedo empezar.
Pero lo hará dentro de esta semana.
Siguiente
Im_hungry 2013.11.26 07:59 #
Lo reescribiré. Te enviaré la fuente y otras cosas.
Te lo enviaré.
Siguiente:
Im_hungry 2013.11.26 08:33 #
Mañana podré empezar a trabajar en él.
Sólo podrá empezar mañana. Lo haré al final de la semana
2013.11.26 10:25
El desarrollador Im_hungry ha confirmado el paso "de acuerdo a trabajar"
Bueno, y para completar el cuadro, trae un artista aquí.
Para ser honesto, si yo fuera él, habría venido yo mismo hace mucho tiempo, le habría dado 5 dólares y habría dormido tranquilamente.
Pero ahora que hemos empezado, sigamos con ello. Publica el texto completo de la correspondencia (incluyendo tu tarea y su carta) con una cronología, y pide a Rashid o a Renat que hagan comentarios.
Aquí está la respuesta, han aparecido líneas, no puedo quitarlo, estoy escribiendo el siguiente post.
Siguiente
Ahora es tu turno.
Como TdR, adjunte el código fuente del experto.
cantidad 100 tiempo 5.
Para pasar al siguiente paso y empezar a trabajar debes tener la cantidad especificada en tu cuenta (Perfil - Pagos - recarga)
Todas las reglas aquí : https://www.mql5.com/ru/job/rules
Bien.
Los fondos se congelarán hasta que confirme el paso "Pago"
Tras la verificación y la recepción del código fuente. En todo caso, hay un arbitraje
a la que podrá presentar una solicitud de reembolso.
2013.11.27 12:20 El cliente kylinar2012 ha confirmado el paso "Acuerdo de TOR". El coste final de la obra se fija en 100,00 créditos.
Términos de referencia adjuntos al cliente
El desarrollador Im_hungry ha confirmado el paso "Agree ToR". 100,00 créditos congelados a cuenta del cliente(kylinar2012)
2013.12.01 09:38
"Por favor, cierre la solicitud a favor del cliente.TOR no se puede implementar debido a la arquitectura de MT5.Gracias"
2013.12.02 11:28
Como resultado del arbitraje, el trabajo fue cancelado por el administrador Rosh. Los fondos congelados de 95,00 créditos fueron devueltos al cliente. El artista fue trasladado a "Rechazado".
Eso es todo, luego un correo electrónico para mí:
Respetuosamente, Alex.
¿Qué culpa tengo yo? ¿Cuál es la pena? Pido los comentarios de Rashid o Renat.
También me gustaría añadir que tal EA se implementa aquí:
https://www.mql5.com/ru/market/product/714#full_description
Sólo que a mí se me escapa un poco ya que utiliza indicadores específicos (por desgracia).
Si hubiera podido poner la mía, no me habría molestado en esta urbanización, sino que la habría comprado allí.
¿De qué soy culpable? ¿Por qué me multan? Pido los comentarios de Rashid o Renat.
¿No hay correspondencia con otros solicitantes?
Estoy de tu lado. El comentario de Rashid será muy interesante.