初学者的问题 MQL5 MT5 MetaTrader 5 - 页 246 1...239240241242243244245246247248249250251252253...1503 新评论 olegin038 2014.05.12 15:21 #2451 下午好。我的问题在很多人看来可能是非常愚蠢的,我很抱歉,我还是这个行业的初学者,我搞不清楚哪里出了问题。我在MQL5\Files\date.txt中创建了一个文本文件,但无法打开它。5004号错误正在书写。如果可以的话,请帮助我。#property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" int OnInit() { return(0); } void OnDeinit(const int reason) { return; } void OnTick() { ResetLastError(); int Handle=FileOpen("date.txt",FILE_CSV|FILE_READ|FILE_WRITE|FILE_COMMON,';'); if(Handle==-1) { Print("Файл не открыт, ошибка: ", GetLastError()); } return; } Artem Temnikov 2014.05.12 15:32 #2452 olegin038:下午好。我的问题在很多人看来可能是非常愚蠢的,我很抱歉,我还是这个行业的初学者,我搞不清楚哪里出了问题。我在MQL5\Files\date.txt中创建了一个文本文件,但无法打开它。5004号错误正在书写。如果可以的话,请帮助我们。如果你的文件不在MT5客户终端的共享文件夹中(而在你的情况下,它是)。你必须删除FILE_COMMON 标志。void OnTick() { ResetLastError(); int Handle=FileOpen("date.txt",FILE_CSV|FILE_READ|FILE_WRITE,';'); if(Handle==-1) { Print("Файл не открыт, ошибка: ", GetLastError()); } return; } olegin038 2014.05.12 15:48 #2453 Fleder:如果你的文件不在MT5客户终端的共享文件夹中(而在你的情况下,它是)。FILE_COMMON 标志必须被删除。 谢谢你的帮助,但不幸的是,它并没有帮助。尝试了很多旗帜的变体。另外,写错5004。还有什么是我应该尝试的吗? Artem Temnikov 2014.05.12 15:51 #2454 olegin038: 谢谢你的帮助,但不幸的是,它并没有帮助。尝试了很多关于旗帜的选项。另外,写错5004。还有什么可以尝试的吗?试着把它作为一个文本文件简单地打开。void OnTick() { ResetLastError(); int Handle=FileOpen("date.txt",FILE_TXT|FILE_READ|FILE_WRITE); if(Handle==-1) { Print("Файл не открыт, ошибка: ", GetLastError()); } return; } olegin038 2014.05.12 15:54 #2455 Fleder:试着把它作为一个文本文件简单地打开。 这也没有用。我以前从未接触过文件。你不需要在这里开出额外的东西吗? Artem Temnikov 2014.05.12 15:57 #2456 olegin038: 这也没有用。我以前从未处理过文件。你不需要在这里做任何额外的事情吗?是的,你必须确保关闭该文件。void OnTick() { ResetLastError(); int Handle=FileOpen("date.txt",FILE_CSV|FILE_READ|FILE_WRITE,';'); if(Handle==-1) { Print("Файл не открыт, ошибка: ", GetLastError()); } FileClose(Handle); return; } olegin038 2014.05.12 16:01 #2457 Fleder:是的,你肯定应该关闭该文件。 非常感谢您!这真的很有帮助。该错误不再显示。 Abramboss 2014.05.12 19:56 #2458 我将分享我个人图书馆中知名作家的课程。叶林、巴兹诺夫、斯特姆日、卢基扬诺夫、切廖穆什金、赫奇克、亚历克斯-米勒等等。几乎所有这些作者的课程。问吧。 Dmitriy Skub 2014.05.13 21:47 #2459 Abramboss: 分享我个人图书馆中著名作家的课程。叶林、巴兹诺夫、斯特姆日、卢基扬诺夫、切廖穆什金、赫奇克、亚历克斯-米勒等等。几乎所有这些作者的课程。问吧。 免费分享?对Gerchik感兴趣。 Евгений 2014.05.14 17:21 #2460 大家好,我需要关于著名的CrossArbitr指标的帮助。当然,这些代码不是我的。需要一些信息,但它并没有输出这些信息。因此,按照顺序。我添加了变量双n,m。"/nDifference BID Synthetic and Real =", n=(CalcBid-Bid),",ASK合成和真实的差异=",m=(CalcAsk-Ask)。"/nTotal =" (m - n) <----它最后在这个括号里对减号发誓(预计有些操作性)。谁能告诉我我做错了什么?//+------------------------------------------------------------------+ //| CrossArbitr.mq4 | //| Scriptong | //| | //+------------------------------------------------------------------+ #property copyright "Scriptong" #property link "" #property indicator_chart_window //---- input parameters extern bool ShowBid=false; extern bool ShowAsk=false; extern color BidColor = Lime; extern color AskColor = Yellow; extern int AlarmIfPointDifference = 10; extern string AlarmFile = "wait.wav"; bool Activate = False; string FP, SP; double Tick; int WayForCross; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators string 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) { case 1: return(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_BID))); case 2: return(ND(MarketInfo(SP, MODE_BID)/MarketInfo(FP, MODE_ASK))); case 3: return(ND(MarketInfo(FP, MODE_BID)/MarketInfo(SP, MODE_ASK))); case 4: return(1/(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_BID)))); } } //+------------------------------------------------------------------+ //| Расчет значения синтетического аска | //+------------------------------------------------------------------+ double CalcAskWayForCross() { switch (WayForCross) { case 1: return(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_ASK))); case 2: return(ND(MarketInfo(SP, MODE_ASK)/MarketInfo(FP, MODE_BID))); case 3: return(ND(MarketInfo(FP, MODE_ASK)/MarketInfo(SP, MODE_BID))); case 4: 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 и Ask double CalcBid = CalcBidWayForCross(); RefreshRates(); double CalcAsk = CalcAskWayForCross(); double n, m; // ------------------------------- // Рисуем уровень синтетического Bid if (ShowBid) { if(ObjectFind("CrossBid") == -1) { ObjectCreate("CrossBid", OBJ_HLINE, 0, 0, CalcBid); ObjectSet("CrossBid", OBJPROP_COLOR, BidColor); ObjectSet("CrossBid", OBJPROP_STYLE, STYLE_DOT); } else if(!ObjectMove("CrossBid", 0, 1, CalcBid)) Print("Ошибка перемещения №", GetLastError()); } // ---------------------------------- // Рисуем уровень синтетического Ask if(ShowAsk) { if(ObjectFind("CrossAsk") == -1) { ObjectCreate("CrossAsk", OBJ_HLINE, 0, 0, CalcAsk); ObjectSet("CrossAsk", OBJPROP_COLOR, AskColor); ObjectSet("CrossAsk", OBJPROP_STYLE, STYLE_DOT); } else ObjectMove("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); } //+------------------------------------------------------------------+ 1...239240241242243244245246247248249250251252253...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好。我的问题在很多人看来可能是非常愚蠢的,我很抱歉,我还是这个行业的初学者,我搞不清楚哪里出了问题。
我在MQL5\Files\date.txt中创建了一个文本文件,但无法打开它。5004号错误正在书写。如果可以的话,请帮助我。
下午好。我的问题在很多人看来可能是非常愚蠢的,我很抱歉,我还是这个行业的初学者,我搞不清楚哪里出了问题。
我在MQL5\Files\date.txt中创建了一个文本文件,但无法打开它。5004号错误正在书写。如果可以的话,请帮助我们。
如果你的文件不在MT5客户终端的共享文件夹中(而在你的情况下,它是)。
你必须删除FILE_COMMON 标志。
如果你的文件不在MT5客户终端的共享文件夹中(而在你的情况下,它是)。
FILE_COMMON 标志必须被删除。
谢谢你的帮助,但不幸的是,它并没有帮助。尝试了很多关于旗帜的选项。另外,写错5004。还有什么可以尝试的吗?
试着把它作为一个文本文件简单地打开。
试着把它作为一个文本文件简单地打开。
这也没有用。我以前从未处理过文件。你不需要在这里做任何额外的事情吗?
是的,你必须确保关闭该文件。
是的,你肯定应该关闭该文件。
分享我个人图书馆中著名作家的课程。
大家好,我需要关于著名的CrossArbitr指标的帮助。当然,这些代码不是我的。需要一些信息,但它并没有输出这些信息。因此,按照顺序。
我添加了变量双n,m。
"/nDifference BID Synthetic and Real =", n=(CalcBid-Bid),
",ASK合成和真实的差异=",m=(CalcAsk-Ask)。
"/nTotal =" (m - n) <----
它最后在这个括号里对减号发誓(预计有些操作性)。谁能告诉我我做错了什么?