Help

 
Веду в универе пары по электронной коммерции, в рамка оных - Форекс и все прилагающейся. Сам разобрался в MQL2, MQL4 тяжко. пытаюсь описать свечную модель "молот"
в MQL2 это выглядит так:
If (O[1]-L[1])/(C[1]-O[1])>=2& (H[1]-C[1])/(C[1]-O[1])<=0.2 then
{For i=2 To 80 Begin
if L[i]<=O[1] then exit
else
{if i=80 then SetText(time,L[1]+6*Point,"молот",red);
if i=80then Alert(Period,"min" ," / " ,Symbol, " Молот ", Hour, ":", Minute);
};
End;
помогите, откройте глаза как это же написать на MQL4
не хочится довать устаревшее
 
Веду в универе пары по электронной коммерции, в рамка оных - Форекс и все прилагающейся. Сам разобрался в MQL2, MQL4 тяжко. пытаюсь описать свечную модель "молот"
в MQL2 это выглядит так:
If (O[1]-L[1])/(C[1]-O[1])>=2& (H[1]-C[1])/(C[1]-O[1])<=0.2 then
{For i=2 To 80 Begin
if L[i]<=O[1] then exit
else
{if i=80 then SetText(time,L[1]+6*Point,"молот",red);
if i=80then Alert(Period,"min" ," / " ,Symbol, " Молот ", Hour, ":", Minute);
};
End;
помогите, откройте глаза как это же написать на MQL4
не хочится довать устаревшее

У меня это выглядит так:
if (MathMin(Close[1],Open[1])>((High[1]+Low[1])*0.5) && (Open[1]!=Close[1]))
      {
      if ((MathMin(Close[1],Open[1])-Low[1])>(MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1])*Tail) 
         && ((High[1]-MathMax(Close[1],Open[1]))<(MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1])))
         && (MathAbs(Open[1]-Close[1])*2>=MathMin(Open[1],Close[1])-Low[1]) 
         && ((Close[1]+ Open[1])*0.5 < iMA(NULL,0,Length,0,MODE_SMA,PRICE_CLOSE,2))
 
eks, поделитесь другими свечными моделяи. если не жалко ;-))
 
eks, поделитесь другими свечными моделяи. если не жалко ;-))

Какие интерсуют?
 
Молоты,доджи,Харами, звезды и большие свечи (аналог BigWhite(),BigBlack()). Спасибо заранее.
 
Молоты,доджи,Харами, звезды и большие свечи (аналог BigWhite(),BigBlack()). Спасибо заранее.

double Length=8;
double Tail=2;
double Tolernce=3;
// медвежьем поглощение
   AverageCur = iMA(NULL,0,Length,0,MODE_SMA,PRICE_CLOSE,1);
   AveragePre = iMA(NULL,0,Length,0,MODE_SMA,PRICE_CLOSE,2);
   if ((AverageCur > AveragePre) && (Close[1] < Open[1]) && (Close[2] > Open[2])
      && (Close[1] < Open[2]) && (Open[1] > Close[2])
 //Падающая звезда
   if ((MathMax(Close[1],Open[1])<(High[1]+Low[1])*0.5) && (Open[1]!=Close[1])) 
      {
      if (((High[1]-MathMax(Close[1],Open[1]))>(MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1]))*Tail)
      && (MathMin(Close[1],Open[1])-Low[1])<(MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1]))
      }
//Вечерняя звезда
   if ((Close[3] > Open[3])
      && (MathMin(Close[2],Open[2])>=Close[3]) 
      && (Close[1] < Open[1]) 
      && (High[3]<High[2])
      && (MathAbs(Open[3]-Close[3])>MathAbs(Open[2]-Close[2]))
      && (Close[1] < Close[3])
//Повешенный
   if ((MathMin(Close[1],Open[1])>(High[1]+Low[1])*0.5) && (Open[1]!=Close[1]))
      {
      if ((MathMin(Close[1],Open[1])-Low[1])>(MathMax(Close[1],Open[1])-(MathMin(Close[1],Open[1])*Tail)) 
         && (High[1]-MathMax(Close[1],Open[1]))< (MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1]))
         && (MathAbs(Open[1]-Close[1])*2>=(MathMin(Open[1],Close[1])-Low[1]))
         && ((Close[1]+ Open[1])*0.5 > iMA(NULL,0,Length,0, MODE_SMA,PRICE_CLOSE,2))
        }
