Всё верно, мне нужно при тестировании держать одну сумму на балансе, снимать прирост, робот без реинвестирования, и торгует сеткой по мартингейлу, поэтому в рынке постоянно открытые сделки
Всё верно, мне нужно при тестировании держать одну сумму на балансе, снимать прирост, робот без реинвестирования, и торгует сеткой по мартингейлу, поэтому в рынке постоянно открытые сделки
Ну, в любом случае логика не меняется, запомнили начальный баланс и мониторим прирост и просадку, потом снимаем... по коду нужно что-то?
В расчёт нужно брать свободную маржу, а не эквити!
Может получится ситуация, когда по средствам позволяет просадка снять прибыль с баланса, но при этом задействована большая маржа, и после снятия просадка будет больше ваших 5%
Формулами в коде сейчас не помогу, может кто другой подключится и напишет вам код, здесь не долго, но нужно немного помыслить)
Можно ли с помощью функции iCustom сделать из него мультитаймфреймный индикатор? Ну, чтобы он брал значения из ex5 с других периодов и рисовал их на текущем графике?
В mql4 я с помощью iCustom спокойно делал индикаторы, использующие чьи-то готовые индикаторы, хоть и ничего не понимаю в программировании... хватало интуиции. А в mql5 ничего не получается, как ни пытаюсь разобраться. Помогите, пожалуйста.
Есть вот этот индикатор в ex5. Положил его в папку Downloads. Хочу брать обе его линии и рисовать на графике в других периодах, ну, то есть, сделать его мультитаймфреймным с помощью iCustom.
Поскольку с нуля написать индикатор не могу, взял код простого индикатора Bears Power. Ничего там особо не менял, кроме того, что поменял indicator_chart_window и DRAW_LINE, а также строчку, которая, в моем понимании, должна вытаскивать данные первого буфера с параметрами по умолчанию на текущем ТФ:
Все компилируется, ничего не рисуется. Чего ему еще надо? :(
#property copyright"2009, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property description"Bears Power"//--- indicator settings#property indicator_chart_window//---------------------------------#property indicator_buffers2#property indicator_plots1#property indicator_type1DRAW_LINE//---------------------------------------#property indicator_color1 Silver
#property indicator_width12//--- input parametersinputint InpBearsPeriod=13; // Period//--- indicator buffersdouble ExtBearsBuffer[];
double ExtTempBuffer[];
//--- handle of EMA int ExtEmaHandle;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+voidOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,ExtBearsBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ExtTempBuffer,INDICATOR_CALCULATIONS);
//---IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//--- sets first bar from what index will be drawnPlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpBearsPeriod-1);
//--- name for DataWindow and indicator subwindow labelIndicatorSetString(INDICATOR_SHORTNAME,"Bears("+(string)InpBearsPeriod+")");
//--- get MA handle
ExtEmaHandle=iMA(NULL,0,InpBearsPeriod,0,MODE_EMA,PRICE_CLOSE);
//--- initialization done
}
//+------------------------------------------------------------------+//| Average True Range |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &Time[],
constdouble &Open[],
constdouble &High[],
constdouble &Low[],
constdouble &Close[],
constlong &TickVolume[],
constlong &Volume[],
constint &Spread[])
{
int i,limit;
//--- check for bars countif(rates_total<InpBearsPeriod)
return(0);// not enough bars for calculation //--- not all data may be calculatedint calculated=BarsCalculated(ExtEmaHandle);
if(calculated<rates_total)
{
Print("Not all data of ExtEmaHandle is calculated (",calculated,"bars ). Error",GetLastError());
return(0);
}
//--- we can copy not all dataint to_copy;
if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total;
else
{
to_copy=rates_total-prev_calculated;
if(prev_calculated>0) to_copy++;
}
//---- get ma buffersif(IsStopped()) return(0); //Checking for stop flagif(CopyBuffer(ExtEmaHandle,0,0,to_copy,ExtTempBuffer)<=0)
{
Print("getting ExtEmaHandle is failed! Error",GetLastError());
return(0);
}
//--- first calculation or number of bars was changedif(prev_calculated<InpBearsPeriod)
limit=InpBearsPeriod;
else limit=prev_calculated-1;
//--- the main loop of calculationsfor(i=limit;i<rates_total && !IsStopped();i++)
{
ExtBearsBuffer[i]=iCustom(NULL,0,"Downloads\\RSI Analytics"); \\--------------------------------------------
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Зачем нам RSI в отдельном окне, если его можно построить в основном окне графика, что гораздо более понятно? RSI ANALYTICS - это индикатор, следящий за рынком, созданный на основе той же идеи, что и традиционный RSI (индекс относительной силы). При этом он строится не в отдельном подокне, а в том же окне, что и график цены финансового...
В mql4 я с помощью iCustom спокойно делал индикаторы, использующие чьи-то готовые индикаторы, хоть и ничего не понимаю в программировании... хватало интуиции. А в mql5 ничего не получается, как ни пытаюсь разобраться. Помогите, пожалуйста.
Есть вот этот индикатор в ex5. Положил его в папку Downloads. Хочу брать обе его линии и рисовать на графике в других периодах, ну, то есть, сделать его мультитаймфреймным с помощью iCustom.
Поскольку с нуля написать индикатор не могу, взял код простого индикатора Bears Power. Ничего там особо не менял, кроме того, что поменял indicator_chart_window и DRAW_LINE, а также строчку, которая, в моем понимании, должна вытаскивать данные первого буфера с параметрами по умолчанию на текущем ТФ:
Все компилируется, ничего не рисуется. Чего ему еще надо? :(
В mql5 работа с пользовательскими, да и стандартными индикаторами организована иначе чем в mql4. Если в mql4 посредством iCustom можно было получить только одно значение индикатора, то в mql5 можно получить значения индикатора на всю глубину истории в массив. Второе основное отличие, это направление индексации в буферах индикаторов.
Весь код смотреть и сверять с оригиналом утомительно, поэтому я укажу только на основные:
Файл должен находиться в папке Indicators или подпапке находящейся в той-же Indicators.
И потом получив из этого дополнительного буфера значения индикатора можно их обработать каким-то образом, или не трогая ставить в индикаторный буфер не забывая о направлении индексации.
Всё верно, мне нужно при тестировании держать одну сумму на балансе, снимать прирост, робот без реинвестирования, и торгует сеткой по мартингейлу, поэтому в рынке постоянно открытые сделки
Всё верно, мне нужно при тестировании держать одну сумму на балансе, снимать прирост, робот без реинвестирования, и торгует сеткой по мартингейлу, поэтому в рынке постоянно открытые сделки
Ну, в любом случае логика не меняется, запомнили начальный баланс и мониторим прирост и просадку, потом снимаем... по коду нужно что-то?
Если вам не сложно,помогите дописать код:
Если вам не сложно,помогите дописать код:
В расчёт нужно брать свободную маржу, а не эквити!
Может получится ситуация, когда по средствам позволяет просадка снять прибыль с баланса, но при этом задействована большая маржа, и после снятия просадка будет больше ваших 5%
Формулами в коде сейчас не помогу, может кто другой подключится и напишет вам код, здесь не долго, но нужно немного помыслить)Если вам не сложно,помогите дописать код:
Я не понимаю... Вам нужна формула для вычисления процента средств от баланса?
_ldd=100-_eq/_bal*100;Если вам не сложно,помогите дописать код:
Вот, держите. Логика та, которую Я предложил, если что не так - исправим:
Есть файл индикатора только в ex5.
Можно ли с помощью функции iCustom сделать из него мультитаймфреймный индикатор? Ну, чтобы он брал значения из ex5 с других периодов и рисовал их на текущем графике?
Можно.
В mql4 я с помощью iCustom спокойно делал индикаторы, использующие чьи-то готовые индикаторы, хоть и ничего не понимаю в программировании... хватало интуиции. А в mql5 ничего не получается, как ни пытаюсь разобраться. Помогите, пожалуйста.
Есть вот этот индикатор в ex5. Положил его в папку Downloads. Хочу брать обе его линии и рисовать на графике в других периодах, ну, то есть, сделать его мультитаймфреймным с помощью iCustom.
Поскольку с нуля написать индикатор не могу, взял код простого индикатора Bears Power. Ничего там особо не менял, кроме того, что поменял indicator_chart_window и DRAW_LINE, а также строчку, которая, в моем понимании, должна вытаскивать данные первого буфера с параметрами по умолчанию на текущем ТФ:
Все компилируется, ничего не рисуется. Чего ему еще надо? :(
В mql4 я с помощью iCustom спокойно делал индикаторы, использующие чьи-то готовые индикаторы, хоть и ничего не понимаю в программировании... хватало интуиции. А в mql5 ничего не получается, как ни пытаюсь разобраться. Помогите, пожалуйста.
Есть вот этот индикатор в ex5. Положил его в папку Downloads. Хочу брать обе его линии и рисовать на графике в других периодах, ну, то есть, сделать его мультитаймфреймным с помощью iCustom.
Поскольку с нуля написать индикатор не могу, взял код простого индикатора Bears Power. Ничего там особо не менял, кроме того, что поменял indicator_chart_window и DRAW_LINE, а также строчку, которая, в моем понимании, должна вытаскивать данные первого буфера с параметрами по умолчанию на текущем ТФ:
Все компилируется, ничего не рисуется. Чего ему еще надо? :(
В mql5 работа с пользовательскими, да и стандартными индикаторами организована иначе чем в mql4. Если в mql4 посредством iCustom можно было получить только одно значение индикатора, то в mql5 можно получить значения индикатора на всю глубину истории в массив. Второе основное отличие, это направление индексации в буферах индикаторов.
Весь код смотреть и сверять с оригиналом утомительно, поэтому я укажу только на основные:
Файл должен находиться в папке Indicators или подпапке находящейся в той-же Indicators.
Вот строка получения хендла индикатора МА
и вот строка получения значения индикатора МА
в данном случае в дополнительный буфер или массив.
Получается что получить данные пользовательского индикатора
И потом получив из этого дополнительного буфера значения индикатора можно их обработать каким-то образом, или не трогая ставить в индикаторный буфер не забывая о направлении индексации.