[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 102

 

Уважаемые профи, подскажите пожалуйста такой вопрос:

У меня есть ранее записанный в текстовый файл строковой одномерный массив

EURUSD 1654.31

GBPUSD -1654.61

USDCAD 110.98

USDJPY 1180.17

И допустим суммарная прибыль по USDCAD изменилась и мне надо 3-ю строку заменить на "USDCAD 115.64"

Я эти данные считываю как одномерный строковой массив, но у меня не получается заменить в текстовом файле только этот элемент (может кто функцию напишет?)

или лучше не париться и перезаписывать весь массив?

Просто у меня данные поступают от советников, стоящих на разных парах - у каждой пары своя строка - лучше бы конечно только 1 элемент менять наверное.

 

Всем привет!!! Помогите разобратся с примером из ХЭЛПА

//--------------------------------------------------------------------
// usualexpert.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
#property copyright "Copyright © Book, 2007"
#property link "http://AutoGraf.dp.ua"
//--------------------------------------------------------------- 2 --
#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>
//--------------------------------------------------------------- 3 --
#include <Variables.mqh> // Описание переменных
#include <Check.mqh> // Проверка легальности использов. программ
#include <Terminal.mqh> // Учёт ордеров
#include <Events.mqh> // Функция слежения за событиями, обновлен.
#include <Inform.mqh> // Информационная функция
#include <Trade.mqh> // Торговая функция
#include <Open_Ord.mqh> // Открытие одного ордера заданного типа
#include <Close_All.mqh> // Закрытие всех ордеров заданного типа
#include <Tral_Stop.mqh> // Модификация StopLoss всех ордеров типа
#include <Lot.mqh> // Вычисление количества лотов
#include <Criterion.mqh> // Торговые критерии
#include <Errors.mqh> // Функция обработки ошибок.
//--------------------------------------------------------------- 4 --
int init() // Спец. функция init
{
Level_old=MarketInfo(Symbol(),MODE_STOPLEVEL );//Миним. дистаниция
Terminal(); // Функция учёта ордеров
return; // Выход из init()
}
//--------------------------------------------------------------- 5 --
int start() // Спец. функция start
{
if(Check()==false) // Если условия использования..
return; // ..не выполняются, то выход
PlaySound("tick.wav"); // На каждом тике
Terminal(); // Функция учёта ордеров
Events(); // Информация о событиях
Trade(Criterion()); // Торговая функция
Inform(0); // Для перекрашивания объектов
return; // Выход из start()
}
//--------------------------------------------------------------- 6 --
int deinit() // Спец. функция deinit()
{
Inform(-1); // Для удаления объектов
return; // Выход из deinit()
}
//--------------------------------------------------------------- 7 --

2) Только в месте хранения?или и в оформлении кода?

