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

 
ЗЫ. Скажу как кодер пишущий в основном на заказ : Пара десятков "лишних" строк кода (когда ты понимаешь что ты там написал, и уверен в нем), не бывает лишней, хотя бы с точки зрения надежности всей системы в целом, и соответственно меньшем количестве возвратов и проблем в общении с заказчиком.
 
FAQ:
ЗЫ. Скажу как кодер пишущий в основном на заказ : Пара десятков "лишних" строк кода (когда ты понимаешь что ты там написал, и уверен в нем), не бывает лишней, хотя бы с точки зрения надежности всей системы в целом, и соответственно меньшем количестве возвратов и проблем в общении с заказчиком.

Понятно. Благодарю. Уже внес правки.

Но, все таки для меня было интересно, что получается открываться можно и "корявым" объемом... правда не совсем так, как надо, НО - сам факт...

 
sergeev:

FAQ верно говорит. Нельзя надеяться на "умолчания". Так как помню что вылазила часто 131 ошибка (неверный лот), если не делать нормализацию перед отправкой ордера.
Может сейчас МК уже и сделали на серверах свою проверку лота по умолчанию при отправке ордера на исполнение.

Поэтому всегда сами выполняйте нормализацию цен и лотов перед отправкой.

Это для вас же - правила хорошего кодинга и залог меньшего геморроя с потенциальными проблемами в будущем.

Понятно, благодарю.

" Так как помню что вылазила часто 131 ошибка (неверный лот), если не делать нормализацию перед отправкой ордера." - щас этого нет.

Случайно сам в этом убедился, когда "забыл" включить ф-ию нормализации лота.

 
Roman.:

Понятно. Благодарю. Уже внес правки.

Но, все таки для меня было интересно, что получается открываться можно и "корявым" объемом... правда не совсем так, как надо, НО - сам факт...


До введения пятизнака, никто темой нормализации вообще не задавался - все работало и так.
 
Доброго всем дня!
Вопрос следующий, при первом запуске индикатора он отображается
абра-кадаброй (рис.1). После дальнейшей прокрутки на истории все нормально (рис.2).

Подскажите в чем ошибка? Ниже если нужно код.

#property indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Tomato
#property  indicator_color2  Red
#property  indicator_color3  Blue
#property indicator_level1 0
#property indicator_levelcolor Gray
#property indicator_levelstyle 2

extern int Period_MA = 5;
extern int MA_Line1 = 13;
extern int MA_Line2 = 34;
 
double Brs[],BrsMA1[],BrsMA2[],MathArr[],MathArr1;
int i=0,j=0;
double hvostUp,hvostDn,rast,S;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,Brs);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(1,BrsMA1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(2,BrsMA2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexLabel(0,"Bars_");
   SetIndexLabel(1,"Bars_MA1");
   SetIndexLabel(2,"Bars_MA2");
     
   ArrayResize(MathArr,Period_MA);
   
 //---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Bars_MA");

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit(){return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start() {  

int ncount=IndicatorCounted();
int limit=Bars-ncount-1;

for (int i=0; i<limit; i++)
{

if (High[i+2]>High[i+1] && Low[i+2]>Low[i+1])
{
hvostUp=(High[i+2]-High[i+1])/Point;
hvostDn=(Low[i+2]-Low[i+1])/Point;
rast=(High[i+2]-Low[i+1])/Point;
S=rast-hvostUp-hvostDn;
}

if (High[i+2]<High[i+1] && Low[i+2]<Low[i+1])
{
hvostUp=(MathAbs(High[i+2]-High[i+1]))/Point;
hvostDn=(MathAbs(Low[i+2]-Low[i+1]))/Point;
rast=(High[i+1]-Low[i+2])/Point;
S=rast-hvostUp-hvostDn;
}

if (High[i+2]>=High[i+1] && Low[i+2]<=Low[i+1])
{
S=(High[i+1]-Low[i+1])/Point;
rast=(High[i+2]-Low[i+2])/Point;
}

if (High[i+2]<=High[i+1] && Low[i+2]>=Low[i+1])
{
S=(High[i+2]-Low[i+2])/Point;
rast=(High[i+1]-Low[i+1])/Point;
}

if (High[i+2]<=Low[i+1] || Low[i+2]>=High[i+1])
{
S=0;
rast=1;
}

if(j>=Period_MA-1)j=0;
j++;
 MathArr[j]=(S/rast*100);
 
Brs[i]=iMAOnArray(MathArr,0,Period_MA,0,0,0);
BrsMA1[i]=iMAOnArray(Brs,0,MA_Line1,0,0,0);
BrsMA2[i]=iMAOnArray(Brs,0,MA_Line2,0,0,0);
}   
  return(0);
}

рис.1

рис.2

Файлы:
bars_ma_1.mq4  4 kb
 
а можно на определенной цене задать задачу для открытия стоп и лимит ордеров. например ордера закрылись по тейк профиту на уровне без убытка и в это время мне нужно поставить стоп и лимит ордера по заранее заданной цене. было бы приятно автоматизировать такой процесс, то есть делать эту работу за ранее, а не ждать пока сработают профиты. пролистал все выложенные здесь скрипты нашел похожий, но пишут что не работает. live-limit-ctrlA.mq4 вот он для наглядности. или допустим сделать такую функцию, при срабатывании ТР или СЛ - скрипт открывает все только что закрытые ордера, только в отложенной форме. по заранее выбранным параметрам. а- то иногда рынок бывает слишком резким и то что хотел сделать не всегда успеваешь, это было-бы очень кстати, если есть у кого скиньте пожалуйста. и неплохо бы модификатор по похожей схеме. думаю после создания такого скрипта будут пользоваться почти все трейдеры. многие трейдеры знают заранее что будут делать в той или иной ситуации, очень удобно проделать эту работу до того как эта ситуация произошла.
 
sting-igor:
а можно на определенной цене задать задачу для открытия стоп и лимит ордеров. например ордера закрылись по тейк профиту на уровне без убытка и в это время мне нужно поставить стоп и лимит ордера по заранее заданной цене. было бы приятно автоматизировать такой процесс, то есть делать эту работу за ранее, а не ждать пока сработают профиты. пролистал все выложенные здесь скрипты нашел похожий, но пишут что не работает. live-limit-ctrlA.mq4 вот он для наглядности. или допустим сделать такую функцию, при срабатывании ТР или СЛ - скрипт открывает все только что закрытые ордера, только в отложенной форме. по заранее выбранным параметрам. а- то иногда рынок бывает слишком резким и то что хотел сделать не всегда успеваешь, это было-бы очень кстати, если есть у кого скиньте пожалуйста. и неплохо бы модификатор по похожей схеме. думаю после создания такого скрипта будут пользоваться почти все трейдеры. многие трейдеры знают заранее что будут делать в той или иной ситуации, очень удобно проделать эту работу до того как эта ситуация произошла.

Вам сюда : Работа
 
Fox_RM:
Доброго всем дня!
Вопрос следующий, при первом запуске индикатора он отображается
абра-кадаброй (рис.1). После дальнейшей прокрутки на истории все нормально (рис.2).

Подскажите в чем ошибка? Ниже если нужно код.

рис.1

рис.2


Прощаю что вопрос был задан второй раз.

Сравните свой вариант с этим

Хотя все равно не корректно работает, но уже лучше

Отредактировал индикатор еще раз

Файлы:
 
FAQ:

Вам сюда : Работа
не ужели нет не у каво?
 
sting-igor:
не ужели нет не у каво?


Копайте Code Base

если не найдете, тогда заказывайте.