Запишите всю необходимую информацию в массив, а потом в нужном месте выведите ее в файл одной функцией:
//+------------------------------------------------------------------+ //| запись содержимого файла в массив строк array[] | //| в случае неудачи вернем false | //+------------------------------------------------------------------+ bool ReadFileToArray(string &array[],string FileName, string WorkFolderName) { bool res=false; int FileHandle; string tempArray[64000],currString; int stringCounter; int devider='\x90'; string FullFileName; if (StringLen(WorkFolderName)>0) FullFileName=StringConcatenate(WorkFolderName,"\\",FileName); else FullFileName=FileName; //---- Print("Попытка прочитать файл ",FileName); FileHandle=FileOpen(FullFileName,FILE_READ,devider); if (FileHandle!=-1) { while(!FileIsEnding(FileHandle)) { tempArray[stringCounter]=FileReadString(FileHandle); stringCounter++; } stringCounter--; if (stringCounter>0) { ArrayResize(array,stringCounter); for (int i=0;i<stringCounter;i++) array[i]=htmlToXML_2(tempArray[i]); res=true; } FileClose(FileHandle); } else { Print("Не удалось прочитать файл ",FileName); } //---- return(res); }
Я дамал запись в файл проще.
Ладно, спасибо, буду разбираться.
Извиняюсь, не ту функцию выложил. Вот сейчас правильная.
//+------------------------------------------------------------------+ //| записывает содежимое массива строк в файл | //+------------------------------------------------------------------+ void TestWrite(string Array[],string FileName) { int handle=-1; int size=ArraySize(Array); if (size==0 || StringLen(FileName)==0) return; if (StringLen(FileName)==0) { Print("Не задано имя для отладочного файла!"); return; } //---- handle=FileOpen(FileName,FILE_WRITE|FILE_CSV); if (handle==-1) { Print("Не удалось открыть файл ",FileName); return; } if (handle>0) for (int i=0;i<size;i++) FileWrite(handle,Array[i]); if (handle>0) FileClose(handle); //---- return; }
Спасибо!
Значит мне все что в "Comment" нужно в строковый массив записать, а потом уже этот массив в файл.
Буду пробовать.
Вообще лучше бы скрипт написали... Все стат расчёты которые Вы делаете за секунды, а то и быстрее. А по поводу комбинаций я уже где то здесь говорил, по моему это бесполезная трата времени.
Вообще лучше бы скрипт написали... Все стат расчёты которые Вы делаете за секунды, а то и быстрее. А по поводу комбинаций я уже где то здесь говорил, по моему это бесполезная трата времени.
А в скрипте как вывести статистику (результаты) в файл?
А по поводу бесполезности - возможно, что и так. Но мы же русские люди, пока не удостоверимся - не поверим.
Я хочу провести анализ свечных формаций закодированных по Лиховидову. Может что и получиться.
А в скрипте как вывести статистику (результаты) в файл?
А по поводу бесполезности - возможно, что и так. Но мы же русские люди, пока не удостоверимся - не поверим.
Я хочу провести анализ свечных формаций закодированных по Лиховидову. Может что и получиться.
Точно так же как и в советнике.
Вот советник, скрипт не могу написать - занят :(
static datetime PrevTime=0;
extern int Razvorot_Vos=0;
extern int Prodolshenie_Vos=0;
extern int Razvorot_Pad=0;
extern int Prodolshenie_Pad=0;
extern int Summ_Vos=0;
extern int Razvorot_Vos_Proc=0;
extern int Prodolshenie_Vos_Proc=0;
extern int Summ_Pad=0;
extern int Razvorot_Pad_Proc=0;
extern int Prodolshenie_Pad_Proc=0;
//----------------------------------------------------------------+
int deinit(){
// если оптимизация то файл репорта не создаём
if(IsOptimization()==false) fail_pis(); return(0);}
//----------------------------------------------------------------+
int start()
{
if (PrevTime!=Time[0])
{
PrevTime=Time[0];
if (iOpen(NULL,0,1)>iClose(NULL,0,1) && iOpen(NULL,0,2)<iClose(NULL,0,2) && iOpen(NULL,0,3)<iClose(NULL,0,3) && iOpen(NULL,0,4)<iClose(NULL,0,4))
{Razvorot_Vos++;}
if (iOpen(NULL,0,1)<iClose(NULL,0,1) && iOpen(NULL,0,2)<iClose(NULL,0,2) && iOpen(NULL,0,3)<iClose(NULL,0,3) && iOpen(NULL,0,4)<iClose(NULL,0,4))
{Prodolshenie_Vos++;}
int Summ_Vos=Razvorot_Vos+Prodolshenie_Vos;
if (Summ_Vos!=0)
{Razvorot_Vos_Proc=Razvorot_Vos*100/Summ_Vos; Prodolshenie_Vos_Proc=Prodolshenie_Vos*100/Summ_Vos;}
if (iOpen(NULL,0,1)<iClose(NULL,0,1) && iOpen(NULL,0,2)>iClose(NULL,0,2) && iOpen(NULL,0,3)>iClose(NULL,0,3) && iOpen(NULL,0,4)>iClose(NULL,0,4))
{Razvorot_Pad++;}
if (iOpen(NULL,0,1)>iClose(NULL,0,1) && iOpen(NULL,0,2)>iClose(NULL,0,2) && iOpen(NULL,0,3)>iClose(NULL,0,3) && iOpen(NULL,0,4)>iClose(NULL,0,4))
{Prodolshenie_Pad++;}
int Summ_Pad=Razvorot_Pad+Prodolshenie_Pad;
if (Summ_Pad!=0)
{Razvorot_Pad_Proc=Razvorot_Pad*100/Summ_Pad; Prodolshenie_Pad_Proc=Prodolshenie_Pad*100/Summ_Pad;}
Comment
(" После трех бычьих свечей: ","\n",
"идет медвежья свеча в ", Razvorot_Vos, " случаях, ", "вероятность ", Razvorot_Vos_Proc, "%", "\n",
"идет бычья свеча в ", Prodolshenie_Vos, " случаях, ", "вероятность ", Prodolshenie_Vos_Proc, "%", "\n",
" После трех медвежьих свечей: ","\n",
"идет бычья свеча в ", Razvorot_Pad, " случаях, ", "вероятность ", Razvorot_Pad_Proc, "%", "\n",
"идет медвежья свеча в ", Prodolshenie_Pad, " случаях, ", "вероятность ", Prodolshenie_Pad_Proc, "%");
}
return(0);
}
//+------------------------------------------------------------------+
void fail_pis (){
int handle=FileOpen("report.txt",FILE_READ|FILE_WRITE,' ');
if(handle<1) return;
FileSeek(handle,FileSize(handle),SEEK_SET);
FileWrite(handle," После трех бычьих свечей: ","\n",
"идет медвежья свеча в ", Razvorot_Vos, " случаях, ", "вероятность ", Razvorot_Vos_Proc, "%", "\n",
"идет бычья свеча в ", Prodolshenie_Vos, " случаях, ", "вероятность ", Prodolshenie_Vos_Proc, "%", "\n",
" После трех медвежьих свечей: ","\n",
"идет бычья свеча в ", Razvorot_Pad, " случаях, ", "вероятность ", Razvorot_Pad_Proc, "%", "\n",
"идет медвежья свеча в ", Prodolshenie_Pad, " случаях, ", "вероятность ", Prodolshenie_Pad_Proc, "%");
FileClose(handle);}
Я некоторые читал, но довольно тяжело для понимания награмождения математических формул. Мне бы что попроще. Может ссылоччкой поделишься?
Вы наверно про статью от математика?
Вот статья https://www.mql5.com/ru/articles/1522 от ForexTools. У него в профиле сайт, где он выкладывал по сбору статистике скрипты.
Вот статья https://www.mql5.com/ru/articles/1536. Там как раз то что ты исследуешь. Пример сбора статистики для оценки японского анализа. Также и по индикаторам.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сделал советника, который собирает статистику и выводит на экран при прогоне с визуализацией, а как вывести статистику в файл? Т.е. как вывести весь блок "Соммent" в файл?