Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 490
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день!
У меня есть советник, который делает определенные вычисления. Он использует разные мат операции, массивы, циклы. Результат записывает в файл. После выполнения всех действий, он должен все начать с начала. Но он делает один раз все вычисления, а на второй раз начинает и зависает, не происходит никаких действий. Подскажите может перед началом нового вычисления нужно обнулять переменные, очищать массивы или еще что-то?
Файл закрывать не пробовали?
Как запрограммировать костыль/индикатор/скрипт (в виде индикатора с вкладками "о программе, Общие, Входные параметры, Цвета, Отображение") для МТ4 чтобы он брал зааза такая данные с файла .csv, напримерформат исходного файла:
Т.е. индикатор взял с файла данные записанные и вставил скомментарием на графикв виде отрезков (TF, TA) или цветного диапазона (EA) с параметрами протяженности ровно "день" (от границы до границы вертикальных разделителей дней на МТ4), для линий выбор цвета линии, тип линии, выбор цвета текста и размера комментария и подстановка к линии отрезка комментария например в виде "TF - 1,192" вторая линия "TF - 1,1733" которые берутся с соответвующих строк файла. При этом отрезок чисто горизонтальный и из строки EUR;TF;1.192;1,1733 берет для своей гоизонтали именно первую цифру для одного отезка и вторую цифру для второго отрезка как начало отезка 1.192 и конец 1.192.
Есть и диапазоны напимер EA принцип тот же от начала до конца дня но у него парметр по цене отличается и строка начало и конец имеется CHF;AB1;1.03484132734247;1.02549513556164 начало это 1.03484132734247 конец диапазона 1.02549513556164. Запускается при включении МТ4 (как обычный индюк стоящий на гафике), каждый день на графике и добавляет все данные именно в текущий день единожды, все нанесенные ранее линии не удаляет при этом с графика и не дублирует. При всем этом выбирает и показывает все отрезки и диапазоны на день, только там где активное окно сейчас и на других активных окнах (т.е. где запущен) (т.е. открыл пару и индикатор порисовал все отрезки и диапазоны текущего дня и успокоился и так далее по парам).
напимер как должна выглядить вкладка индикатора Входные параметры:
пытался накорябать сам,но ни черта не получается хотя вроде легкая (ну гуманитарий я че поделать....) Помогите пожалуйста утопающему!!!!!!!!
Здравствуйте!
Пожалуйста, помогите пож. найти ошибку след. программе!!!
//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int Period_MA = 365; //Период МА 1
extern double Delta = 0.0010; //На каком расстоянии открывать ордер
string Symb; //Название торгового инструмента
//int Total; //количество ордеров
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Obj_Label");
ObjectDelete("Obj_Label2");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double prise = Bid; //текущая цена
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //значение скользящей средней
double Price2MA = price - CurrMAValue; //расстояние о МА до цены
datetime NextClose = Time(0) + Period()*60*2; //время до закрытия
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; //время до закрытия в минутах
//int err;
//обновление текст информации на графике
ObjectSetText ("Obj_Label", "ТФ" + Period() + ", " + DoubleToStr(price, 4) + ", тик " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Дельта " + DoubleToStr(Delta,4) + ", знач МА " + DoubleToStr(CurrMAValue, 4) + ", расст до МА " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//анализ цены и выдача алертов
if ((MathAbs(Price2MA) < Delta) && // если расстоание до МА меньше дельты
(Price > CurrMAValue) && // и цена выше МА
(Open(0) > CurrMAValue+Delta)) // и текущая свеча открылась выше, чем МА+дельта
(
Alert ("Цена подощла к МА сверху");
)
if ((MathAbs(Price2MA) < Delta) && // если расстояние до МА меньше дельты
(price < CurrMAValue) && // и цена ниже МА
(Open(0) < CurrMAValue-Delta)) // и текущая свеча открылась ниже, чем МА-дельта
(
Alert ("Цена подошла к МА снизу");
)
return(0);
//+------------------------------------------------------------------+
После компиляции следующ. ошибка
Здравствуйте!
Пожалуйста, помогите пож. найти ошибку след. программе!!!
После компиляции следующ. ошибка
Фигурную скобку забыли
Такой вопрос, мне нужно интегрировать зигзаг в свой индюк(сейчас по хендлу считается)
Дело в том что мой индюк вообще OnCalculate() не использует, все на OnChartEvent()
Так как мне заставить работать зигзаг, откуда для его расчета мне взять rates_total и prev_calculated?
rates_total - это количество баров на графике. Определяется при помощи функции Bars.
prev_calculated - сделать аналог самому, объявив глобально (или статически) и записывать в нее реально посчитанное количество баров на текущей итерации. То есть после удачных вычислений значений индикатора нужно записать в нее количество текущих баров. Если вычисления неудачные, то лучше обнулить ее, чтобы на следующей итерации заново рассчитать значения индикатора на каждом баре в истории.
Re: Alekseu Fedotov
А что такое фигурная скобка, извините
Re: Alekseu Fedotov
А что такое фигурная скобка, извините
в квадратных индекс массива x[25]
void start()
{
в фигурных скобках Блок операторов
}
В круглых скобкиах аргумент функции sin(30)
в квадратных индекс массива x[25]
void start()
{
в фигурных скобках Блок операторов
}