Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 35

 
oDin48:

По сути вопрос только в этом,  чтобы присвоить бару номер и номер записать в переменную, которую можно потом сравнить с текущим значением.

Не нужно. У каждого бара и так уже есть свой номер. Вам нужно только лишь знать на каком баре была закрыта позиция по стопу. Зачем переменные? А если советник перезапустится? Значение переменной будет утеряно. А так вы в любой момент времени сможете найти бар на котором была закрыта любая выбранная закрытая позиция.

Коли есть опыт программирования, то логику, которую я вам расписал, сможете понять и воплотить в коде.

 
artmedia70:

Вам нужно только лишь знать на каком баре была закрыта позиция по стопу.

Это не проблема, так как мне нужно чтобы первый и второй не открылись на одном баре. 

Я пишу что-то типа:

if ((Total==0)&&(Условие)) {Opn_B=true;} // пример

Второй ордер не откроется, но если первого не станет, он закроется по стопу, снова срабатывает условие и открывается второй бар, который мне как раз не нужен. Вот если на след баре сработал СЛ и выполняется условие то пожалуйста. 

 

Извиняюсь, если туплю.

НО я вижу это так.

1) При открытии ордера, номер бара, в котором он открыт, записываем в переменную.

2) Когда количество ордеров равно 0. Проверяем профит последней сделки (уже написанно).

3) При открытии следующего ордера по сигнулу, сверяем профитный был предыдущий или нет, если убыточный, сверяем номера текущего бара и по которому был открыт последний. Если они не совпадают открываем ордер. (нет проблемы написать)

 Вывод: мне просто нужна функция по которой я могу узнать номер бара, чтобы я мог присвоить это значение переменной из пункта 1, и сравнить с текущим значением (номером бара) в пункте 3.

 
oDin48:

Это не проблема, так как мне нужно чтобы первый и второй не открылись на одном баре. 

Я пишу что-то типа:

if ((Total==0)&&(Условие)) {Opn_B=true;} // пример

Второй ордер не откроется, но если первого не станет, он закроется по стопу, снова срабатывает условие и открывается второй бар, который мне как раз не нужен. Вот если на след баре сработал СЛ и выполняется условие то пожалуйста. 

 

Извиняюсь, если туплю.

НО я вижу это так.

1) При открытии ордера, номер бара, в котором он открыт, записываем в переменную.

2) Когда количество ордеров равно 0. Проверяем профит последней сделки (уже написанно).

3) При открытии следующего ордера по сигнулу, сверяем профитный был предыдущий или нет, если убыточный, сверяем номера текущего бара и по которому был открыт последний. Если они не совпадают открываем ордер. (нет проблемы написать)

 Вывод: мне просто нужна функция по которой я могу узнать номер бара, чтобы я мог присвоить это значение переменной из пункта 1, и сравнить с текущим значением (номером бара) в пункте 3.

Короче... сходите в ветку Игоря Кима - там найдёте себе примеров уйму. Мне пока некогда, извините...
 
artmedia70:
При проверке отклонения МАшки используйте дельту в 2 - 3 пункта


К каждой прибавлять пипсы? Можно ли програмно заложить эти два-три пункта?
 
oDin48:

Это не проблема, так как мне нужно чтобы первый и второй не открылись на одном баре. 

Я пишу что-то типа:

if ((Total==0)&&(Условие)) {Opn_B=true;} // пример

Второй ордер не откроется, но если первого не станет, он закроется по стопу, снова срабатывает условие и открывается второй бар, который мне как раз не нужен. Вот если на след баре сработал СЛ и выполняется условие то пожалуйста. 

 

Извиняюсь, если туплю.

НО я вижу это так.

1) При открытии ордера, номер бара, в котором он открыт, записываем в переменную.

2) Когда количество ордеров равно 0. Проверяем профит последней сделки (уже написанно).

3) При открытии следующего ордера по сигнулу, сверяем профитный был предыдущий или нет, если убыточный, сверяем номера текущего бара и по которому был открыт последний. Если они не совпадают открываем ордер. (нет проблемы написать)

 Вывод: мне просто нужна функция по которой я могу узнать номер бара, чтобы я мог присвоить это значение переменной из пункта 1, и сравнить с текущим значением (номером бара) в пункте 3.



Эта функция возвращает номер бара закрытия последней позиции

 

Вызываем

if(Total==0 && NumberOfBarCloseLastPos()!=0)
   {
   Opn_B=true;
   }
 

Спасибо огромное. А то я уже думал, что объясняю что-то не так, понимая что решение должно быть простым.

Вы очень помогли. 

 

Может мне кто нибудь сказать при на написании скриптов или советника, какое максимальное количество элементов можно впихнуть в массив?

 
Dikii:

Может мне кто нибудь сказать при на написании скриптов или советника, какое максимальное количество элементов можно впихнуть в массив?

Из соседней ветки........

 

 

ребята!

а как в OrderSend указать время истечения отложенного ордера "сегодня". 

 
smartemiy:

ребята!

а как в OrderSend указать время истечения отложенного ордера "сегодня". 

Вернее будет DeleteOrder в назначенное время. Редкий ДЦ выполняет это истечение, а удаление ордера выполняет по команде советника!
Причина обращения: