DomovenokBrest
♔♕♖♗♘♙
Как прописать: если Low на предыдущих 4 свечах убывающие, то функция true???![]()
if (Low<Low[i+1] && Low[i+1]<Low[i+2] && Low[i+2]<Low[i+3])
{
Ваша функция
}
else
{
Что то еще
}
Как то так
Как прописать: если Low на предыдущих 4 свечах убывающие, то функция true???![]()
Почему не так?Влад, ты спецом издеваешься???
Мы же всегда перебираем с самого нового...
int Ob=ObjectsTotal()-1;
for(int i=Ob; i>=0; i--)
for(int i=ObjectsTotal()-1; i>=0; i--)
При создании объектов перед именем пишешьВсем привет!
Вопрос на засыпку: нужно зачистить график от объектов при выгрузке сова. Имена объектов генерируются в процессе работы, но есть определенные комбинации символов, по которым их можно вычислить и удалить. Вроде все просто, но каждый раз в тестере что-нибудь оставляет не выдавая каких-то сообщений в журнале. Может я опять что-то туплю (13 часов просидел за написанием кода и уткнулся в примитив). Вот примерный образец:
Или это тестер у меня глючит...:nda:PHP:int Ob=ObjectsTotal(); for(int i=0; i<Ob; i++) { if(StringFind(ObjectName(i),"VTRMB",0)>=0) ObjectDelete(ObjectName(i)); if(StringFind(ObjectName(i),"VTRMS",0)>=0) ObjectDelete(ObjectName(i)); if(StringFind(ObjectName(i),"VTRPB",0)>=0) ObjectDelete(ObjectName(i)); if(StringFind(ObjectName(i),"VTRPS",0)>=0) ObjectDelete(ObjectName(i)); }
Та же фигня с глобальными (терминала) переменными...
identif+
string identif="gdfgeyebn3e";
ObjectsDeleteAll(0,identif);
здравствуйте. Подскажите пожалуйста, что нужно подправить, чтобы в советнике ставились несколько горизонтальных линий по сигналам индикатора(например стрелочного)? У меня ставится только одна линия.
"BS"+string(Time[i])
Как прописать: если Low на предыдущих 4 свечах убывающие, то функция true???![]()
bool ok_low=true;
for(int i=1;i<5;i++)
{
if(Low[i]>Low[i+1])
{
ok_low=false;
break;
}
}
if(ok_low)...
Меняй брокера на ecn/stpЗдравствуйте, подскажите как бороться с такой бедой:
2018.02.28 06:01:37.603 '60058065': order buy 0.01 AUDCHF opening at market sl: 0.00000 tp: 0.00000 failed [Off quotes]
2018.02.28 06:01:37.229 '60058065': order buy 0.01 AUDCAD opening at market sl: 0.00000 tp: 0.00000 failed [Off quotes]
2018.02.28 06:01:36.425 '60058065': order buy 0.01 AUDNZD opening at market sl: 0.00000 tp: 0.00000 failed [Off quotes]
Торгует советник.
вот так Посмотреть вложение time 1 open.mq4приветствую.
Подскажите как реализовать в коде:
Открытие в четко указанное время (настраиваемое) всего 1 одной сделки в день
и открыть ее нужно если текущая цена в это время выше цены свечи другого времени предыдущего дня (настраиваемое)
допустим цена выше - бай, ниже - селл
нужна всего одна сделка в день на определенной свече открытия сразу. Открытие если цена выше или ниже другой предыдущего дня
А какая в этом нужда? Если у тебя свободная маржа 15, а для расчетного лота нужно 20, то, по идее, если открыть 2 разнонаправленных ордера одинаковой лотности, в сумме будет задействовано маржи всего 10 (я примерно считаю без нюансов брокера). Только вот ордера открываются последовательно и для первого ордера нужно будет 20 свободной маржи и он не откроется, как и для второго то же самое. Это только после открытия обоих ордеров они в сумме будут занимать 10. Может, если добавить расчет лота противоположного ордера для взаимокомпенсации текущих ордеров по марже, которого будет достаточно для открытия нужного нам ордера. Но все равно нужно будет сначала открывать этот компенсирующий ордер.к сожалению она не учитывает возможность открытия противоположной позиции при недостатке свободных средств
как исправить, подскажите, плиз
Подходит.уважаемые знатоки,
подскажите как корректно перейти от данных типа iHigh и iLow к уже непосредственно ТП и СЛ в фyкции Ordersend. То есть, в начале мы имеем переменные double с цифрами 4 знака после запятой, потом проводим с ними математические манипуляции, округляем опять к 4-ьох знаку, в опцию price функции Ordersend такое число подходит, а вот для СЛ и ТП нет.
В этом примере если up и down в пунктах о цены открытия, а не дробная цена.В сети нашел такой вариант для захода в бай:
double TP=Ask+up*Point;
double SL=Ask-down*Point;
up и down величины из первой группы, то есть double 4-ьох знак.
При компилировании выдаётся предупреждение ! (return value of "OrderSelect" should be checket) на строке OrderSelect Как это исправить?
total = CountTrades();
if (total == 0) flag = FALSE;
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
LongTrade = TRUE;
ShortTrade = FALSE;
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL) {
LongTrade = false;
ShortTrade = TRUE;
break;
}
}
}
}
Это один из вариантов. Сообщение говорит о том, что выполнение функции OrderSelect желательно проверить (не обязательно). Функция if и запускает OrderSelect и проверяет, как она отработала и если OrderSelect вернула код true (ордер выбран), то выполняются все следующие команды (их нет смысла выполнять, если по какой-то причине ордер не был выбран функцией OrderSelect). Можно тупо так:Ах вон оно чё !!! Благодарю Вас vladradon !!!