Добрый день скажите пожайлусто можно ли в индекатор добавить координаты мышке если можно на пишите мне на почту кто может это сделать ereminmikola@yandex.ru
Здравствуйте программисты. Не могли бы вы подсказать как правильно подступится к следующему условию:
1. Советник открывает 2 рыночных ордера ( buy и sell) одинаковым лотом, указанным в настройках. - Пункт выполняется без замечаний
На следующем возникла проблема, цена может двигаться как и в сторону SELL так и в сторону BUY. Каким образом можно организовать код, чтобы при прохождении n кол-во пунктов, советник сканировать в LIVE прибыльность этих двух сделок и закрыл именно тот ордер у которого после прохождения n кол-ва пунктов оказался отрицательный баланс? Если у вас есть другие идеи как сделать это красиво, подскажите пожалуйста.
Предоставляю код - draft, выполняется только первый пункт, открываются 2 сделки с TP и SL
2. При прохождении цены заданное в настройках количество пунктов закрывается ордер с минусовым балансом и открываются еще 2 ордера ( buy и sell) одинаковым лотом,
указанным в настройках и у всех ордеров выставляются стопы на цене открытия первого ордера, то есть, при развороте тренда все 3 ордера должны закрыться одновременно.
externint _ms = 1000;
externdouble _lots = 0.01;
externdouble _TP = 80;
externdouble _SL = 35;
int _mn;
double pt;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
pt = Point;
if (Digits==3||Digits==5) {pt*=10;} else pt = Point;
_mn = MagicNumberGenerator(_ms);
Print("The magic number is ",_mn);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
if (IsNewCandle())
{
if (TotalOpenOrders(_mn)==0)
{
EnterTrade(OP_BUY);
EnterTrade(OP_SELL);
}
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Открытие первых позиций |//+------------------------------------------------------------------+void EnterTrade(int type)
{
double price = 0; double sl = 0; double tp = 0; double lot = _lots;
if (type == OP_BUY) price = Ask;
elseif (type == OP_SELL) price = Bid;
int err = 0;
int ticket = OrderSend(_Symbol, type, lot, price, 30, 0, 0, NULL, _mn, 0, clrGreen);
if (ticket == -1)
{
err = GetLastError();
Print("Could not place the order due to error ",err," ",ErrorDescription(err));
if (err == ERR_TRADE_NOT_ALLOWED) Alert("You need to enable you autotrade button");
}
else
{
if(!OrderSelect(ticket,SELECT_BY_TICKET))
{
err = GetLastError();
Print("Could not select the order due to error ",err," ",ErrorDescription(err));
}
else
{
if (OrderType()==OP_SELL)
{
sl = OrderOpenPrice()+(_SL*pt);
if (_SL==0) sl = 0;
tp = OrderOpenPrice()-(_TP*pt);
}
elseif (OrderType()==OP_BUY)
{
sl = OrderOpenPrice()-(_SL*pt);
if (_SL==0) sl = 0;
tp = OrderOpenPrice()+(_TP*pt);
}
if(!OrderModify(ticket, OrderOpenPrice(), sl, tp, 0, clrNONE))
err = GetLastError();
Print("Could not modify the order due to error ",err," ",ErrorDescription(err));
}
}
}
Задача - найти бар с минимальным закрытием
for(int x=0; x<=xBars -1; x++)
{
counter++;
// Print(Close[x],",,,",counter);
int h = ArrayMinimum(Close[x]);
if(counter > 20) break;
}
Компилятор ругается на Close
Запишите цены закрытия в отдельный массив, а потом вне цыкла АррауМинимум
Задача - найти бар с минимальным закрытием
есть функции iHighest и iLowest (теперь и в МТ5)
есть функции iHighest и iLowest (теперь и в МТ5)
Задача - найти бар с минимальным закрытием
for(int x=0; x<=xBars -1; x++)
{
counter++;
// Print(Close[x],",,,",counter);
int h = ArrayMinimum(Close[x]);
if(counter > 20) break;
}
Компилятор ругается на Close
Задача поиска минимальной/максимальной цены в MQL4 решается одной строкой:
можно, но это будет не совсем таймер
Спасибо.
Как рассчитывать объём лота с шагом? Если депозит =1000, лот =0.1, депозит стал 2000 лот = 0.2. То есть, при депо 1500 или 1700, лот не увеличивается.
Спасибо.
Как рассчитывать объём лота с шагом? Если депозит =1000, лот =0.1, депозит стал 2000 лот = 0.2. То есть, при депо 1500 или 1700, лот не увеличивается.
Как-то так...
Как-то так...
Не-ет, при депо 1100, лот будет 0.11, а мне нужно чтобы до 2000 лот не увеличивался. В настройках как задам шаг =1000?
Здравствуйте программисты. Не могли бы вы подсказать как правильно подступится к следующему условию:
1. Советник открывает 2 рыночных ордера ( buy и sell) одинаковым лотом, указанным в настройках. - Пункт выполняется без замечаний
На следующем возникла проблема, цена может двигаться как и в сторону SELL так и в сторону BUY. Каким образом можно организовать код, чтобы при прохождении n кол-во пунктов, советник сканировать в LIVE прибыльность этих двух сделок и закрыл именно тот ордер у которого после прохождения n кол-ва пунктов оказался отрицательный баланс? Если у вас есть другие идеи как сделать это красиво, подскажите пожалуйста.
Предоставляю код - draft, выполняется только первый пункт, открываются 2 сделки с TP и SL
2. При прохождении цены заданное в настройках количество пунктов закрывается ордер с минусовым балансом и открываются еще 2 ордера ( buy и sell) одинаковым лотом,
указанным в настройках и у всех ордеров выставляются стопы на цене открытия первого ордера, то есть, при развороте тренда все 3 ордера должны закрыться одновременно.