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

 

Спасибо. Издержки писанины кода налету мимо метаэдитора прям в форум) В принципе достаточно заменить "||" на "&&" (наверно изначально хотел проверять на неравенство с последующим continue) и все будет работать, а в тестере и так будет работать. Хотя конечно правильнее будет имеено ваш вариант.

 

Ну это нюансы. Я все равно стараюсь переписать под себя осмысливая. Мне например выбор по меджику вообще не нужен (в этой функции). Также заметил что выбор в функции Figar0 был из списка history. Тут же главное идею понять. Мне кстати нужны ордера из пула, так что все оказалось гораздо проще.

Спасибо за идеи и помощь, люди.

PS: А обьясните пожалуйста про

OrderType()>1
Несколько раз встречал что OrderType сравнивают как int. В чем тут фишка? Я думал это переменная string.
 
Pyro:

Ну это нюансы. Я все равно стараюсь переписать под себя осмысливая. Мне например выбор по меджику вообще не нужен (в этой функции). Также заметил что выбор в функции Figar0 был из списка history. Тут же главное идею понять. Мне кстати нужны ордера из пула, так что все оказалось гораздо проще.

Спасибо за идеи и помощь, люди.

PS: А обьясните пожалуйста про

Несколько раз встречал что OrderType сравнивают как int. В чем тут фишка? Я думал это переменная string.

Это соответствие констант и их значений.

OP_BUY соответствует 0

OP_SELL соответствует 1

__________________________________________________________________________________________________________-

Тип операций для функции OrderSend(). Mожет быть любым из следующих величин:

Константа Значение Описание
OP_BUY 0 Покупка
OP_SELL 1 Продажа
OP_BUYLIMIT 2 Отложенный ордер BUY LIMIT
OP_SELLLIMIT 3 Отложенный ордер SELL LIMIT
OP_BUYSTOP 4 Отложенный ордер BUY STOP
OP_SELLSTOP 5 Отложенный ордер SELL STOP
 
Pyro:

Мне кстати нужны ордера из пула, так что все оказалось гораздо проще.

При выборе ордера по индексу используются два списка - открытые и закрытые. Это и задаётся указанием в каком списке их смотреть (параметр pool).

Посему, если нужно выбрать из списка открытых, то указание этого параметра можно опустить (он задан по-умолчанию). Если необходимо выбрать из списка закрытых ордеров, но необходимо указать в качестве параметра pool MODE_HISTORY.

Соответственно, если хотите найти последний открытый, то цикл делается по открытым ордерам терминала и проверять нужно и время открытия ордера OrderOpenTime(), если нужен последний закрытый (как в примерах выше), то цикл нужен по закрытым ордерам терминала и проверять нужно OrderCloseTime() для выявления времени закрытия выбранного ордера.

И, для справки, если выбор делаете по тикету, то параметр pool вообще игнорируется и ордер ищется в обоих списках. После того, как он будет найден, необходимо проверить его время закрытия для выявления списка, из которого он был выбран. Если время закрытия больше ноля - то ордер закрыт и выбран из списка закрытых ордеров. У открытого ордера время его закрытия всегда равно нулю. Значит, если оно равно нулю - ордер был выбран из списка открытых ордеров.

Также, если вы ищете отложенный ордер по его тикету, то он может оказаться в обоих списках. Это произойдёт если он преобразуется в рыночный. Поэтому нужно будет проверить ещё и тип выбранного ордера. И если отложенный закрыт, а рыночный с тем же тикетом не закрыт - значит отложенный ордер преобразовался в рыночный.

 
Figar0:

Спасибо. Издержки писанины кода налету мимо метаэдитора прям в форум) В принципе достаточно заменить "||" на "&&" (наверно изначально хотел проверять на неравенство с последующим continue) и все будет работать, а в тестере и так будет работать. Хотя конечно правильнее будет имеено ваш вариант.

Сам порою делаю глупые ошибки при постировании кода сразу сюда... Потом, как ошпаренный, правлю код, пока его не прочли в непотребном виде... :)))
 
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2

extern int period=24;
double Buf_0[],Buf_1[];

//+------------------------------------------------------------------+
int init()
  {
//---- 
   SetIndexBuffer(0,Buf_0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(1,Buf_1);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
//----
   return;
  }
//+------------------------------------------------------------------+
int start()
  {
   int  i,counted_bars,maxValueIdx,minValueIdx; 
//----

   counted_bars=IndicatorCounted();
   i=Bars-counted_bars-1;
   
   while(i>=0)
   {
   maxValueIdx=ArrayMaximum(Close,(period-1),0); 
   minValueIdx=ArrayMinimum(Close,(period-1),0);
   Buf_0[i]=Close[maxValueIdx];
   Buf_1[i]=Close[minValueIdx];
   i--;
   }
   
   
//----
   return;
  }
//+------------------------------------------------------------------+
Здравствуйте. Хотел написать индикатор который считает MAX и MIN цены закрытия за определённый период. Вроде всё делаю по учебнику,но старые данные вообще не рисует,показывает две горизонтальные линии с актуальными MAX и MIN. Подскажите, что я делаю не так?
 
borisis:
Здравствуйте. Хотел написать индикатор который считает MAX и MIN цены закрытия за определённый период. Вроде всё делаю по учебнику,но старые данные вообще не рисует,показывает две горизонтальные линии с актуальными MAX и MIN. Подскажите, что я делаю не так?


maxValueIdx=ArrayMaximum(Close,(period-1), i);

minValueIdx= ArrayMinimum(Close,(period-1), i);

А то вы все время находите одни и те же индексы на каждом шаге

 

привет всем! Как узнать программно к какому типу относится переменная : int OR double?

и второй что значит ошибка "invalid double number as parameter 1 for DoubleToStr function" ? нправильный параметр №1 в функции??? в гуле пока не нашел

 
todem:

привет всем! Как узнать программно к какому типу относится переменная : int OR double?

Любопытно, зачем? Можете описать ситуацию, в которой это понадобится?
 
Перенесено.

Valdemar 01.04.2011 16:31
Приветствую всех мастеров программирования! Натолкните на правильную мысль,если вас не затруднит: Вот я,допустим решил по завершению определённого часа торговли,выставлять стоп-ордера,отталкиваясь от границ максимума и минимума этого часа на несколько пунктов,какие мне здесь стоит употребить,написать функции программирования!?
Причина обращения: