Полезные функции от KimIV - страница 120

 

Добрый день.

Переделал функцию GetProfitOpenPosInCurrency() для возвращение самой убыточной позиций. Подскажите, пожалосто, какие функции подойдут для возвращение время открытия этой позиций (OrderOpenTime())?

double GetMaxLoseOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) 
            if(p > OrderProfit() + OrderSwap() + OrderCommission()){
            p=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
 
abeiks:

Добрый день.

Переделал функцию GetProfitOpenPosInCurrency() для возвращение самой убыточной позиций. Подскажите, пожалосто, какие функции подойдут для возвращение время открытия этой позиций (OrderOpenTime())?


Возвращайте номер тикета и можно будет обойтись стандартными функциями
 
Vinin:

Возвращайте номер тикета и можно будет обойтись стандартными функциями

Спасибо.
 

KimIV,здравствуйте.Ищу-не могу найти скрипт ---удалить все отложенные ордера по символу---и трал по символу,может есть --выложите........не сочтите за наглость.Зарание спасибо.

 

Добрый день.

Использую функцию isTradeTimeInt()от KimIV. Буду использовать много временых интервалов и для каждого интервала будет присвоены разные переменные. Для этого я сделал такой код (пока 2 интервала). Вопрос такой, это ли самое правильное решение или как то по другому надо подойти к задаче?

extern int OH1=9;extern int OM1=0;extern int CH1=12;extern int CM1=0;
extern int OH2=13;extern int OM2=0;extern int CH2=15;extern int CM2=0;

int HourOpenTime()
{
int trade = 0;
if(isTradeTimeInt(OH1,OM1,CH1,CM1))trade = 1;
if(isTradeTimeInt(OH2,OM2,CH2,CM2))trade = 2;
return (trade);
}
 
bestseich:

Уважаемый Игорь Ким, помогите написать функцию типа OrderCloseBy(), но чёб работала по разным парам и по OrderProfit(), и не важно разнонаправленные ордера, иль нет, типа один OrderProfit() > другого, другой пары, на сколько то Point и оба, именно, только эти два, закрываются одновременно. Мой вариант вот такой:

for (int i=OrdersTotal()-1;i>=0;i--)

{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()!=Symbol()||OrderSymbol()==Symbol())
{
if(OrderProfit()>=pr*Point)//pr-это в параметрах, пункты прибыли
int ot=OrderTicket();double op=OrderProfit();
if(OrderProfit()<=pru*(-1)*Point)//pru-это в параметрах, пункты убытка
int otu=OrderTicket();double opu=OrderProfit();
if(op>opu*v*(-1)&&(OrderType()==OP_BUY||OrderType()==OP_SELL))
//v-это типа соотношение прибыли к убытку, типа 1,5
OrderClose(otu,OrderLots(),Bid,sleep,Blue);
OrderClose(ot,OrderLots(),Bid,sleep,Blue);
OrderClose(otu,OrderLots(),Ask,sleep,Blue);
OrderClose(ot,OrderLots(),Ask,sleep,Blue);

}}}

будет ли работать? Поправьте иль предложите своё решение, если не в лом.

 

Уважаемый Игорь!

Подскажите, есть ли у Вас функция расчета объема лота в зависимости от баланса счета после закрытия последнего ордера и перед открытием следующего .

Заранее благодарен.

 
vasabu2012:

Уважаемый Игорь!

Подскажите, есть ли у Вас функция расчета объема лота в зависимости от баланса счета после закрытия последнего ордера и перед открытием следующего .

Заранее благодарен.

Вот функция Игоря.

Файлы:
b-lots.mqh  3 kb
 

В обновлении перестала в условиях работать функция PriceOpenLastPos, чуть моск не сломал, в комментах значения выдаёт а в условиях не работает, проблему решила небольшая правка.

double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0, r2=0;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}

r2 = DoubleToStr(r, 4);

return(r2);
}


 
Помогите пожалуйста заново скомпилировать Советник e-CloseByEquity.rar с учетом изменений программирования в MetaEditor
Причина обращения: