//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
string qwert = "баянул сов";
if(g_type == OP_SELL) // Если есть противоположная позиция,..
if(!CloseDeal(g_ticket)) // Закроем её
return(false);
if(g_type == OP_BUY) // Если есть баевый ордер,..
return(true);
// Ничего не делаем
return(SendOrder(Symbol(),g_type,lot,priceForBuy,0,0,qwert,magic));
}
//+-------------------------------------------------------------------------------------+
//| Посыл ордера |
//+-------------------------------------------------------------------------------------+
int SendOrder(int symbol, int g_type, double lot, double price, double SL,double TP, string qwert, int magic)
{
RefreshRates();
//Print("g_type = ", g_type);
//Print("lot = ", lot);
//Print("GetPriceToInput() = ", GetPriceToInput());
//Print("SL = ", SL);
//Print("TP = ", TP);
int ticket = OrderSend(Symbol(),g_type,lot,GetPriceToInput(),NULL,0,0," ",magic,86400,Green);
return(ticket);
}
//+-------------------------------------------------------------------------------------+
//| Получение цены установки отложенного ордера |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()
{
double firstBarClosed = iClose(Symbol(),1440,2); // Цена закрытия предпоследнего дня
double secondBarClosed = iClose(Symbol(),1440,1); // Цена закрытия последнего дня
if(firstBarClosed > secondBarClosed) // Если закрытие вчерашнего дня ниже закрытия предыдущего..
{ //.. (линия по ценам закрытий направлена вниз), то..
double deltaForSell = (firstBarClosed - secondBarClosed)/2; // Находим дельту изменения цены до 12 часов текущего дня
double priceForSell = secondBarClosed - deltaForSell; // Вычисляем цену продажи
return(NormalizeDouble(priceForSell,Digits));
}
if(firstBarClosed < secondBarClosed) // Если закрытие предыдущего днях ниже закрытия вчерашнего..
{ //..(линия по ценам закрытий направлена вверх), то..
double deltaForBuy = (secondBarClosed - firstBarClosed)/2; // Находим дельту изменения цены до 12 часов текущего дня
double priceForBuy = secondBarClosed + deltaForBuy; // Вычисляем цену покупки
return(NormalizeDouble(priceForBuy,Digits));
}
}