[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 13

 
alsu:
Из проприетарных наверное MS VisualStudio, есть еще бесплатные, CodeBlocks, например, весьма неплох.
Спасибо, наверно начну с VISUAL C++ 2010 EXPRESS и CodeBlocks.
 
rustein:

Решил начать изучать C,C++,C#, кто подскажет хороший компилятор и редактор.

Спасибо.


ЕЩЁ ЗАБЫЛИ

PERL

 
freeDRIVER:


ЕЩЁ ЗАБЫЛИ

PERL

Спасибо, прочитал, интересный проект.
 

К сожалению ничего из выше предложенного не помогло.

Вопрос https://www.mql5.com/ru/forum/138609/page9#edit_form все еще актуален.

Помогите плиз!

 

Нужен индикатор который показывает самый маленький бар или свечу,за определённый срок.Например, на 4Н графике будет показывать самую маленькую свечу или бар за 5 дней.

Дни или часы,чтобы выставлялись в настройках индикатора.А отмечал эту свечу стрелкой как в индикаторе Fractals.Ну вот собственно и всё.Кто поможет буду очень признателен.

Или что-то наподобие.
 
Fox_RM:

К сожалению ничего из выше предложенного не помогло.

Вопрос https://www.mql5.com/ru/forum/138609/page9#edit_form все еще актуален.

Помогите плиз!

Приведите еще раз код с проделанными изменениями
 
Fox_RM:

К сожалению ничего из выше предложенного не помогло.

Вопрос https://www.mql5.com/ru/forum/138609/page9#edit_form все еще актуален.

Помогите плиз!

Вам уже насоветовали "воз и маленькую тележку". Во-первых, не корректно для вопроса опять подсовывать в посте первоначальный код (без подсказанных Вам замечаний, точнее исправлений). Во-вторых, нужно самому выработать алгоритм поиска ошибок. Никто ничего лучшего (в рамках MQL4), как принтование промежуточных результатов - не придумал. Логические ошибки могут быть в первую очередь видны Автору, так как ТОЛЬКО ему ведома логика того кода, который он наваял... ;)))
 

Последняя версия:

//+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link      "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20]; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i=0,limit,k=0,old_sell=0,old_bay=0;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам
for (i=0;i<count;i++)           //--- вроде так
{  
    price = Close[i]/Point;    
    delta = price-old_price;
          
    if(!time_Bar)time_Bar=Time[0];
    col_bar = iBarShift(NULL,0,time_Bar)-iBarShift(NULL,0,Time[i]);
    if (col_bar >= 1)
    
    {time_Bar=Time[i];sum_pip_bay=0;
    sum_pip_sell=0;sum_pip=0;
    old_bay=0;old_sell=0;sum_tick=0;
    count_plus=0;count_minus=0;}
     
     //---- Расчет UP
    if(delta>=0)
    {if(delta>100)delta=1;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
    if(delta<0)
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+MathAbs(sum_pip_sell);
     
      //---
  
        if (MA1[i]>=0){TP_UP[i]=MA1[i];}else{TP_UPMin[i]=MA1[i];}
        if (MA2[i]<=0){TP_DN[i]=MA2[i];}else{TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if(NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs(sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask
   }    
   }                
   return(0);
}

//---- Функции
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<20;i++)                         //--- тут привел в соответствие
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}
 
Fox_RM:

Последняя версия:

double a=1,c,step=1/20;

1) переменная step равна нулю. Или вбейте 0.05 или делите как 1./20

2) после этого сделки начинает пытаться открывать, но

OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20)

вместо 50 и 20 должны стоять уровни (_абсолютные_) стоплосса и тейкпрофита


P.S. Смотрел только принципиальные моменты неоткрывания. Естественно много что надо оптимизировать и добавлять.

 
Fox_RM:

Последняя версия:

А вот этот "мазахизм" к чему:

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам

Почему не взять и честно заявить, что:

count = 20;

И не мучать эти массивы MA1[] и MA2[], объявив их размерность сразу:

double MA1[20],MA2[20];

А с этим:

 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask

Вам нужно вообще вернуться к истокам... знаний. Вы в торговый приказ передаёте размер СТОПОв в пипсах, а нужно передавать УРОВНИ!!! И для работы on-line требуется значения УРОВНЕЙ (цена, SL и TP) НОРМАЛИЗОВАТЬ!!!

 if (Sredn(TP_UP)>=1.5)
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble (Bid,Digits),2,NormalizeDouble (Ask+50*Point, Digits),NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)
OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),2,NormalizeDouble(Bid-50*Point,Digits),NormalizeDouble(Bid+20*Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

И ещё: приучите себя с самого начала как "по-взрослому" - присваивать своим ордерам МАГИК!!! В будущем ПРИГОДИТСЯ!!!

Причина обращения: