У индикатора OBV в мт5 нет возможности выбора типа цены расчета
В мт4 эта возможность есть.
Почему?
И вообще, OBV рассчитывается как сумма всего объема по всей истории, где свеча вниз там объем "отрицательный" Так и откуда при таком расчете в мт4 возможность выбрать тип цены для расчета индикатора? если она в расчете не участвует
Есть часть кода для подсчета отдельного количества бай и селл ордеров. (b - бай ордера, s - селл ордера)
Далее, хочу написать условие, при котором, если открывается новый ордер или закрывается имеющийся ранее. Т. е надо произвести сравнение в количестве ранее открытых ордеров и последующих изменений, но не пойму как это написать в коде. Как сохранить изменения в количестве ордеров? Прошу помочь.
У индикатора OBV в мт5 нет возможности выбора типа цены расчета
В мт4 эта возможность есть.
Почему?
И вообще, OBV рассчитывается как сумма всего объема по всей истории, где свеча вниз там объем "отрицательный" Так и откуда при таком расчете в мт4 возможность выбрать тип цены для расчета индикатора? если она в расчете не участвует
В хорошо заданном вопросе содержится половина ответа.
Есть часть кода для подсчета отдельного количества бай и селл ордеров. (b - бай ордера, s - селл ордера)
Далее, написал условие, при котором, если открывается новый ордер или закрывается имеющийся ранее, то действие предается дальше. Т. е надо произвести сравнение в количестве ранее открытых ордеров и последующих изменений, но не пойму как это написать в коде. Как сохранить изменения в количестве ордеров? Прошу помочь.
double LB=0,LS=0;
int b=0,s=0;
int izmb=0, izms=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol())
{
int tip = OrderType();
if (tip==OP_BUY)
{
LB += OrderLots();
b++;
}
if (tip==OP_SELL)
{
LS += OrderLots();
s++;
}
}
}
}
if (izmb>b ||izmb<b || izms>s || izms<s){ //условие сравнения количества ордеров, изменилось или нет,
izmb=b; //если изменилось то присваиваем новое значение, как его сохранить? Ведь с новым тиком
izms=s // оно опять будет равно "0"???
}
Если что, то нужно делать статиком, иначе обнуляется
Обычно флаги глобальными делаю. Конечно в теле функции заново объявится и нужен Статик. НО почему никто не заметил что фигурных скобок не хватает)))) принт И присвоение в скобках должны быть)
И без статик конечно он будет печатать на каждом вызове функции т.к. printsimbol="" станет равен НУЛЬ, а symbol присвоится текущее значение)
Есть часть кода для подсчета отдельного количества бай и селл ордеров. (b - бай ордера, s - селл ордера)
Далее, написал условие, при котором, если открывается новый ордер или закрывается имеющийся ранее, то действие предается дальше. Т. е надо произвести сравнение в количестве ранее открытых ордеров и последующих изменений, но не пойму как это написать в коде. Как сохранить изменения в количестве ордеров? Прошу помочь.
Я бы так попробывал
//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strictint izmb,izms;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create timerEventSetMillisecondTimer(200);
izmb=0; izms=0;
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy timerEventKillTimer();
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---if(CountOrders(0,0)!=izmb){izmb=CountOrders(0,0);}
if(CountOrders(0,1)!=izms){izms=CountOrders(0,1);}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Подсчет ордеров по типу |//+------------------------------------------------------------------+//| 0 - ордера типа BUY 1 - ордера типа SELL |//| 2 - ордера типа BUYLIMIT 3 - ордера типа SELLLIMIT |//| 4 - ордера типа BUYSTOP 5 - ордера типа SELLSTOP |//| 6 - ордера типа Balance -1 - Все типы ордеров |//+------------------------------------------------------------------+int CountOrders(string symb="", int or_ty=-1)
{
int cnt=0;
if(symb=="0") symb=_Symbol;
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos,SELECT_BY_POS)==true)
{
if(OrderSymbol()==symb || symb=="")
{
if(or_ty<0 || or_ty==OrderType()) cnt++;
}
}
}
return(cnt);
}
//+------------------------------------------------------------------+
Скажите где можно скачать версия терминала МТ4 1320
У индикатора OBV в мт5 нет возможности выбора типа цены расчета
В мт4 эта возможность есть.
Почему?
И вообще, OBV рассчитывается как сумма всего объема по всей истории, где свеча вниз там объем "отрицательный"
Так и откуда при таком расчете в мт4 возможность выбрать тип цены для расчета индикатора? если она в расчете не участвует
Есть часть кода для подсчета отдельного количества бай и селл ордеров. (b - бай ордера, s - селл ордера)
Далее, хочу написать условие, при котором, если открывается новый ордер или закрывается имеющийся ранее. Т. е надо произвести сравнение в количестве ранее открытых ордеров и последующих изменений, но не пойму как это написать в коде. Как сохранить изменения в количестве ордеров? Прошу помочь.
У индикатора OBV в мт5 нет возможности выбора типа цены расчета
В мт4 эта возможность есть.
Почему?
И вообще, OBV рассчитывается как сумма всего объема по всей истории, где свеча вниз там объем "отрицательный"
Так и откуда при таком расчете в мт4 возможность выбрать тип цены для расчета индикатора? если она в расчете не участвует
В хорошо заданном вопросе содержится половина ответа.
Есть часть кода для подсчета отдельного количества бай и селл ордеров.
И есть куда его вставить)
В хорошо заданном вопросе содержится половина ответа.
И есть куда его вставить)
Тогда продублирую вопрос.
Есть часть кода для подсчета отдельного количества бай и селл ордеров. (b - бай ордера, s - селл ордера)
Далее, написал условие, при котором, если открывается новый ордер или закрывается имеющийся ранее, то действие предается дальше. Т. е надо произвести сравнение в количестве ранее открытых ордеров и последующих изменений, но не пойму как это написать в коде. Как сохранить изменения в количестве ордеров? Прошу помочь.
Если что, то нужно делать статиком, иначе обнуляется
Обычно флаги глобальными делаю. Конечно в теле функции заново объявится и нужен Статик. НО почему никто не заметил что фигурных скобок не хватает)))) принт И присвоение в скобках должны быть)
И без статик конечно он будет печатать на каждом вызове функции т.к. printsimbol="" станет равен НУЛЬ, а symbol присвоится текущее значение)
Тогда продублирую вопрос.
Есть часть кода для подсчета отдельного количества бай и селл ордеров. (b - бай ордера, s - селл ордера)
Далее, написал условие, при котором, если открывается новый ордер или закрывается имеющийся ранее, то действие предается дальше. Т. е надо произвести сравнение в количестве ранее открытых ордеров и последующих изменений, но не пойму как это написать в коде. Как сохранить изменения в количестве ордеров? Прошу помочь.
Я бы так попробывал