[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 449

 
artmedia70:

1. Находите ближайший к нулевому бару фрактал, запоминаете его время и ценовой уровень в переменных int и double

2. С каждым тиком ищете ближайший к нулевому бару фрактал. Если его время не равно времени фрактала, найденного в п.1, то ...

2.1. Проверяете его ценовой уровень.

2.1.1 Если он ниже уровня фрактала в п1, то ... одно действие

2.1.2 Если он выше уровня фрактала в п1, то ... другое действие

2.2 Записываете время этого фрактала и его уровень в переменные из п.1 (int и double)

3. Возвращаемся к п.2


А разве в моем коде не так?
 
DOCTORS:

А разве в моем коде не так?
не так
 
artmedia70:
не так


Я согласен, что это не условие фрактала, но по факту остального?

1. Я по счетчкику определяю что это первый фрактал (z=0), присваиваю переменной экстремум условия (фрактала) (f1= iLow(Null,0,3)).

2. В другом случае (когда z=1, следовательно это не первый "фрактал", мы сравнием с предыдущим (f1 > iLow(NULL,0,3) ))

2.1 Если значение предыдущего больше я присваю новое значение для переменной (f1= iLow(NULL,0,3) и обнуляю счетчик (z=0)

2.1. В случае когда предыдущее значение меньше нового (f1 < iLow(NULL,0,3) ) я закрываю сделку.

Разве не так?

 
DOCTORS:


Я согласен, что это не условие фрактала, но по факту остального?

1. Я по счетчкику определяю что это первый фрактал (z=0), присваиваю переменной экстремум условия (фрактала) (f1= iLow(Null,0,3)).

2. В другом случае (когда z=1, следовательно это не первый "фрактал", мы сравнием с предыдущим (f1 > iLow(NULL,0,3) ))

2.1 Если значение предыдущего больше я присваю новое значение для переменной (f1= iLow(NULL,0,3) и обнуляю счетчик (z=0)

2.1. В случае когда предыдущее значение меньше нового (f1 < iLow(NULL,0,3) ) я закрываю сделку.

Разве не так?

А где сравнение по времени первого и второго фракталов ?
 
artmedia70:
А где сравнение по времени первого и второго фракталов ?


А зачем? Можно конечно, но ведь нахождение "фрактала" в моем случае опрделяется условием (low-ми 5 баров)? А не по времени...

Опять же счетчик "z" является тем самым блокиратором, чтобы определение "фрактала" в моем случае не зациклилось на одном.

 

Профи, помогите, плиз. Хочу чтоб открывалась локирующая позиция при достижении уровня stoploss и чтоб она сохранялась если цена продолжает двигаться в неблагоприятную сторону. Проблема в том, что открывается куча ордеров, вместо одного.

Вот условие:

if (OrderType == OP_SELL && LRMA > OrderOpenPrice() + StopLoss*Point) 
 {
  OrderSend(NULL, OP_BUY, Lot, Ask, 2, 0, 0, 0, 111, 0, Green);
 }

Счетчик почему-то не срабатывает. Все перепробовал уж.

 
Здравствуйте, вопрос такой перед открытием ордера я делаю проверку истории на наличие убыточной позы (функция от Кима isLossLastPos) ну почему то она не всегда срабатывает вовремя, то есть ордер сначала откроется а потом через несколько тиков срабатывает функция но ордер уже открыт, как это исправить?
 
chuvee:

Профи, помогите, плиз. Хочу чтоб открывалась локирующая позиция при достижении уровня stoploss и чтоб она сохранялась если цена продолжает двигаться в неблагоприятную сторону. Проблема в том, что открывается куча ордеров, вместо одного.

Вот условие:

Счетчик почему-то не срабатывает. Все перепробовал уж.

Сделайте проверку перед открытием лока: если нет локирующей позиции, то открыть её.
 
T-G:
Здравствуйте, вопрос такой перед открытием ордера я делаю проверку истории на наличие убыточной позы (функция от Кима isLossLastPos) ну почему то она не всегда срабатывает вовремя, то есть ордер сначала откроется а потом через несколько тиков срабатывает функция но ордер уже открыт, как это исправить?

Функция проверяет последнюю закрытую позицию, а не любую в истории. Если последняя закрытая позиция убыточна, то ф-ция вернёт true, иначе - false

Вот и проверяйте, если нужно открыть позицию в том случае, если последняя закрылась с убытком:

   if (isLossLastPos(Symbol(), OP_BUY, Magic)) {
      // Код открытия позиции, если последняя закрытая позиция Buy с магиком Magic убыточна
      }

или

   if (!isLossLastPos(Symbol(), OP_SELL, Magic)) {
      // Код открытия позиции, если последняя закрытая позиция Sell с магиком Magic закрыта с прибылью или в ноль
      }

Как-то так ... если память не изменяет

 
artmedia70:

Функция проверяет последнюю закрытую позицию, а не любую в истории. Если последняя закрытая позиция убыточна, то ф-ция вернёт true, иначе - false

Вот и проверяйте, если нужно открыть позицию в том случае, если последняя закрылась с убытком:

или

Как-то так ... если память не изменяет

да последнюю, но суть вопросы была в том что предыдущий ордер закрылся с минусом функция это не успевает показать, сначала открывается ордер проходит пару тиков и только тогда функция показывает что последний убыток но ордер уже открылся. как это преодолеть?

просто при сильном движении на одной свечке может открыться и 8 ордеров

Причина обращения: