Ох, простите. Перепутал сравнение и присвоение. Всё нормально стало. Совсем дурной становлюсь, как прогать сажусь. Плохо пишу и стресс от этого получаю, и голова не работает совсем, хотя про это знал конечно.
ФункцияbCheckOrders()после открытия ордера выдает что ордеров нет, поэтому продолжаются открытия - по void OnTick() -я понимаю, что это не так.
пока ордер не закроется bCheckOrders()- не может выдать что ордерв нет. разве не так?
bCheckOrders() не корректно работает!
Я тебе уже писал функцию подсчета ордеров...
Сделай так и все должно работать
Вместо bCheckOrders() поставь эту функцию
//+------------------------------------------------------------------+//| Подсчет открытых ордеров |//+------------------------------------------------------------------+int CountOrders()
{
int cnt=0;
int i=OrdersTotal()-1;
for(int pos=i;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==_Symbol)
{
if(OrderMagicNumber()==Magic) cnt++;
}
}
}
return(cnt);
}
а в OnTick() вместо bCheckOrders() пропиши так
//+------------------------------------------------------------------+voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL("lab_Take",1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2),AC));
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
сделал. абсолютно не отличается от предыдущего журнала.
нет ошибок, или чего либо еще.
А тут для цикла не нужны скобки? Вроде только когда не больше одной строки можно не ставить их.
UPD:
А понял, тут и есть одна строка.
ошибок не должно быть, покажи журнал
вот последние страницы журнала из МТ4.
этот журнал нужен?
вот последние страницы журнала из МТ4.
этот журнал нужен?
Вот и ответ в твоем журнале)
Функция bCheckOrders() после открытия ордера выдает что ордеров нет, поэтому продолжаются открытия
и голова не работает совсем, хотя про это знал конечно.
Прикольно мысли излагаешь)))
Прикольно мысли излагаешь)))
В смысле, знал как писать присвоение и сравнение, но всё равно перепутал. Помутилось.
Я не об этом...
pribludilsa #:
и голова не работает совсем, хотя про это знал конечно.
Вот и ответ в твоем журнале)
Функция bCheckOrders() после открытия ордера выдает что ордеров нет, поэтому продолжаются открытия
да блин. где это указано?
может я не так читаю журнал этот?
Функция bCheckOrders() после открытия ордера выдает что ордеров нет, поэтому продолжаются открытия - по void OnTick() -я понимаю, что это не так.
пока ордер не закроется bCheckOrders()- не может выдать что ордерв нет. разве не так?
да блин. где это указано?
может я не так читаю журнал этот?
Функция bCheckOrders() после открытия ордера выдает что ордеров нет, поэтому продолжаются открытия - по void OnTick() -я понимаю, что это не так.
пока ордер не закроется bCheckOrders()- не может выдать что ордерв нет. разве не так?
bCheckOrders() не корректно работает!
Я тебе уже писал функцию подсчета ордеров...
Сделай так и все должно работать
Вместо bCheckOrders() поставь эту функцию
а в OnTick() вместо bCheckOrders() пропиши так