Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 382

 
Link_x:

Даже так не закрывает ордера, что то мне это не нравится.
Кажется, сплошь и рядом мои косяки, которые я отыскать не в состоянии, в следствии неопытности.

Так же, используем GetLastError(), изучаем в чем проблема.
 
Link_x:
Не могу усвоить.
Ладно, нашел уже альтернативный вариант. :)

Пусть МТС совершает сделки без SL и TP, но закрывает все, если потенциальная прибыль больше X.
Возможен ли вариант такого закрытия ордеров?
Действуя таким образом, придется вести учет ордеров?
Первый параметр функции OrderClose(.......) Должен быть тикет позиции (предворительно ее нужно найти с помощью OrderSelect() )
 
Разберитесь с переменной sl, то она у Вас целая, то дробная.
 
vadynik:

В функции дробная или так не должно быть?

C Новым годом! Бухай и не парься!!!!!!!!!!!!!!!!!! :-)
 
Link_x:

Даже так не закрывает ордера, что то мне это не нравится.
Кажется, сплошь и рядом мои косяки, которые я отыскать не в состоянии, в следствии неопытности.


гуру, ты куда... ?... :-))) обалдел что-ли...

там толпы молятся, не знают куда деться, а он стопы правильно расставить не может... :-)))

 
vadynik:

В функции дробная или так не должно быть?
void VirtualTral(int Dist_Tral,int Start_Tral,int Magic,int SL)

\\здесь у тебя SL - целая, не знаю, какое значение ты сюда посылаешь
{

double dist=Dist_Tral;
double start=Start_Tral;
double sl=SL;

//здесь уже дробная, но так как до этого была целая, значит....
 
if(OrdersTotal()<=0)
ObjectDelete("Stop"); 

int i, k=OrdersTotal();

  for (i=k-1; i>=0; i--) 
   {
          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {  

             if (Bid-NormalizeDouble(OrderOpenPrice(),Digits)>NormalizeDouble(start*Point,Digits))
      
          {                                                                                                                        
                    if((NormalizeDouble(Bid-sl*Point,Digits))>(NormalizeDouble(dist*Point,Digits)))//здесь sl подразумевается как отступ от цены, тогда dist должна быть ценой
                {         
                                                 
                          sl=NormalizeDouble(Bid-dist*Point,Digits); //а здесь sl - это уже цена, вполне определенная
                          //Print(+dist); 
                          //Print(+sl); 
                          ObjectCreate("Stop",OBJ_HLINE,0,D'2013.02.20 12:30',sl); // и здесь, это определенное значение цены
                                                                        
                          ObjectSet("Stop",OBJPROP_STYLE,1);                         
                          ObjectMove("Stop",0,D'2013.02.20 12:30',sl);            
   
 
vadynik:

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



Давай в цифрах

if((NormalizeDouble(Bid-sl*Point,Digits))>(NormalizeDouble(dist*Point,Digits)))

Допустим Бид - 1.3333, sl - 100, dist - 20, тогда

1.3333-100 * 0.0001=1.3233, что больше 20 * 0.0001 = 0.02 всегда

 
gyfto:

у меня ламерский вопрос по юзабилити. Чарт можно пролистать вправо-влево, а так же сжать-растянуть. А как его пролистать вверх-вниз?

Разобрался, при выставленном чарт можно перетаскивать мышкой и вверх-вниз.

 
Integer:
r772ra

Спасибо вам за помощь, уважаемые трейдеры - программисты. :)
 

люди подскажите пожалуйста, как в MQL4 считать проценты

к примеру x=10+3% как это записать програмно?

чтото в справочнике немагу найти.