Me han cobrado, ¿dónde puedo saber por qué? - página 9

 
kylinar2012:
Como participante en esta acción, acepto hacer público el caso, no tengo nada que ocultar.
Así que adelante.
 
Armen:
Así que sácalo.
¿Qué publicar? ¿Código EA para MT4? Este es el texto del anuncio:

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.

 
Armen:
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.

 
kylinar2012:
¿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.

¿dónde está la frase:"resulta que no es realista hacerlo debido a la arquitectura de MT5"?

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.

 
kylinar2012:

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.



¿en qué parte de la correspondencia está esto? ver arriba
 

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"




 
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 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

Im_hungry 2013.11.26 10:27

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


Im_hungry 2013.11.26 12:11

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


2013.11.27 14:01

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

El desarrollador Im_hungry ha solicitado el arbitraje:

"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í:


Lamento hacerlos esperar pero para MT5 esto
Resulta que no es realista hacerlo debido a la arquitectura de mt5.
Pero es posible hackear los archivos y reescribir los datos
donde se almacenan los datos de la barra. Pero será caro.
400$ + hay algunas limitaciones. Lo haré en pocos días.

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í.

Технический индикатор Renko Charts
Технический индикатор Renko Charts
  • 99.00 USD
  • Konstantin Gruzdev
  • www.mql5.com
Индикатор iRenkoChart предназначен для создания пользовательских графиков Renko. Используется открытый формат файлов истории, легкое переключение между графиками на основе Bid и Ask котировок, контроль качества истории, возможность использования...
 
kylinar2012:

¿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.