Подскажите пожалуйста. Советник торгует на основе сигналов индикаторов на каждом баре. А как сделать чтобы условия проверялись на каждом тике. Вот условия в индикаторе :
int limit, i; int counted_bars=IndicatorCounted(); // Сколько баров уже было посчитано if (counted_bars<0) return(-1); // Проверка возможной ошибки if (counted_bars>0) counted_bars--; // Пересчитываем последний посчитанный бар limit=Bars-counted_bars; // Начинаем с последнего посчитанного бара // - 1 - ============================ Окончание блока ===================================
// - 3 - ======================= Выдача сигналов ======================================== //if (LastBar != Time[0]) // Один раз за один бар //{ в этом дело все?
Подскажите, какое добавить условие перед OrderSend чтобы ордер не исполнялся, если предыдущая открытая позиция находится в минусе? Чтобы не было усреднения.
Подскажите, какое добавить условие перед OrderSend чтобы ордер не исполнялся, если предыдущая открытая позиция находится в минусе? Чтобы не было усреднения.
Добрый вечер! Не могли бы вы подсказать, каким образом работает советник. Если я пишу return непосредственно в основной функции Start, советник завершает свою работу? Заранее спасибо!
Grossmester: Добрый вечер! Не могли бы вы подсказать, каким образом работает советник. Если я пишу return непосредственно в основной функции Start, советник завершает свою работу? Заранее спасибо!
Это советник.
Не важно.
Ток когда можно ?
Это советник.
В том же советнике и вторая функция. Там все в порядке. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)
int counted_bars=IndicatorCounted(); // Сколько баров уже было посчитано
if (counted_bars<0) return(-1); // Проверка возможной ошибки
if (counted_bars>0) counted_bars--; // Пересчитываем последний посчитанный бар
limit=Bars-counted_bars; // Начинаем с последнего посчитанного бара
// - 1 - ============================ Окончание блока ===================================
// - 2 - ======================= Отображение индикатора на истории ======================
for(i = limit; i >= 0; i--)
{
FastMA = iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i);
SlowMA = iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i);
}
// - 2 - ============================ Окончание блока ===================================
// - 3 - ======================= Выдача сигналов ========================================
//if (LastBar != Time[0]) // Один раз за один бар
//{
в этом дело все?
В том же советнике и вторая функция. Там все в порядке. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)
Всем добрый день.
Подскажите, какое добавить условие перед OrderSend чтобы ордер не исполнялся, если предыдущая открытая позиция находится в минусе? Чтобы не было усреднения.
Всем добрый день.
Подскажите, какое добавить условие перед OrderSend чтобы ордер не исполнялся, если предыдущая открытая позиция находится в минусе? Чтобы не было усреднения.
Вообще проверка вот так
OrderSelect(ticket,SELECT_BY_TICKET);
if(OrderProfit()<0) { }
А в скобках можно поставить все что угодно. Я например так использую, чтобы метод "мартин" работал )
Добрый вечер! Не могли бы вы подсказать, каким образом работает советник. Если я пишу return непосредственно в основной функции Start, советник завершает свою работу? Заранее спасибо!
Вообще проверка вот так
OrderSelect(ticket,SELECT_BY_TICKET);
if(OrderProfit()<0) { }
А в скобках можно поставить все что угодно. Я например так использую, чтобы метод "мартин" работал )
mitanq, спасибо.
А что на место ticket прописать чтобы выбирался последний открытый ордер?