Вопросы в следующем, 1) В чем разница между включаемыми файлами (#include<...> и #include "..."), 3) И чем импортируемымые функции (#import) отличаются от директивы #include?

Пример из ХЭЛПА usualexpert.mq4 илюстрирует состав советника, построеного на включаемых файлах находящихся судя по скобкам <> в файле своей директории #include.

Вопросы: Вкл\файл #include <Variables.mqh> // Описание переменных, при создании по примеру:

//--------------------------------------------------------------------
// Variables.mqh
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
// Описание глобальных переменных
extern double Lots =0.0; // Количество лотов
extern int Percent =0; // Процент выделенных средств
extern int StopLoss =100; // StopLoss для новых ордеров (пунктов)
extern int TakeProfit =40; // TakeProfit для новых ордеров (пунктов)
extern int TralingStop=100; // TralingStop для рыночных ордеров (пунк)
//--------------------------------------------------------------- 2 --
int
Level_new, // Новое значение минимальной дистанции
Level_old, // Предыдущее значение минимальной дистанции
Mas_Tip[6]; // Массив типов ордеров
// [] тип орд: 0=B,1=S,2=BL,3=SL,4=BS,5=SS
//--------------------------------------------------------------- 3 --
double
Lots_New, // Количество лотов для новых ордеров
Mas_Ord_New[31][9], // Массив ордеров текущий ..
Mas_Ord_Old[31][9]; // .. и старый
// 1й индекс = порядковый номер ордера
// [][0] не определяе тся
// [][1] курс откр. ордера (абс.знач.курса)
// [][2] StopLoss ордера (абс.знач.курса)
// [][3] TakeProfit ордера (абс.знач.курса)
// [][4] номер ордера
// [][5] колич. лотов орд. (абс.знач.курса)
// [][6] тип орд. 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] магическое число ордера
// [][8] 0/1 факт наличия комментария
//--------------------------------------------------------------- 4 --

При компиляции выдает ошибку -- '\end_of_program' - no function defined что она значит и не нужно-ли в конце к этому примеру чего-то добавить

И так-ли включаемые файлы должны выглядеть или к ним надо добавлять в шапку:

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/&quot;
#property library
//+------------------------------------------------------------------+
//| return error description |
//+------------------------------------------------------------------+

например в составе ( usualexpert.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. ) есть #include <Check.mqh> // Проверка легальности использов. программ Он без этой шапки выдает ошибку (Start function not found and cannot be run). А с ней все гуд!?

Или-же, вкл.файлы содержат лишь описание пользовательских функций, распологающиеся в библиотеке функций по адресу (libraries) И надо ли в ползоват. функц. использовать спец.функцю start. Если она есть в файле эксперта?

 
Las-tochka:

Всем привет!!! Помогите разобратся с примером из ХЭЛПА

//--------------------------------------------------------------------
// usualexpert.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
#property copyright "Copyright © Book, 2007"
#property link "http://AutoGraf.dp.ua"
//--------------------------------------------------------------- 2 --
#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>
//--------------------------------------------------------------- 3 --
#include <Variables.mqh> // Описание переменных
#include <Check.mqh> // Проверка легальности использов. программ
#include <Terminal.mqh> // Учёт ордеров
#include <Events.mqh> // Функция слежения за событиями, обновлен.
#include <Inform.mqh> // Информационная функция
#include <Trade.mqh> // Торговая функция
#include <Open_Ord.mqh> // Открытие одного ордера заданного типа
#include <Close_All.mqh> // Закрытие всех ордеров заданного типа
#include <Tral_Stop.mqh> // Модификация StopLoss всех ордеров типа
#include <Lot.mqh> // Вычисление количества лотов
#include <Criterion.mqh> // Торговые критерии
#include <Errors.mqh> // Функция обработки ошибок.
//--------------------------------------------------------------- 4 --
int init() // Спец. функция init
{
Level_old=MarketInfo(Symbol(),MODE_STOPLEVEL );//Миним. дистаниция
Terminal(); // Функция учёта ордеров
return; // Выход из init()
}
//--------------------------------------------------------------- 5 --
int start() // Спец. функция start
{
if(Check()==false) // Если условия использования..
return; // ..не выполняются, то выход
PlaySound("tick.wav"); // На каждом тике
Terminal(); // Функция учёта ордеров
Events(); // Информация о событиях
Trade(Criterion()); // Торговая функция
Inform(0); // Для перекрашивания объектов
return; // Выход из start()
}
//--------------------------------------------------------------- 6 --
int deinit() // Спец. функция deinit()
{
Inform(-1); // Для удаления объектов
return; // Выход из deinit()
}
//--------------------------------------------------------------- 7 --

2) Только в месте хранения?или и в оформлении кода?

