Нужна помощь Плиз.

 

Пишу советника с дальнейшим переносом стопов в безубыток и наращивании безубытка. Все вродде получается но вот только одна проблемка. Стоп перескакивает при движении цены то в безубыток то в +безубыток. Не могу устранить данную проблему.

Кто знает помогите плиз.

Вот код:

int poz=OrdersTotal();
for (n=0;n<poz;n++){
            if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES)==true){
            if (OrderType()==OP_BUY){
            Prise2=Bid-OrderOpenPrice();
            if(Prise2>(25*Point)){
            OrderModify(OrderTicket(),0,OrderOpenPrice(),OrderTakeProfit(),0,Blue);}
            if(Prise>Prise3){
            Prise3=(OrderOpenPrice()+(35*Point));
            SL2=OrderOpenPrice()+(10*Point);
            OrderModify(OrderTicket(),0,SL2,OrderTakeProfit(),0,Blue);}}

Буду очень благодарен.

 

С безубытком легко, замените

if(Prise2>(25*Point)){

на

if(Prise2>(25*Point)&&OrderStopLoss()!=OrderOpenPrice()){

а дальше Вы сильно намудрили с переменными, непонятно что к чему.

 
Roger:

С безубытком легко, замените

if(Prise2>(25*Point)){

на

if(Prise2>(25*Point)&&OrderStopLoss()!=OrderOpenPrice()){

а дальше Вы сильно намудрили с переменными, непонятно что к чему.



Дальше хочу сделать так.

Например цена открытия 1,3950. Тек. цена дошла до 1,3975 стоп перебросило на цену открытия. Потом цена дошла к 1,3985 стоп перешел на 1,3960. Чтобы всегда разница между текущей ценой и стопом была 25 пп. У меня оно так получается. Но вот только стоп и вниз скачет. Как его зафиксить я еще не догнал.

Например Цена была на 1,3985 стоп на 1,3960 и при снижении цены на несколько пп. стоп не переносился.

 
int poz=OrdersTotal();
for (n=0;n<poz;n++){
            if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES)==true){
            if (OrderType()==OP_BUY){
            Prise2=Bid-OrderOpenPrice();
            if(Prise2>25*Point&&OrderStopLoss()<OrderOpenPrice()){
            OrderModify(OrderTicket(),0,OrderOpenPrice(),OrderTakeProfit(),0,Blue);}
            if(Prise2>35*Point&&Bid-OrderStopLoss()>25*Point){            
            SL2=NormalizeDouble(Bid-25*Point,Digits);
            OrderModify(OrderTicket(),0,SL2,OrderTakeProfit(),0,Blue);}}
 
Roger:



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

Всем привет.

Ребят нужна помощь. на данный момент цена 1.4100 (к примеру) мне нужно найти предидущий бар у которого open будет в пределах (плюс минус 10пт от 1.4100) от 1.4090 до 1.4110 - это подходит.

Но чтобы левый и правый от него open был меньше. например программа нашла бар с опеном 1.4105- он нам подходит.

Далее программа должна этот бар сравнить с левым от него баром и правым от него баром, и если они меньше, то сказать этот бар подходит.

 
for (int i=1;i<100;i++) if(Open[i]>Bid-10*Point&&Open[i]<Bid+10*Point && Open[i+1]<Open[i]&&Open[i-1]<Open[i]) break;  
      
      
На выходе будет номер бара с Вашими условиями.
 
А как мне этот бар занести в переменную
 
тоесть мне нужно выташить опен этого бара в переменную
 
На выходе будет переменная i с номером бара
 

как мне это прописать?

for (int i=1;i<100;i++)

if(Open[i]>Bid-10*Point&&Open[i]<Bid+10*Point && Open[i+1]<Open[i]&&Open[i-1]<Open[i])

{переменная = i;} // или как

break;

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