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

 
artmedia70:
Вы когда выводите значения буферов на экран, чем это делаете? Всё-равно же выводятся числовые данные. Вот если вы захотите выводить пустую строку, либо надпись "Пустое значение" или "EMPTY_VALUE", то и выводите их как стринговые переменные.
Т.е. :
string val;
if (значение буфера==EMPTY_VALUE) {val="EMPTY_VALUE";}
Если же if (значение буфера!=EMPTY_VALUE) {val=DoubleToString(значение буфера, 8);}
и выводите на экран не значение буфера, а значение переменной val.
S[16]="SBUY="+ DoubleToStr(adxbuy,Digits)+", SSELL="+ DoubleToStr(adxsell,Digits)+", buydiv="+ DoubleToStr(lastbuydiv,Digits)+", selldiv="+ DoubleToStr(lastselldiv,Digits);
      
вот как я вывожу их
 

Вот этот хвост отвечает за вывод этих данных:

", buydiv="+ DoubleToStr(lastbuydiv,Digits)+", selldiv="+ DoubleToStr(lastselldiv,Digits);

Сначала так:

string ValBuyDiv, ValSellDiv;
if (lastbuydiv=EMPTY_VALUE) ValBuyDiv="Пустое значение";
else ValBuyDiv=DoubleToStr(lastbuydiv,Digits);
if (lastselldiv=EMPTY_VALUE) ValSellDiv="Пустое значение";
else ValSellDiv=DoubleToStr(lastselldiv,Digits);

а далее замените хвостик:

S[16]="SBUY="+ DoubleToStr(adxbuy,Digits)+", SSELL="+ DoubleToStr(adxsell,Digits)+", buydiv="+ ValBuyDiv+", selldiv="+ ValSellDiv;
 
bliznec1986:
А есть ли у кого сборщик тиков который сохраняет тиковую историю таким образом : время прихода тика, аск, бид? в кодбазе сборщик без аска есть только.
Есть такой. Выкладывать не буду. Использовал секретные технологии против пропусков тиков :-)) В том числе без DDE.
 

To artmedia70 и granit77.

Вам, господа, строгий выговор. Что, нельзя было популярно объяснить? ))))

Два дня угрохал на решение простенькой задачки....

Вот что получилось:

int SignalDiver(int tf)
 {
   for (int i=0; i<5; i++) {
      double UPdiver = iCustom(NULL,tf,"FX5_Divergence",2,i);
      double DNdiver = iCustom(NULL,tf,"FX5_Divergence",3,i);
      if (UPdiver!=EMPTY_VALUE)return(1);
      if (DNdiver!=EMPTY_VALUE)return(-1);
    }
  return(0);
 }

Теперь работает.

Спасибо.

Теперь можно с девочками на остров....)))

 
Sergey_Rogozin:

To artmedia70 и granit77.

Вам, господа, строгий выговор. Что, нельзя было популярно объяснить? ))))

Два дня угрохал на решение простенькой задачки....

Вот что получилось:

Теперь работает.

Спасибо.

Теперь можно с девочками на остров....)))

Только теперь уже на троих! :)))))))))
 
artmedia70:
Только теперь уже на троих! :)))))))))
Вылет из Шереметьево завтра 09:10.
Для вас полный салон согласных девочек.
Пиво и сауна уже на месте, коньяки и виски - в салоне.
Самолет с командой в полном вашем распоряжении до полуночи воскресения.
Счастливо отдохнуть. )))
 
Sergey_Rogozin:
Вылет из Шереметьево завтра 09:10.
Для вас полный салон согласных девочек.
Пиво и сауна уже на месте, коньяки и виски - в салоне.
Самолет с командой в полном вашем распоряжении до полуночи воскресения.
Счастливо отдохнуть. )))
О! Вот это слова не ребёнка, но мужа!!! Выезжаем-с... :))))))))))))))
 
Привет, пожалуйста помогите реализовать выставление виртуальных стоплосов в заданных пунктах, буду по точнее: советник должен вместо отправки данных о новом SL просто хранить их в переменных (или гденидь еще), и тралить, тралить, тралить а когда цена дойдет до определенного уровня (цены) посылать сигнал в ДЦ о закытии ордера, (этакой виртуальный трейлинг стоп с виртуальным стоплосом) реальноли это?
 
Sergey_Rogozin:
Вылет из Шереметьево завтра 09:10.
Для вас полный салон согласных девочек.
Пиво и сауна уже на месте, коньяки и виски - в салоне.
Самолет с командой в полном вашем распоряжении до полуночи воскресения.
Счастливо отдохнуть. )))

Красиво живете!

 

Всем добрый день!

Что-то не могу до конца разобраться с закрытием ордеров...

Ордер успешно открывается, но не закрывается. В программе предусмотрен открытие, только одного ордера. У кого есть минутка и желание, посмотрите код пожалуйста...

int send_orders(bool signal, int position_limit, string file_name){


int ticket_count = OrdersTotal();


if (ticket_count < position_limit){

Print("send_orders ticket_count = ", ticket_count);

if (signal == true){

Print("send_orders, signal BUY");

   order_id = OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,Green);
   if(order_id < 0)
     {
      error=GetLastError();
      Print("send_orders, error = ",ErrorDescription(error));
      return;
     }
}if (signal == false){

Print("send_orders, signal SELL");

   order_id = OrderSend(Symbol(),OP_SELL,1.0,Bid,3,0,0,"expert comment",255,0,Red);
   if(order_id < 0)
     {
      error=GetLastError();
      Print("send_orders, error = ",ErrorDescription(error));
      return;
     }
     }

}if (ticket_count == position_limit){

OrderSelect(0,SELECT_BY_POS);

order_type = OrderType();

order_id = OrderTicket();

//----

Print("send_orders,  order already open");

if ((signal == false) && order_type == OP_BUY){

Print("send_orders,  is closing position");

if(OrderSelect(0, SELECT_BY_POS)==true){

OrderClose(OrderTicket(),1,Ask,3,Red);

}

}if ((signal == true ) && order_type == OP_SELL){

Print("send_orders,  is closing position");

if(OrderSelect(order_id, SELECT_BY_POS)==true){

OrderClose(OrderTicket(),1,Bid,3,Red);

}
}
}
}

Заранее спасибо!

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