//Завеса из темных облаков
   if ((Close[2]>Open[2]) 
      && ((Close[2]-Open[2]) > MathMax(High[2]-Open[2],Close[2]-Low[2]))) 
      {
      if ((MathAbs(Open[2]-Close[2])>MathAbs(Open[1]-Close[1]))
         && (Open[1]<=Low[2])
         && (Close[1] <= (High[2]+Low[2])*0.5)
      }
//Утренняя звезда
   if ((Close[3] < Open[3]) 
      && (MathMax(Close[2],Open[2]) <= Close[3]) 
      && (Close[1] > Open[1]) 
      && (Low[3]>Low[2])
      && (MathAbs(Open[3]-Close[3])>MathAbs(Open[2]-Close[2]))
      && (Close[1] > Close[3])
// быковатое поглощение
   if ((AverageCur < AveragePre) && (Close[1] > Open[1]) && (Close[2] < Open[2])
      && (Close[1] > Open[2]) && (Open[1] < Close[2])
//Молот
   if (MathMin(Close[1],Open[1])>((High[1]+Low[1])*0.5) && (Open[1]!=Close[1]))
      {
      if ((MathMin(Close[1],Open[1])-Low[1])>(MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1])*Tail) 
         && ((High[1]-MathMax(Close[1],Open[1]))<(MathMax(Close[1],Open[1])-MathMin(Close[1],Open[1])))
         && (MathAbs(Open[1]-Close[1])*2>=MathMin(Open[1],Close[1])-Low[1]) 
         && ((Close[1]+ Open[1])*0.5 < iMA(NULL,0,Length,0,MODE_SMA,PRICE_CLOSE,2))
      }
//Просвет в облаках
   if ((Close[2]<Open[2]) 
      && ((Open[2]-Close[2]) > MathMax(High[2]-Open[2],Close[2]-Low[2])))
      {
      if ((MathAbs(Open[2]-Close[2])>MathAbs(Open[1]-Close[1]))
         && (Open[1]<=Low[2])
         && (Close[1]>=(High[2]+Low[2])*0.5)
       }
//Дожи
if ((Open[1]==Close[1])||(MathAbs(Open[1]-Close[1])<=(High[1]-Low[1])*(Tolernce/100)))
 
Может и есть уже такое, но мне не попадалось...
---------------------------------------------------------------------------------------

Индикатор бы такой сделать, что-бы идентифицировал свечные фигуры
и выводил на графике информацию, типа:
--------------------------------------------------
| EURUSD,1H 1.3000 1.3010 1.3020 1.3030
| Свечная фигура : Харами
| Здесь (2-3 строки) описание предстоящей тенденции
| согласно идентифицированной свечной фигуры.
|
|

В книге Стива Нисона
"Японские свечи - графический анализ финансовых рынков"
Есть ещё варианты свечных фигур, желательно что-бы в таком индикаторе присутсвовали все.
--------------------------------------------------------------------------------------------------------------------

Вот такие мои размышления вслух... :)
 
Спасибо огромное Ekc, теперь дело пойдет )))



Индикатор бы такой сделать, что-бы идентифицировал свечные фигуры
и выводил на графике информацию, типа:
--------------------------------------------------


А замем индикатор? у мен я под MQL II в експерте были написаны основные модели и работало прилично: появлялась надпись на графике вмесет с алертом -причем точность описания модели меняется одним взмахом мышки )

Только глюки страшные шли - 8 подряд описаных РАБОТАЮЩИХ моделей молотов, повешенные и падающих звезд...работало только 3 (. запускаешь по отдельностиработают все
Могу даказать..
 
Госпада, что не верно в коде? Подскажите...

int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()
  {
if (Close[1]>Open[1])
   { 
   if ((Close[1]-Open[1])*2)<(Open[1]-Low[1]) && ((High[1]-Close[1])*5)<=(Close[1]-Open[1])
      {
      for (int i=2; i=80; i++)
         {
         if (Low[i] > Close[1]) break;
            {
            Alert("Close price coming ", Low[1]+5*Point,"!!!");
           }
         }
      }
   }

   return(0);
  }
 
for (int i=2; i=80; i++)


for (int i=2; i<=80; i++)
Причина обращения: