Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Условия входа через И, или ИЛИ?
Условия входа через И
Только нужно внимательно прочитать в начале поста саму задачу. Надеюсь, что я там внятно написал..
Ищите ошибку. Включайте условия по-одному, проверяйте их.
Проверял, я же написал, что условия работают...
На сколько я понял, когда тестировал и проверял переменные, а так же массивы, всё работает.. Сама проблема в цикле.. for ..
можно и в одну строчку:
Проверял, я же написал, что условия работают...
На сколько я понял, когда тестировал и проверял переменные, а так же массивы, всё работает.. Сама проблема в цикле.. for ..
если пишется
ShouldCheckCondition[1]=INPUT_1;
ShouldCheckCondition[2]=INPUT_2;
то есть не заполняется ShouldCheckCondition[0]
значит цикл вести логично от 1.
ещё раз по буквам:
- перед циклом ставим флаг doTrade=true;
- пробегаем циклом массив ShouldCheckCondition, если в его элементе значение true, то проверяем нужное условие. Если условие выполненно, то продолжаем проверки. Если не выполненно, ставим doTrade=false и прерываем цикл
- по выходу и цикла смотрим - если doTrade==true , значит все требуемые условия выполненны (никто не сбросил его в false) и делаем какие-то действия (торгуем например)
можно "развернуть цикл" методом CopyPaste и обойтись без массива и его инициализаций:
bool doTrade=true;
doTrade=doTrade && ((! INPUT_1) || проверка_уловия_1);
doTrade=doTrade && ((! INPUT_2) || проверка_уловия_2);
doTrade=doTrade && ((! INPUT_3) || проверка_уловия_3);
if (doTrade) {
/// торгуем
}
если пишется
ShouldCheckCondition[1]=INPUT_1;
ShouldCheckCondition[2]=INPUT_2;
то есть не заполняется ShouldCheckCondition[0]
Спасибо за терпение!
Максим в моей интерпретации вашего кода, я сделал всё в одной функции, у вас было несколько, всё вроде работает нормально(сейчас тестирую):
Единственное но, что условия выполняются как ИЛИ, а нужно как И...
Другими словами, если было выбрано для открытия ордера Условие1 то и открывается ордер по нему, но если были выбраны для открытия ордера Условие1 и Условие2, то на данный момент вход осуществляется ИЛИ по Условию1 ИЛИ по Условию2, а нужно И по Условию1 И по Условию2 одновременно!
Или в моей интерпретации ошибка?
Спасибо за терпение!
Максим в моей интерпретации вашего кода, я сделал всё в одной функции, у вас было несколько, всё вроде работает нормально(сейчас тестирую):
Единственное но, что условия выполняются как ИЛИ, а нужно как И...
Или в моей интерпретации ошибка?
я там не вижу собственно проверок условий :-) а только проверка флагов
как-то так например:
я там не вижу собственно проверок условий :-) а только проверка флагов
как-то так например:
Давайте проще....
Имеется ввиду следующее:
И вот в таком варианте кода, если будут выбраны оба условия для фильтрации входа
то вход осуществляется ИЛИ по VHOD_PO_MA_14 ИЛИ по VHOD_PO_MA_34, а нужно ,что бы открытие ордеров осуществлялось И по VHOD_PO_MA_14 И по VHOD_PO_MA_34 (Другими словами если в BUY то ордер открывается только если Ask больше iMA(NULL,0,14,.. И Ask больше iMA(NULL,0,34.. !)
Не забываем для чего всё этого нужно, потому что
extern bool VHOD_PO_MA_14 = FALSE;
extern bool VHOD_PO_MA_44 = FALSEextern bool VHOD_PO_MA_34 = FALSE;
extern bool VHOD_PO_MA_54 = FALSE;
extern bool VHOD_PO_MA_.. .. .......
Может быть миллион!
Может попробовать набор флагов использовать?
Давайте проще....
Имеется ввиду следующее:
И вот в таком варианте кода, вход осуществляется ИЛИ по VHOD_PO_MA_14 ИЛИ по VHOD_PO_MA_34, а нужно если будут выбраны оба условия для фильтрации входа
, то открытие ордеров осуществлялось И по VHOD_PO_MA_14 И по VHOD_PO_MA_34 (Другими словами если в BUY то ордер открывается только если Ask больше iMA(NULL,0,14,.. И Ask больше iMA(NULL,0,34.. !)
НАУЧИТЕСЬ ФОРМУЛИРОВАТЬ ЗАДАЧИ - это львиная половина решения
у вас в исходном посте совершенно иная формулировка задачи, а именно "имеем в INPUT 100500 флагов, означающих надо или не надо проверять некоторые условия, надо написать компактный, сопровождаемый код для этого".
то есть в исходной формулировке - массив ShouldCheck в OnInit заполняется флагами из Input. В ран-тайм (в OnTick, а не в start()) следуя этим флагам осуществляются конкретный проверки.
Про ЭТО вам все и отвечали
НАУЧИТЕСЬ ФОРМУЛИРОВАТЬ ЗАДАЧИ
Согласен, что не корректно объяснил задачу,я не силён в программировании, поэтому сразу тяжело сформулировать...
Надеюсь, что сейчас более понятно о объяснил...
НУЖНА ПОМОЩЬ!