[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 673

 
artmedia70:
Т.е. мне нужно в init() советника добавить вызов функции вывода информации в окно индикатора?


ну попробуй в init() написать

int init()
{
Alert("Чёт не могу твоего окошечка найти, пошел я отсюдова, хотя я был вызван в секции init()");
return(0);
}
 

 
IgorM:


ну попробуй в init() написать

int init()
{
Alert("Чёт не могу твоего окошечка найти, пошел я отсюдова, хотя я был вызван в секции init()");
return(0);
}

:) Плагиатом промышляешь? :)
 

Помогите разобраться с проблемой ! Ели у меня сделка была убыточна то нужно изменит лот, ели нет то нет. Я делаю так ......

//====================================================
// Расчет размера позиции
//====================================================
double CalculateLots(){
   double Res=dLots;
   bool bProfit=true;
   int PrevTime=-1;
   double tmpLots;
   for (int i=0;i<OrdersHistoryTotal();i++){
      if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
      if (OrderSymbol()!=Symbol())                    continue;
      if (OrderMagicNumber()!=MAGIC)                  continue;
      if (OrderCloseTime()<PrevTime)                  continue;
      PrevTime=OrderCloseTime();
      if (OrderProfit()>0) bProfit=true; else bProfit=false;
      tmpLots=OrderLots();
   }
   double Lots_Step=MarketInfo(Symbol(), MODE_LOTSTEP);
   if (!bProfit) Res=tmpLots+Lots_Step;
   return(Res);
}

Помогите ! Дело в том что при изменении лота у меня уже есть выставление отложные ордера (с другими лотами). Мне нужно удалить эти ордера и изменить в них количество лотов (на новые), а параметры остаются те самые !


 


Уважаемые программисты,
ответьте пожалуйста на следующий вопрос:

Подскажите почему в массив не правильно заносятся данные из строки?

extern string Sessions_begin="15:31;14:11";
extern string Sessions_end="22:32;18:12"; 

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,
            // второй время[][1]-первый элемень время(часы), [][2]-минуты.

//
str_len_begin=StringLen(Sessions_begin)

Print("Длина str_len_begin="+str_len_begin);
  for (n=1,i=0; i<=str_len_begin; i+=6,n++)
  {
   mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i,2));
   mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
   mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i,2));
   mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
  Print("n= "+n);
  Print("i= "+i);

  Print("Начало сессии "+n+" в(вывод через Print) "+StringSubstr(Sessions_begin,i,2)+":"+StringSubstr(Sessions_begin,i+3,2)); 
  Print("Конец сессии "+n+" в (вывод через Print) "+StringSubstr(Sessions_end,i,2)+":"+StringSubstr(Sessions_end,i+3,2));
  Print("Начало сессии "+n+" в(вывод через Массив) "+mas_time_begin[n][1]+":"+mas_time_begin[n][2]);
  Print("Конец сессии "+n+" в(вывод через Массив) "+mas_time_end[n][1]+":"+mas_time_end[n][2]);
  }

вот что получается сечас:

http://savepic.ru/1410881.gif
 

 

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

Благодарю откликнувшихся.

 
Hedin:


Уважаемые программисты,
ответьте пожалуйста на следующий вопрос:

Подскажите почему в массив не правильно заносятся данные из строки?

вот что получается сечас:

http://savepic.ru/1410881.gif
 

Не правильно задан размер массива во втором измерении:

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,

Элементы массивов начинаются с 0, а вы в этих записях

mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
хотите записать данные в 3 ячейку (0, 1, 2), хотя второе измерение заданно с двумя (можно использовать только индексы 0, 1).

Решение проблемы: либо увеличьте массив во втором измерении

int mas_time_begin[10][3], mas_time_end[10][3];  //первый - № сессии,

либо перепишите индексы при записи значений

mas_time_begin[n][0]=StrToInteger(StringSubstr(Sessions_begin,i,2));
mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][0]=StrToInteger(StringSubstr(Sessions_end,i,2));
mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
 
rosomah:

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

Благодарю откликнувшихся.

Смотря как советник определяет «совой - чужой», если по magic-номеру то с уже выставленными отложенными ордерами нечего не сделать, так как этот параметр нельзя изменить для уже установленного ордера.
Если он хранит тикеты, допустим в глобальных переменных, то это уже проще, тикеты уже имеющихся можно "дописать в базу". Так что это для вас на данном этапе это главный вопрос. Как он определяет?
 
ToLik_SRGV:

Смотря как советник определяет «совой - чужой», если по magic-номеру то с уже выставленными отложенными ордерами нечего не сделать, так как этот параметр нельзя изменить для уже установленного ордера.

Во-во, а если сетка разных отложек, с дырами, которые образовались т.к. некоторые отложки сработали, некоторые перемещены и т.д. Их же нужно "новым" советником распознать, перенумеровать и заполнить имеющиеся места. Можно конечно вручную, но... ради чего тогда МТС. Для одного ордера можно взять хотя бы у Н.Моржова:

int poisk;

if(poisk==0)

{ int k;

for(k=0; k<OrderTotal();k++)

{ if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==false)break;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic)cjntinue

ticket_buy1=OrderTicket();

poisk=1; }}

а вот как со сворой ордеров расправиться?

 
Кто знает, когда планируется выход учебника по mql5?
 
Abzasc:
Кто знает, когда планируется выход учебника по mql5?

https://www.mql5.com/ru/forum/491
Причина обращения: