Кого интересует CandleCode? - страница 2

 
liza:
Вообще-то у меня появилась идея написать скрипт - который будет выдавать статистику зависимости кода от предыдущей свечи. А уже по этой статистике можно было бы и что-то создать!!!

Да вроде не нужно ничего создавать, японские свечи уже обо всем говорят! Там только самое правильно расписать АС, и если еще добавить Волны Эллиота. То даже можно будет просчитать длину толчка.

 

А как это сделать?  Я имею ввиду читать их и записывать в файл.  

И еще как это должно выглядеть в коде (АС и волны Элиота) совместно с Candlecode?

И мне кажется что если иметь статистику можно предсказать какой будет следующая свеча,

а если на нескольки ТФ то и точное время и направление движения.

 
liza:
А как это сделать? Я имею ввиду читать их и записывать в файл.

Честно говоря я еще слабо пишу. Посмотрите здесь Умная голова хорошо, две еще лучше что сумел. И если мы о том же самом, то можно на одной ветке рассуждать проблемы. Я не совсем пойму для чего записывать в файл?

 
Дело в том что потом можно читать из файла и подсчитать статистически какие свечи после каких ищут чаще всего.  Какое расстояние от Опен до Клоуз и от Опен до Лоу.  Сделав это на разных ТФ 50 п. можно сделать я думаю каждый день.
 
liza:

А как это сделать?  Я имею ввиду читать их и записывать в файл.  

И еще как это должно выглядеть в коде (АС и волны Элиота) совместно с Candlecode?

И мне кажется что если иметь статистику можно предсказать какой будет следующая свеча,

а если на нескольки ТФ то и точное время и направление движения.

https://book.mql4.com/ru/functions/index

Там все подробненько про работу с файлами, lisa

В вашем первом посте архив.... считать никак не могу, если не трудно не мейл отправьте (в личке).





 

Спасибо!

Не могу найти как в личку отправить.  

int CandleCode(int g)
{
int a, b, c, d, i = g;
double sumx=0, sumy=0, sumz=0;
if(iOpen(Symbol(),P,i) > iClose(Symbol(),P,i))
{
double hb0 = iOpen(Symbol(),P,i);
double lb0 = iClose(Symbol(),P,i);
}
else
{
hb0 = iClose(Symbol(),P,i);
lb0 = iOpen(Symbol(),P,i);
}
for(int k=0; k<150; k++)
{
if(iOpen(Symbol(),P,k) > iClose(Symbol(),P,k))
{
double hb = iOpen(Symbol(),P,k);
double lb = iClose(Symbol(),P,k);
}
else
{
hb = iClose(Symbol(),P,k);
lb = iOpen(Symbol(),P,k);
}
double x = MathAbs(iClose(Symbol(),P,k) - iOpen(Symbol(),P,k));
double y = iHigh(Symbol(),P,k) - hb;
double z = lb - iLow(Symbol(),P,k);
sumx+=x;
sumy+=y;
sumz+=z;
}
double bs=sumx/150;
double us=sumy/150;
double ls=sumz/150;

double b0=bs-bs/6*5;
double b1=bs-bs/4;
double b2=bs+bs/4;
double u0=us-us/6*5;
double u1=us-us/4;
double u2=us+us/4;
double l0=ls-ls/6*5;
double l1=ls-ls/4;
double l2=ls+ls/4;

if(iOpen(Symbol(),P, i) < iClose(Symbol(),P,i)) a=64;
else a=0;
if(hb0==iClose(Symbol(),P,i))
{
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i) ) < b0) b = 0;
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) < b1 &&
MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) > b0) b = 16;
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) > b1 &&
MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) < b2) b = 32;
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) > b2) b =48;
}
if(hb0==iOpen(Symbol(),P,i))
{
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i) ) < b0) b = 48;
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) < b1 &&
MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) > b0) b = 32;
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) > b1 &&
MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) < b2) b = 16;
if(MathAbs(iOpen(Symbol(),P,i) - iClose(Symbol(),P,i)) > b2) b =0;
}
if(iHigh(Symbol(),P,i) - hb0 < u0) c = 0;
if(iHigh(Symbol(),P,i) - hb0 > u0 && iHigh(Symbol(),P,i) - hb0 < u1) c = 4;
if(iHigh(Symbol(),P,i) - hb0 > u1 && iHigh(Symbol(),P,i) - hb0 < u2) c = 8;
if(iHigh(Symbol(),P,i) - hb0 > u2) c = 12;

if(lb0 - iLow(Symbol(),P,i) < l0) d = 3;
if(lb0 - iLow(Symbol(),P,i) > l0 && lb0 - iLow(Symbol(),P,i) < l1) d = 2;
if(lb0 - iLow(Symbol(),P,i) > l1 && lb0 - iLow(Symbol(),P,i) < l2) d = 1;
if(lb0 - iLow(Symbol(),P,i) > l2) d = 0;

return(a+b+c+d);

}

 
liza:
Вообще-то у меня появилась идея написать скрипт - который будет выдавать статистику зависимости кода от предыдущей свечи. А уже по этой статистике можно было бы и что-то создать!!!

