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

 
Vinin:

Попробуйте использовать DoubleToStr


спасибо большое.

я так понимаю, что терминал считает точные значения, и только мне показывает "обрезанные", да? и чтобы видеть точные надо делать   DoubleToStr

 
lottamer:


спасибо большое.

я так понимаю, что терминал считает точные значения, и только мне показывает "обрезанные", да? и чтобы видеть точные надо делать   DoubleToStr


Да
 
помогите справится с частью кода (катострофически не хватает goto)
нужно проверить нет ли открытого или отложенного ордера по цене nnn если нет поставить ордер stoploss
 
sdm:
помогите справится с частью кода (катострофически не хватает goto)
нужно проверить нет ли открытого или отложенного ордера по цене nnn если нет поставить ордер stoploss

Ну и как Вам помог бы goto?

 

Через OrdersTotal() получаете количество открытых и отложенных ордеров.

Соответственно, если есть, то делаете перебор и сравниваете цену открытия каждого ордера с Вашей nnn.

Если нет ордеров, то выставляете свой.

 

Где тут не хватает goto? 

 
PapaYozh:

Ну и как Вам помог бы goto?

 

Через OrdersTotal() получаете количество открытых и отложенных ордеров.

Соответственно, если есть, то делаете перебор и сравниваете цену открытия каждого ордера с Вашей nnn.

Если нет ордеров, то выставляете свой.

 

Где тут не хватает goto? 


1 мне нужны не все ордера а только sell и sellstop                 // поправка

2  никак не пойму как организовать выход из цикла перебора на выставление ордера (всё время получается что выставляю не проходя весь перебор) или обратно в цикл 

 
sdm:


1 мне нужны не все ордера а только sell и sellstop 

2  никак не пойму как организовать выход из цикла перебора на покупку (всё время получается что выставляю не проходя весь перебор) или обратно в цикл 

 

1. Кто или что мешает Вам анализировать тип ордера?

2. Заведите переменную-флаг, проинициализируйте её, проверьте ордера и, при необходимости, поменяйте значение переменной-флага. После цикла, в зависимости от значения флага, выставляйте ордер.

 

Так понятно? 

 
PapaYozh:

 

Так понятно? 


понятно, спс
 
sdm:

попробовал щас с пунктуацией никак не разберусь :-)

 Print("Ордеров By ",Koob,", Ордеров Sell = ",Koos);

  oo=0;                                                                              // флаг наличия ордера

  if (Koos <= Koob)                                                             // если открытых!!! ордеров sell меньше или равно количеству открытых!!! ордеров by 

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

   {if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 

     {if (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)                      // тогда если есть открытый ордер или отложенный ордер sell

      { if (PraiceSs = OrderOpenPrice()) { oo=1; }                             //по PraiceSs eстановим на оо значение 

      }

     } 

   }

  if (oo=0) {OrderSend(Symbol(),OP_SELLSTOP,v,PraiceSs, ,Sl,Tp, ,mn,0,Green);}    //ставим sellstop

пишет что в строке " if ( PraiceSs= OrderOpenPrice()) { oo=1; }  "  - '=' - illegal assignment used

ps  PraiceSs -double, oo -int

 

Во-первых, операция сравнения на равенство "==".

Во-вторых, нельзя сравнивать переменные с типом double на равенство, надо сравновать на близость: MathAbs( PraiceSs - OrderOpenPrice() )  <= PriceDelta

 
PapaYozh:

 

Во-первых, операция сравнения на равенство "==".

Во-вторых, нельзя сравнивать переменные с типом double на равенство, надо сравнивать на близость: MathAbs( PraiceSs - OrderOpenPrice() )  <= 


а какую тогда задать PriceDelta ? рядом ближе 30 пипсов точно ордеров не может быть

и почему нельзя сравнивать?  

 
sdm:


а какую тогда задать PriceDelta ? рядом ближе 30 пипсов точно ордеров не может быть

и почему нельзя сравнивать?  

 

PriceDelta = Point * 30;

 

Сравнение вещественных чисел

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