Buenas tardes. Mi pregunta puede parecer increíblemente estúpida para muchos, me disculpo, todavía soy un principiante en este negocio, no puedo averiguar qué está mal.
He creado un archivo de texto en MQL5\Files\date.txt y no puedo abrirlo. El error 5004 está escribiendo. Por favor, ayúdeme si puede.
Buenas tardes. Mi pregunta puede parecer increíblemente estúpida para muchos, me disculpo, todavía soy un principiante en este negocio, no puedo averiguar qué está mal.
He creado un archivo de texto en MQL5\Files\date.txt y no puedo abrirlo. El error 5004 está escribiendo. Por favor, ayude si puede.
Si su archivo no está en la carpeta compartida de los terminales cliente de MT5 (y en su caso lo está),
Gracias por la ayuda, pero desgraciadamente no ha servido de nada. He probado muchas variantes con las banderas. Además, escribe el error 5004. ¿Hay algo más que deba probar?
olegin038: Gracias por la ayuda, pero desgraciadamente no ha servido de nada. He probado muchas opciones con las banderas. Además, escribe el error 5004. ¿Hay algo más que pueda probar?
Intenta abrirlo simplemente como un archivo de texto:
voidOnTick()
{
ResetLastError();
int Handle=FileOpen("date.txt",FILE_TXT|FILE_READ|FILE_WRITE);
if(Handle==-1)
{
Print("Файл не открыт, ошибка: ", GetLastError());
}
return;
}
Hola a todos, necesito ayuda con el famoso indicador CrossArbitr. El código, por supuesto, no es mío. Necesitaba cierta información, que no se emite. Así que, en orden.
He añadido las variablesdoble n, m;
"\NDiferencia BID Sintética y Real =", n=(CalcBid-Bid),
"\N - Diferencia ASK sintético y real =", m=(CalcAsk-Ask),
"\nTotal =" (m - n) <----
Acaba maldiciendo al menos en este paréntesis (algún operatot esperado). ¿Quién puede decirme qué estoy haciendo mal?
//+------------------------------------------------------------------+//| CrossArbitr.mq4 |//| Scriptong |//| |//+------------------------------------------------------------------+#property copyright"Scriptong"#property link""#property indicator_chart_window//---- input parametersexternbool ShowBid=false;
externbool ShowAsk=false;
externcolor BidColor = Lime;
externcolor AskColor = Yellow;
externint AlarmIfPointDifference = 10;
externstring AlarmFile = "wait.wav";
bool Activate = False;
string FP, SP;
double Tick;
int WayForCross;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicatorsstring S = Symbol();
if(StringFind(S, "USD", 0) != -1)
{
Comment("Индикатор работает только с кроссовыми парами (GBPJPY, EURJPY, EURGBP и т. д)!");
return(0);
}
if(StringLen(S) != 6)
{
Comment("Индикатор работает только с валютными парами, у которых название состоит из шести символов!");
return(0);
}
// Поиск первой валютной пары кросса
FP = StringSubstr(S, 0, 3)+"USD";
MarketInfo(FP, MODE_BID);
if(GetLastError() > 0)
{
FP = "USD"+StringSubstr(S, 0, 3);
MarketInfo(FP, MODE_BID);
if(GetLastError() > 0)
{
Comment("Невозможно найти инструмент ", FP, " или ", StringSubstr(S, 0, 3)+"USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор.");
return(0);
}
}
// -------------------------------------- // "Создание" второй валютной пары кросса
SP = "USD"+StringSubstr(S, 3, 3);
MarketInfo(SP, MODE_BID);
if(GetLastError() > 0)
{
SP = StringSubstr(S, 3, 3)+"USD";
MarketInfo(SP, MODE_BID);
if(GetLastError() > 0)
{
Comment("Невозможно найти инструмент ", SP, " или ", StringSubstr(S, 3, 3)+"USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор.");
return(0);
}
}
// -------------------------------------- // Определение пути синтеза кроссаif (StringFind(FP, "USD") == 3 && StringFind(SP, "USD") == 0)
WayForCross = 1;
if (StringFind(FP, "USD") == 0 && StringFind(SP, "USD") == 0)
WayForCross = 2;
if (StringFind(FP, "USD") == 3 && StringFind(SP, "USD") == 3)
WayForCross = 3;
if (StringFind(FP, "USD") == 0 && StringFind(SP, "USD") == 3)
WayForCross = 4;
// -------------------------------
Tick = MarketInfo(Symbol(), MODE_TICKSIZE);
Activate = True;
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----Comment("");
if(ObjectFind("CrossBid") == 0)
ObjectDelete("CrossBid");
if(ObjectFind("CrossAsk") == 0)
ObjectDelete("CrossAsk");
//----return(0);
}
//+------------------------------------------------------------------+//| Приведение значений к точности одного тика |//+------------------------------------------------------------------+double ND(double A)
{
return(NormalizeDouble(A, Digits));
}
//+------------------------------------------------------------------+//| Расчет значения синтетического бида |//+------------------------------------------------------------------+double CalcBidWayForCross()
{
switch (WayForCross)
{
case1: return(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_BID)));
case2: return(ND(MarketInfo(SP, MODE_BID)/MarketInfo(FP, MODE_ASK)));
case3: return(ND(MarketInfo(FP, MODE_BID)/MarketInfo(SP, MODE_ASK)));
case4: return(1/(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_BID))));
}
}
//+------------------------------------------------------------------+//| Расчет значения синтетического аска |//+------------------------------------------------------------------+double CalcAskWayForCross()
{
switch (WayForCross)
{
case1: return(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_ASK)));
case2: return(ND(MarketInfo(SP, MODE_ASK)/MarketInfo(FP, MODE_BID)));
case3: return(ND(MarketInfo(FP, MODE_ASK)/MarketInfo(SP, MODE_BID)));
case4: return(1/(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_ASK))));
}
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars=IndicatorCounted();
//----if(!Activate)
return(0);
// Расчет синтетических Bid и Askdouble CalcBid = CalcBidWayForCross();
RefreshRates();
double CalcAsk = CalcAskWayForCross();
double n, m;
// -------------------------------// Рисуем уровень синтетического Bidif (ShowBid)
{
if(ObjectFind("CrossBid") == -1)
{
ObjectCreate("CrossBid", OBJ_HLINE, 0, 0, CalcBid);
ObjectSet("CrossBid", OBJPROP_COLOR, BidColor);
ObjectSet("CrossBid", OBJPROP_STYLE, STYLE_DOT);
}
elseif(!ObjectMove("CrossBid", 0, 1, CalcBid))
Print("Ошибка перемещения №", GetLastError());
}
// ---------------------------------- // Рисуем уровень синтетического Askif(ShowAsk)
{
if(ObjectFind("CrossAsk") == -1)
{
ObjectCreate("CrossAsk", OBJ_HLINE, 0, 0, CalcAsk);
ObjectSet("CrossAsk", OBJPROP_COLOR, AskColor);
ObjectSet("CrossAsk", OBJPROP_STYLE, STYLE_DOT);
}
elseObjectMove("CrossAsk", 0, 1, CalcAsk);
}
// ---------------------------------- Comment("Реальный BID = ", DoubleToStr(Bid, Digits), ", реальный ASK = ", DoubleToStr(Ask, Digits),
"\nСинтетик BID = ", DoubleToStr(CalcBid, Digits), ", синтетик ASK = ", DoubleToStr(CalcAsk, Digits),
"\nРазница BID Синтетика и Реального =", n=(CalcBid-Bid),
"\, Разница ASK Синтетика и Реального =", m=(CalcAsk-Ask),
"\nИтог =" (m - n)
);
// Выдаем звуковой сигнал о превышении минимальной разностиif(ND(MathAbs(CalcBid-Bid)) >= ND(AlarmIfPointDifference*Point))
PlaySound(AlarmFile);
// -------------------------------------------------------- //----return(0);
}
//+------------------------------------------------------------------+
Buenas tardes. Mi pregunta puede parecer increíblemente estúpida para muchos, me disculpo, todavía soy un principiante en este negocio, no puedo averiguar qué está mal.
He creado un archivo de texto en MQL5\Files\date.txt y no puedo abrirlo. El error 5004 está escribiendo. Por favor, ayúdeme si puede.
Buenas tardes. Mi pregunta puede parecer increíblemente estúpida para muchos, me disculpo, todavía soy un principiante en este negocio, no puedo averiguar qué está mal.
He creado un archivo de texto en MQL5\Files\date.txt y no puedo abrirlo. El error 5004 está escribiendo. Por favor, ayude si puede.
Si su archivo no está en la carpeta compartida de los terminales cliente de MT5 (y en su caso lo está),
Tiene que eliminar la bandera FILE_COMMON:
Si su archivo no está en la carpeta compartida de los terminales de cliente MT5 (y en su caso lo está),
La bandera FILE_COMMON debe ser eliminada:
Gracias por la ayuda, pero desgraciadamente no ha servido de nada. He probado muchas opciones con las banderas. Además, escribe el error 5004. ¿Hay algo más que pueda probar?
Intenta abrirlo simplemente como un archivo de texto:
Intenta abrirlo simplemente como un archivo de texto:
Tampoco funcionó. Nunca he trabajado con archivos. ¿No necesitas hacer nada extra aquí?
Sí, tienes que asegurarte de cerrar el archivo:
Sí, siempre hay que cerrar el archivo:
Compartir cursos de autores destacados de mi biblioteca personal.
Hola a todos, necesito ayuda con el famoso indicador CrossArbitr. El código, por supuesto, no es mío. Necesitaba cierta información, que no se emite. Así que, en orden.
He añadido las variablesdoble n, m;
"\NDiferencia BID Sintética y Real =", n=(CalcBid-Bid),
"\N - Diferencia ASK sintético y real =", m=(CalcAsk-Ask),
"\nTotal =" (m - n) <----
Acaba maldiciendo al menos en este paréntesis (algún operatot esperado). ¿Quién puede decirme qué estoy haciendo mal?