1. Слово не воробей. В "оригинале" - претензия на советник, "в голове", скорее всего, индикатор, а в тексте поста- скрипт.

2.

//+------------------------------------------------------------------+
//|                                                   Статистика.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property show_inputs

extern int     Per0 = 1;
extern int     Per1 = 2;
extern int     Per2 = 3;
extern int     P = PERIOD_D1;
//extern double  lot = 0.01;
//extern int     sl = 80;
//extern int tp = 80;
//extern int Mag = 1;
extern string  FileName = "Статистика";

int start()
{
int handle;

handle=FileOpen(FileName + ".txt", FILE_CSV|FILE_WRITE,';');
if(handle<1)
{
  Print("Файловая ошибка: ", GetLastError());
  return(false);
}
FileWrite(handle,
          "Time",
          "Candle", 
          "Чё надо"
          );

for(int i = Bars - 1; i >= 0; i--)
{
  FileWrite(handle,
           TimeToStr(Time[i], TIME_DATE|TIME_MINUTES),
           CandleCode(i), 
           "Чё надо"
           );
}
FileClose(handle);
return(0);
}
 
SergNF:

2.

3.

int CandleCode(int g)
{
  int a, b, c, d, i = g;
  double sumx=0, sumy=0, sumz=0;
  double iOp, iCl;
  
  iOp = iOpen(Symbol(),P,i);
  iCl = iClose(Symbol(),P,i);
  if(iOp > iCl)
  {
   double hb0 = iOp;
   double lb0 = iCl;
  }
  else
  {
   hb0 = iCl;
   lb0 = iOp;
  } 

  for(int k=0; k<49; k++)
  {
   iOp = iOpen(Symbol(),P,k);
   iCl = iClose(Symbol(),P,k);
   if(iOp > iCl)
   {
    double hb = iOp;
    double lb = iCl;
   }
   else
   {
    hb = iCl;
    lb = iOp;
   } 
   double x = MathAbs(iCl - iOp);
   double y = iHigh(Symbol(),P,k) - hb;
   double z = lb - iLow(Symbol(),P,k);
   sumx+=x;
   sumy+=y;
   sumz+=z;
  }

  double bs=sumx/50;
  double us=sumy/50;
  double ls=sumz/50;

  double b0=bs-bs/8*7;
  double b1=bs-bs/4;
  double b2=bs+bs/4;
  double u0=us-us/8*7;
  double u1=us-us/4;
  double u2=us+us/4;
  double l0=ls-ls/8*7;
  double l1=ls-ls/4;
  double l2=ls+ls/4;

  iOp = iOpen(Symbol(),P, i);
  iCl = iClose(Symbol(),P,i);
  if(iOp < iCl) 
   a=64;
  else 
   a=0;
  if(hb0 == iCl)
  {
   if(MathAbs(iOp - iCl) < b0) 
    b = 0;
   if(
      MathAbs(iOp - iCl) < b1 
   && MathAbs(iOp - iCl) > b0
     ) 
    b = 16;
   if(
      MathAbs(iOp - iCl) > b1 
   && MathAbs(iOp - iCl) < b2
     ) 
    b = 32;
   if(MathAbs(iOp - iCl) > b2) 
    b =48;
  }
   
  if(hb0 == iOp)
  {
   if(MathAbs(iOp - iCl) < b0) 
    b = 48;
   if(
      MathAbs(iOp - iCl) < b1 
   && MathAbs(iOp - iCl) > b0
     ) 
    b = 32;
   if(
      MathAbs(iOp - iCl) > b1 
   && MathAbs(iOp - iCl) < b2
     ) 
    b = 16;
   if(MathAbs(iOp - iCl) > b2) 
    b =0;
  }

  if(iHigh(Symbol(),P,i) - hb0 < u0) c = 0;
  if(iHigh(Symbol(),P,i) - hb0 > u0 && iHigh(Symbol(),P,i) - hb0 < u1) c = 4;
  if(iHigh(Symbol(),P,i) - hb0 > u1 && iHigh(Symbol(),P,i) - hb0 < u2) c = 8;
  if(iHigh(Symbol(),P,i) - hb0 > u2) c = 12;

  if(lb0 - iLow(Symbol(),P,i) < l0) d = 3;
  if(lb0 - iLow(Symbol(),P,i) > l0 && lb0 - iLow(Symbol(),P,i) < l1) d = 2;
  if(lb0 - iLow(Symbol(),P,i) > l1 && lb0 - iLow(Symbol(),P,i) < l2) d = 1;
  if(lb0 - iLow(Symbol(),P,i) > l2) d = 0;

  return(a+b+c+d);
}
 

Конечно же произойдет запись в файл, но не статистики о которой я говорила.

За поправки спасибо!!!

 
liza:

Спасибо!

Не могу найти как в личку отправить.  


r i d e r f i n DOG b k POINT r u - без пробелов, с собачкой и точкой вместо dog/point :)...... а вообще, щелкаете по логину и получаете всю информацию

и.... "Прочитала интересную инфу (прикрепляю ее)....." - мне показалось что речь не о коде шла, или я не прав?