Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...
Я думаю (поскольку я не вижу вашего советника, который записывает значения в файл csv), что вам не хватает одного FileFlush(). В случаях, когда вы хотите сделать изменения в файле доступными для "других" немедленно, не закрывая файл (что неявно использует flush ), вы должны всегда промывать изменения на диск.
с уважением
mladen
Привет,
Я пишу советника, который работает с CSV-файлами.
Для тестирования я поместил свои CSV-файлы в следующую папку:
/tester/files
Здесь представлена только небольшая часть моего советника:
int handle = 0;
int Long = 0;
handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');
if (handle > 0)
{
Long= FileReadNumber(handle);
FileClose(handle);
}
Print("LongMarket = ", Long);
Print("Long handle = ", handle);В моем советнике я читаю CSV-файлы, а затем записываю некоторые целые числа.
Теперь, когда я провожу тест и читаю в журнале "Print"-сообщения, я часто получаю старые целые числа, которые больше не записаны в CSV-файлах!!!
Например:
Сначала написано 3, а мой советник работает и записывает в файл 0,
Я вижу только 3 в этом CSV-файле!!!
Когда я очищаю этот CSV-файл и помещаю новый CSV-файл с 3 в папку "/tester/files"-папка, я могу прочитать только 0 из тестового файла before!!!!. Но я не могу найти, где советник считывает 0!!!
Я схожу с ума!!!!!
Надеюсь, вы сможете понять мой вопрос и дать мне совет!!!Кто-нибудь может помочь мне добавить функцию предупреждения?
Я хотел бы добавить функцию предупреждения этого индикатора, цветовую сигнализацию. Я уже давно пытаюсь, использую "if alarm", но безуспешно. Кто-нибудь может мне помочь? Большое спасибо! ~ Мой английский не очень хорош, так что извините.
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 ForestGreen
#property indicator_color2 Red
#property indicator_color3 Black
#property indicator_color4 Black
//---- входные параметры
extern int FastClosePeriod=13;
extern int FastCloseShift=0;
extern int FastOpenPeriod=34;
extern int FastOpenShift=0;
extern int SlowClosePeriod=34;
extern int SlowCloseShift=0;
extern int SlowOpenPeriod=62;
extern int SlowOpenShift=0;
//---- индикаторные буферы
double ExtBlueBuffer[];
double ExtRedBuffer[];
double ExtDarkVioletBuffer[];
double ExtBlackBuffer[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- сдвиг линии при рисовании
SetIndexShift(0,FastCloseShift);
SetIndexShift(1,FastOpenShift);
SetIndexShift(2,SlowCloseShift);
SetIndexShift(3,SlowOpenShift);
//---- первые позиции пропускаются при рисовании
SetIndexDrawBegin(0,FastCloseShift+FastClosePeriod);
SetIndexDrawBegin(1,FastOpenShift+FastOpenPeriod);
SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod);
SetIndexDrawBegin(3,SlowOpenShift+SlowOpenPeriod);
//---- отображение 3 индикаторных буферов
SetIndexBuffer(0,ExtBlueBuffer);
SetIndexBuffer(1,ExtRedBuffer);
SetIndexBuffer(2,ExtDarkVioletBuffer);
SetIndexBuffer(3,ExtBlackBuffer);
//---- настройки рисования
SetIndexStyle(0,DRAW_HISTOGRAM,0,2);
SetIndexStyle(1,DRAW_HISTOGRAM,0,2);
SetIndexStyle(2,DRAW_NONE,0,2);
SetIndexStyle(3,DRAW_NONE,0,2);
//---- индексные метки
SetIndexLabel(0, "FastClose");
SetIndexLabel(1, "FastOpen");
SetIndexLabel(2, "SlowClose");
SetIndexLabel(3, "SlowOpen");
//---- инициализация выполнена
return(0);
}
//+------------------------------------------------------------------+
//| 9Squared Trader |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- проверка на возможные ошибки
if(counted_bars<0) return(-1);
//---- последний подсчитанный бар будет пересчитан.
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- основной цикл
for(int i=0; i<limit; i++)
{
//---- ma_shift установлен в 0, потому что SetIndexShift вызывался ранее
ExtBlueBuffer=iMA(NULL,0,FastClosePeriod,0,MODE_EMA,PRICE_CLOSE,i);
ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,MODE_EMA,PRICE_OPEN,i);
ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i);
ExtBlackBuffer=iMA(NULL,0,SlowOpenPeriod,0,MODE_EMA,PRICE_MEDIAN,i);
}
//---- сделано
return(0);
Вот, пожалуйста. Я сделал это очень быстро, и да, это можно сделать.
Посмотрите прилагаемый файл example.mq4 для примера кодирования.
Также прилагается снимок экрана с комментариями, чтобы вы могли видеть, что значения RSI сохраняются тик за тиком в массиве.Привет, Вольф,
Большое спасибо за ваш таймер и усилия. Я попробую это
с уважением,
MSV
Полоса Боллинджера
Здравствуйте,
Кто-нибудь может помочь мне с формулой Bollinger Band (20period dev 2 on close) в таблице Excel. Заранее благодарю.
Привет, ребята!!!
Мне нужно открыть только "один ордер на покупку и продажу "в день" в моем советнике, пожалуйста, как код для этого?
Привет, ребята! Мне нужно открыть только "один ордер на покупку и продажу "в день" в моем советнике, пожалуйста, как код для этого?
Я думаю, что вам нужно пройтись по всем закрытым ордерам и проверить каждый на символ и время закрытия... взять тот, который соответствует Symbol() и имеет последнее время закрытия. затем добавить 24 часа и использовать это в переменной для проверки текущего времени и открыть сделку, когда она достигнет последнего ордера + 24 часа.
Или более простой способ сделать это - просто использовать функцию TimeDayOfYear и проверить последний закрытый ордер с совпадающим символом и магическим числом. Просто убедитесь, что это не тот же день года, что и сегодня.
Посмотрите в файле справки определение и использование TimeDayOfYear.
С уважением,
Люкс