Bon après-midi. Ma question peut sembler incroyablement stupide à beaucoup de gens, je m'en excuse, je suis encore un débutant dans ce domaine, je n'arrive pas à comprendre ce qui ne va pas.
J'ai créé un fichier texte dans MQL5\Files\date.txt et je ne peux pas l'ouvrir. L'erreur 5004 est écrite. Veuillez m'aider si vous le pouvez.
Bon après-midi. Ma question peut sembler incroyablement stupide à beaucoup de gens, je m'en excuse, je suis encore un débutant dans ce domaine, je n'arrive pas à comprendre ce qui ne va pas.
J'ai créé un fichier texte dans MQL5\Files\date.txt et je ne peux pas l'ouvrir. L'erreur 5004 est écrite. Aidez-nous si vous le pouvez.
Si votre fichier n'est pas dans le dossier partagé des terminaux clients MT5 (et dans votre cas, il l'est),
Merci pour l'aide, mais malheureusement ça n'a rien donné. J'ai essayé de nombreuses variantes avec les drapeaux. Aussi, écrit l'erreur 5004. Y a-t-il autre chose que je devrais essayer ?
olegin038: Merci pour l'aide, mais malheureusement ça n'a rien donné. J'ai essayé beaucoup d'options avec les drapeaux. Aussi, écrit l'erreur 5004. Y a-t-il autre chose que je puisse essayer ?
Essayez de l'ouvrir simplement comme un fichier texte :
voidOnTick()
{
ResetLastError();
int Handle=FileOpen("date.txt",FILE_TXT|FILE_READ|FILE_WRITE);
if(Handle==-1)
{
Print("Файл не открыт, ошибка: ", GetLastError());
}
return;
}
olegin038: Ça n'a pas marché non plus. Je n'ai jamais travaillé avec des fichiers auparavant. Vous n'avez pas besoin de faire quelque chose de plus ici ?
Bonjour à tous, j'ai besoin d'aide avec le fameux indicateur CrossArbitr. Le code n'est bien sûr pas le mien. Il avait besoin de certaines informations, qu'il ne fournit pas. Donc, dans l'ordre.
J'ai ajouté les variablesdouble n, m ;
"\nDifférence BID Synthétique et Réel =", n=(CalcBid-Bid),
"\, Différence ASK Synthétique et Réel =", m=(CalcAsk-Ask),
"\nTotal =" (m - n) <----
Il finit par jurer sur le moins dans cette parenthèse (on s'attend à un certain opératisme). Qui peut me dire ce que je fais de 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);
}
//+------------------------------------------------------------------+
Bon après-midi. Ma question peut sembler incroyablement stupide à beaucoup de gens, je m'en excuse, je suis encore un débutant dans ce domaine, je n'arrive pas à comprendre ce qui ne va pas.
J'ai créé un fichier texte dans MQL5\Files\date.txt et je ne peux pas l'ouvrir. L'erreur 5004 est écrite. Veuillez m'aider si vous le pouvez.
Bon après-midi. Ma question peut sembler incroyablement stupide à beaucoup de gens, je m'en excuse, je suis encore un débutant dans ce domaine, je n'arrive pas à comprendre ce qui ne va pas.
J'ai créé un fichier texte dans MQL5\Files\date.txt et je ne peux pas l'ouvrir. L'erreur 5004 est écrite. Aidez-nous si vous le pouvez.
Si votre fichier n'est pas dans le dossier partagé des terminaux clients MT5 (et dans votre cas, il l'est),
Vous devez supprimer le drapeau FILE_COMMON:
Si votre fichier n'est pas dans le dossier partagé des terminaux clients MT5 (et dans votre cas, il l'est),
L'indicateur FILE_COMMON doit être supprimé :
Merci pour l'aide, mais malheureusement ça n'a rien donné. J'ai essayé beaucoup d'options avec les drapeaux. Aussi, écrit l'erreur 5004. Y a-t-il autre chose que je puisse essayer ?
Essayez de l'ouvrir simplement comme un fichier texte :
Essayez de l'ouvrir simplement comme un fichier texte :
Ça n'a pas marché non plus. Je n'ai jamais travaillé avec des fichiers auparavant. Vous n'avez pas besoin de faire quelque chose de plus ici ?
Oui, vous devez être sûr de fermer le fichier:
Oui, vous devez toujours fermer le fichier:
Partage de cours d'auteurs renommés issus de ma bibliothèque personnelle.
Bonjour à tous, j'ai besoin d'aide avec le fameux indicateur CrossArbitr. Le code n'est bien sûr pas le mien. Il avait besoin de certaines informations, qu'il ne fournit pas. Donc, dans l'ordre.
J'ai ajouté les variablesdouble n, m ;
"\nDifférence BID Synthétique et Réel =", n=(CalcBid-Bid),
"\, Différence ASK Synthétique et Réel =", m=(CalcAsk-Ask),
"\nTotal =" (m - n) <----
Il finit par jurer sur le moins dans cette parenthèse (on s'attend à un certain opératisme). Qui peut me dire ce que je fais de mal ?