Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И тишина...
Все наверно в шоке...
Очень плохо когда функции имеют вид: void NameFunc(void) - какой смысл в ней? Ничего не принимает, нечего возвращает... на хрена тратить время процессора на переход к ней? Глобальные переменные это здорово, но накладно для памяти. Используй больше локальных(внутри функции) переменных, память освободиться сразу по завершению функции. А это что ?- FileWriteInteger(h,ArraySize(Massiv),LONG_VALUE); придумал для себя маленькую проблему? Зачем писать в свой файл сколько ты туда писал? Это твой файл, и никто кроме тебя его читать не будет... пиши проще и лаконичней...
void OnStart()
{
//--- value
int NowOutArray[] = {1,2,3,4,5,6,7,8,9,10};
int NowInArray[];
string NowName = "Testy.bin";
//--- Test # 1. Write to the file
MyCFileWrite(NowName,NowOutArray);
//--- Test # 2. Read file
MyCFilesOpen(NowName,NowInArray);
//---
return;
}
//+------------------------------------------------------------------+
//| Функция-читалка |
//+------------------------------------------------------------------+
int MyCFilesOpen(string NameFile, // Имя файла
int &OutBuf[], // Выходной буфер(это указатель на массив без размера!)
int SizeRead = INT_VALUE // размер целого типа в байтах
)
{
//--- value
int ret = -1;
int handleF = FileOpen(NameFile,FILE_BIN|FILE_READ);
if(handleF == INVALID_HANDLE) return(ret);
ulong SizeDataToRead = FileSize(handleF)/SizeRead;
//---
for(int i=0;i<(int)SizeDataToRead&&!IsStopped();i++)
{
ArrayResize(OutBuf,i+1,(int)SizeDataToRead);
OutBuf[i] = FileReadInteger(handleF);
}
//---
ret = ArraySize(OutBuf);
FileClose(handleF);
//---
return(ret);
}
//+------------------------------------------------------------------+
//| Функция-писалка |
//+------------------------------------------------------------------+
int MyCFileWrite(string NameFile, // Имя файла
int &InBuf[] // Входной буфер
)
{
//--- value
int ret = -1;
int handleF=FileOpen(NameFile,FILE_BIN|FILE_WRITE);
if(handleF == INVALID_HANDLE) return(ret);
//---
ret = (int)FileWriteArray(handleF,InBuf,0,ArraySize(InBuf));
//---
FileClose(handleF);
//---
return(ret);
}
//+------------------------------------------------------------------+
И старайся выработать простое правило: мои функции, классы, структуры начинаются MyC !
Удачи!
Все наверно в шоке...
Очень плохо когда функции имеют вид: void NameFunc(void) - какой смысл в ней? Ничего не принимает, нечего возвращает... на хрена тратить время процессора на переход к ней? Глобальные переменные это здорово, но накладно для памяти. Используй больше локальных(внутри функции) переменных, память освободиться сразу по завершению функции. А это что ?- FileWriteInteger(h,ArraySize(Massiv),LONG_VALUE); придумал для себя маленькую проблему? Зачем писать в свой файл сколько ты туда писал? Это твой файл, и никто кроме тебя его читать не будет... пиши проще и лаконичней...
И старайся выработать простое правило: мои функции, классы, структуры начинаются MyC !Удачи!
Спасибо. Мало что понял но попытаюсь разобраться.
Всем добра. Подскажите как сделать правильно на элементарном примере.
Fun_New_Bar(); // Проверяем новый бар
if(New_Bar) { тра-ля-ля...}
// ============================================
void Fun_New_Bar() // Ф-ия обнаружения ..нового бара
{
if(BBars==iBars(Symbol(),SigTfFr)) New_Bar=false;
if(BBars!=iBars(Symbol(),SigTfFr)) {BBars=iBars(Symbol(),SigTfFr);New_Bar=true;}
}
//+------------------------------------------------------------------+
Всем добра. Подскажите как сделать правильно на элементарном примере.
Fun_New_Bar(); // Проверяем новый бар
if(New_Bar) { тра-ля-ля...}
// ============================================
void Fun_New_Bar() // Ф-ия обнаружения ..нового бара
{
if(BBars==iBars(Symbol(),SigTfFr)) New_Bar=false;
if(BBars!=iBars(Symbol(),SigTfFr)) {BBars=iBars(Symbol(),SigTfFr);New_Bar=true;}
}
//+------------------------------------------------------------------+
Вначале определитесь, что будет делать функция. Одна функция - одно конкретное действие. В данном случае, как я понял, нужно проверить факт образования нового бара.
Можно, конечно, обратиться к статье. Рассказывается про множество подводных камней и как их обойти.
Но, если по-простому и для форекса в большинстве случаев должен помочь такой алгоритм:
Проведена работа над ошибками... https://www.mql5.com/ru/code/12707
Может кто бегло взглянет и укажет на недостатки...