Вопросы в следующем, 1) В чем разница между включаемыми файлами (#include<...> и #include "..."), 3) И чем импортируемымые функции (#import) отличаются от директивы #include?

Пример из ХЭЛПА usualexpert.mq4 илюстрирует состав советника, построеного на включаемых файлах находящихся судя по скобкам <> в файле своей директории #include.

Вопросы: Вкл\файл #include <Variables.mqh> // Описание переменных, при создании по примеру:

//--------------------------------------------------------------------
// Variables.mqh
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
// Описание глобальных переменных
extern double Lots =0.0; // Количество лотов
extern int Percent =0; // Процент выделенных средств
extern int StopLoss =100; // StopLoss для новых ордеров (пунктов)
extern int TakeProfit =40; // TakeProfit для новых ордеров (пунктов)
extern int TralingStop=100; // TralingStop для рыночных ордеров (пунк)
//--------------------------------------------------------------- 2 --
int
Level_new, // Новое значение минимальной дистанции
Level_old, // Предыдущее значение минимальной дистанции
Mas_Tip[6]; // Массив типов ордеров
// [] тип орд: 0=B,1=S,2=BL,3=SL,4=BS,5=SS
//--------------------------------------------------------------- 3 --
double
Lots_New, // Количество лотов для новых ордеров
Mas_Ord_New[31][9], // Массив ордеров текущий ..
Mas_Ord_Old[31][9]; // .. и старый
// 1й индекс = порядковый номер ордера
// [][0] не определяе тся
// [][1] курс откр. ордера (абс.знач.курса)
// [][2] StopLoss ордера (абс.знач.курса)
// [][3] TakeProfit ордера (абс.знач.курса)
// [][4] номер ордера
// [][5] колич. лотов орд. (абс.знач.курса)
// [][6] тип орд. 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] магическое число ордера
// [][8] 0/1 факт наличия комментария
//--------------------------------------------------------------- 4 --

При компиляции выдает ошибку -- '\end_of_program' - no function defined что она значит и не нужно-ли в конце к этому примеру чего-то добавить

И так-ли включаемые файлы должны выглядеть или к ним надо добавлять в шапку:

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property library
//+------------------------------------------------------------------+
//| return error description |
//+------------------------------------------------------------------+

например в составе ( usualexpert.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. ) есть #include <Check.mqh> // Проверка легальности использов. программ Он без этой шапки выдает ошибку (Start function not found and cannot be run). А с ней все гуд!?

Или-же, вкл.файлы содержат лишь описание пользовательских функций, распологающиеся в библиотеке функций по адресу (libraries) И надо ли в ползоват. функц. использовать спец.функцю start. Если она есть в файле эксперта?

Прочтите как следует пример из учебника - там все есть... Инклюды это включаемые участки программы (конструктивно названные по содержанию в зав-ти от выполняемой каждым из них задачи) - их компилировать не надо. Копмилируется САМ эксперт при этом инклюды размещаются в *.ex4 файле последовательно, в зав-ти от их написания Вами в тексте программы. Именно, поэтому пользовательский #include <Variables.mqh> // Описание переменных - находится ПЕРВЫМ в блоке 3 программы. Попробуйте его перенести в конец этого блока и скомпилить эксперта - увидите, сколько будет ошибок.
 
alsu:
.......

Более правильный путь вычисления моды такой: строится эмпирическая функция распределения (не путать с распределением частот), после чего она интерполируется от кусочно-линейной к гладкой, и в завершение ищется точка максимума производной. Такой алгоритм свободен от перечисленных выше недостатков и работает весьма эффективно даже с малыми объемами выборки. По крайней мере, мне приходилось решать на MQL как раз задачу нахождения мод на выборках всего в 50-100 элементов при сравнимом количестве интервалов, и все было ОК. Недостаток один - на интерполяциях как правило сильно падает скорость расчетов, если, конечно, хотим сглаживать качественно.

Алексей, большое спасибо.... Общий принцип построения этой функции мне стал понятен))))
 
Добрый день! Подскажите что значит Comment(""), что в таком случае будет выводить функция?
 
Chuma:
Добрый день! Подскажите что значит Comment(""), что в таком случае будет выводить функция?
окошко с текстом, указанном в кавычках
 
Comment() выводит текст не в окошке а в верхнем левом углу графика
 
Столкнулся с одной не стыковкой, есть индикатор, работающий по ценам открытия и есть советник, где проставляется ТФ на котором он торгуется, используя сигналы этого индикатора. Ставлю в сове и тестере 15мин - по ценам открытия, получается некий результат. Но если при этом в тестере поставить к примеру 1мин - по ценам открытия, то результат не слишком радикально, но меняется. Никак не въеду в чем дело? Получается что цена открытия минутки нового часа не совпадает с ценой открытия часа??? Или это издержки тестера какие? Подскажите где собака зарыта?.
 
moskitman:
окошко с текстом, указанном в кавычках

Я имел ввиду случай, когда в скобках стоят только кавычки : Comment("")

 
Chuma:

Я имел ввиду случай, когда в скобках стоят только кавычки : Comment("")

Очистит предыдущие комментарии.
Причина обращения: