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

 
Trader7777:

в рынке может быть только один ордер. На данный момент эта функция вообще не работает.. почему-то. Но если она будет нормально работать, я так понимаю, что она будет срабатывать постоянно, пока профит больше установленного кол-ва пунктов. Ясное дело надо, чтобы она только один раз закрыла половину позиции и все. Но для начала хоть бы она вообще заработала)
Насчёт один раз закрыть - на предыдущей странице написал
 
evillive:

Библиотекой оформить как вариант.

Благодарю за идею.
 
Trader7777:

в рынке может быть только один ордер. На данный момент эта функция вообще не работает.. почему-то. Но если она будет нормально работать, я так понимаю, что она будет срабатывать постоянно, пока профит больше установленного кол-ва пунктов. Ясное дело надо, чтобы она только один раз закрыла половину позиции и все. Но для начала хоть бы она вообще заработала)


В глубине души я с Вами согласен.Что ордер должен быть только один. А дальше, частично закрываем, когда? через сколько секунд или по другим каким-то условиям? Иначе в какой-то момент всё закроется, и только слюни останется отплёвывать)))))

Ваша функция должна работать, по крайней мере в тестере. Другой вопрос когда её вызвать....

 
Sepulca:


В глубине души я с Вами согласен.Что ордер должен быть только один. А дальше, частично закрываем, когда? через сколько секунд или по другим каким-то условиям? Иначе в какой-то момент всё закроется, и только слюни останется отплёвывать)))))

Ваша функция должна работать, по крайней мере в тестере. Другой вопрос когда её вызвать....


extern int TP         = 200; // кол-во пунктов, после которых должно произойти частичное закрытие
extern int Magic      = 77;


void CloseHalfOrder(){ // функция вызывается в самом начале цикла Start

for (int i = 0; i<=OrdersTotal(); i++)
  {
    if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
            if (OrderProfit() >= TP*Point)
              {
                 if (OrderType() == OP_BUY) 
                 double Lots = OrderLots(); 
                 double HalfLot  = NormalizeDouble (Lots*0.5,2);
                 OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
          
                 if (OrderType() == OP_SELL)
                 double Lots1 = OrderLots(); 
                 double HalfLot1  = NormalizeDouble (Lots*0.5,2);
                 OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
               }
          }
        }
      }
    }
не работает. почему?
 
Trader7777:




if (OrderProfit() >= TP*Point)

Что это???

if(Bid-OrderOpenPrice()>= TP*Point)//для покупок

if(OrderOpenPrice()-Bid>= TP*Point)//для продаж
Как-то так
 
Trader7777:


не работает. почему?

Вот по этому:

if (OrderProfit() >= TP*Point)
Вам нужны пункты? А вы деньги смотрите.
 
r772ra:

Что это???

Как-то так

Ask для продаж
 
artmedia70:
Ask для продаж


Да верно, спред учитываем.
 
artmedia70:

Вот по этому:

Вам нужны пункты? А вы деньги смотрите.


r772ra:

Что это???

Как-то так

спасибо!! занимаюсь программирование ровно вторую неделю) невнимательность новичка
 
Подскажите плиз такую вещь. На выходных Альпари увеличивает спред до размера, при котором советник всегда сливает. ОК. В тестере можно выставлять спред вручную. Но в каких единицах? 100, 50, 30, 10 - это что? Проценты, пункты, что? Благодарю заранее.