//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
文档中说,应该用iCustom 函数来调用第三方指标。
这个函数的第二个参数是时间框架。如果我在一个指标中拥有这个参数,并且它将在iCustom 函数参数 中被指定,在名称 参数之后有一个地方可以输入指标传递的参数列表。
所以。在任何情况下,我都会从指标中传递时间框架参数。如果我们在2个地方指定相同的参数,这是不符合逻辑的。那么,什么是正确的做法呢?
一切都井然有序。一切都必须具体化。第二个参数是指标物理连接的TF,自定义TF是指标获取数据进行计算的地方。当然,你可以从指标代码中删除第二个参数,如果有这方面的逻辑。
我现在明白了。谢谢你。
但是,应该在指标中设置的参数也应该在EA中声明。事实证明,指标和专家顾问的正确联合操作的所有参数值在两种情况下都应该同样定义?
如果我在iCustom 中输入了变量,但没有在EA中声明这些变量,那么在编译时,日志将说明我输入的这些变量没有被声明。
谁知道在哪个代码库EA中,我可以看到OrderCloseBy()函数是如何与所有派别进行编码的。看了教程中的closeeby脚本,但不知道如何把它变成一个可以从EA调用的函数,等等。 也许你可以教我怎么做!谢谢你!
你在这里看到过吗?https://docs.mql4.com/ru/trading/OrderCloseBy
你见过这个吗?https://docs.mql4.com/ru/trading/OrderCloseBy
当然,我是这样做的!我理解这个原则,但它并不奏效,我需要利用这个机会来节省差价。这就是为什么我想看看那些有效的例子。我正在通过Code Base寻找,但到目前为止还没有成功。没有人在这些EA中使用这种相互关闭。我希望能见到他们组装起来,而不是靠螺丝钉。晚安!明早可能会更明智!
你能告诉我如何删除趋势线、指标等吗?在正常的电脑上,在Windows上,我在选择它们后用鼠标右键进行操作,但在imac上我不知道如何操作。我 也找不到如何将金子添加到普通列表中?
下午好。人们,请回答这个问题(第三次发帖)。关于文件索引的问题...在我的MQL4 书中,可以在MQL4.community 找到,在 "标准函数 "部分,有一个脚本 "文件操作 "的例子,它是用来从文件中读取数据并在符号窗口中显示图形对象的。
下面,在分析《MQL4》一书中的这个脚本时,给出了以下语句:"如果删除指定的检查(第5-6块的最后2行),在运行时将创建一个额外的对象。只有在这之后,while 循环的终止条件才会触发,控制权才会被传递到8-9块"。
我的理解是否正确?文件指针不是由文本符号流入的(例如:text|其中 | 是一个文件指针),而是一个带有表达式的指针,例如:text 其中k 是"to"字符,k-th被文件指针突出显示。这解释了对字符串的需求(见第164页)。
的确如此。在倒数第二个迭代中,在创建最后一个对象之后
2007.05.11 18:30;JPY
文件指针位于最后一个对象的位置,即
2007.05.11 18:30;日元 工业制造
(其中o 是 "o" 字符,k是文件索引)。然后当把控制权传给while 语句头时,FileIsEnding(handle) 函数显然会返回 true, 因为 文件指针不是在文件的末尾,而是在该文件的最后一个字符。然后当前两行被执行时,文件指针将移动到空位,如果没有行
脚本将创建一个图形(即一行),其描述为空,时间坐标对应于0。这就是这句话的意思:"如果指定的检查(5-6块的最后2行)被删除,那么在运行时将创建一个额外的对象。"
问题:我的理解是否正确。
a) 文件指针的定义。
b)"如果指定的检查(5-6块中的最后2行)被删除,那么 在程序执行时将会创建一个额外的对象"这句话的含义。只有在这之后, while 循环的结束条件才会被触发,控制权才会被传递到8-9块"。
P.S. 为了不给论坛添乱,提前感谢您的回答。
请告诉我如何关闭部分利润(例如:50%的开仓交易)?
Lot =NormalizeDouble(OrderLots()/2,Digits);