Добрый День !
Кто может перенести код с treidingview на mt4 или mt5 ?
вот сама стратегия.
https://www.youtube.com/watch?v=qgNWyr6EaT8
https://www.youtube.com/watch?v=u4iw-7klU9g&t=332s
https://vk.com/@crypto.mozart-torgovaya-strategiya-1-indikator-rsi-v-svyazke-s-bollinger-b
код самого индикатора
https://www.tradingview.com/script/rHIDJgGI-RSI-BB-EMA-Dispersion/
Доработка индикаторов: общая тема📌
От loreno, 17 августа, 2011 в Уголок Программиста
17 часов назад, nds69 сказал:Добрый День !
Кто может перенести код с treidingview на mt4 или mt5 ?
вот сама стратегия.
https://www.youtube.com/watch?v=qgNWyr6EaT8
https://www.youtube.com/watch?v=u4iw-7klU9g&t=332s
https://vk.com/@crypto.mozart-torgovaya-strategiya-1-indikator-rsi-v-svyazke-s-bollinger-b
код самого индикатора
https://www.tradingview.com/script/rHIDJgGI-RSI-BB-EMA-Dispersion/
Ну вот это точно в другую ветку.
В доработку индикаторов, как один из вариантов.
И начать можно вот с этого индикатора, в нем не хватает только дисперсии
Изменено 8 октября, 2020 пользователем Rigal
Уважаемые знатоки, переделайте пожалуйста индикатор из гисты в канальный для главного окна. Очень нужен для упрощения визуализации.
Изменено 18 октября, 2020 пользователем smoked
Приветствую уважаемые программисты. Прикрутите пож-ста алерт на мобильный терминал, при изменении цвета индикатора. За ранее благодарю.
Изменено 27 октября, 2020 пользователем 36R
1 час назад, 36R сказал:Приветствую уважаемые программисты. Прикрутите пож-ста алерт на мобильный терминал, при изменении цвета индикатора. За ранее благодарю.
Добавил.
Push сообщение включается настройкой alertsPUSH.
Кто умеет пожалуйста модернизируйте индикатор Stochastic Bar chart под новую билду MT4. Индикатор хороший но под новую билду не работает.
Заранее благодарен!
Ув. Программисты mql5, сделайте, пожалуйста, чтобы индикатор не рисовал цену открытия бара, а только цену закрытия. Или можно установить в настраиваемых параметрах возможность выбора цвета для цен открытия и закрытия. Заранее благодарна за помощь.
Изменено 28 октября, 2020 пользователем iloirin
В 27.10.2020 в 23:41, Folen сказал:Кто умеет пожалуйста модернизируйте индикатор Stochastic Bar chart под новую билду MT4. Индикатор хороший но под новую билду не работает.
Заранее благодарен!
Пожалуйста.
17 часов назад, iloirin сказал:Ув. Программисты mql5, сделайте, пожалуйста, чтобы индикатор не рисовал цену открытия бара, а только цену закрытия. Или можно установить в настраиваемых параметрах возможность выбора цвета для цен открытия и закрытия. Заранее благодарна за помощь.
![]()
Пожалуйста. Цена открытия у бара больше не отображается, только закрытия.
Всем привет! Помогите встроить плагин расчёт лота AgroLotCalculator мт4 в мт5, сам плагин для версии мт5 не нашёл, заранее спасибо!!!
Здравствуйте. Подскажите пожалуйста из Pine Script кто то может помочь переписать индикатор в МТ4
В 05.11.2020 в 16:24, Мишок сказал:Всем привет! Помогите встроить плагин расчёт лота AgroLotCalculator мт4 в мт5, сам плагин для версии мт5 не нашёл, заранее спасибо!!!
Вы хотя бы исходники приложили.
Уважте тех, к кому обращаетесь
В 07.11.2020 в 19:06, Мишок сказал:
Это не исходники. Это бинарник.
Исходники - это файлы с расширением .mq4/.mq5
А с бинарником ничего сделать нельзя
Всем добрый день. Подправьте пож-ста индикатор, он сигналит на каждой свече при продаже покупка, при покупке продажу сигналит , нужно только при изменении цвета гистограммы и закрытии сигнальной свечи, и добавьте пож-ста алерт на моб терминал. За ранее благодарю!
ultra_filter_2_0_alert_arrows.ex4 ultra_filter_2_0_alert_arrows.mq4
Изменено 16 ноября, 2020 пользователем 36R
Help (помогите исправить ошибку в зигзаге под mql5)
Вот решил добавить 2й зигзаг к стандартному зигзагу. При компиляции ошибок и предупреждений нет. На графике отображает 1 зигзаг вместо 2 зигзагов, в чём проблема ни пойму (плохо знаю mql). Помогите разобраться. Вот сам код.
Изменено 17 ноября, 2020 пользователем Pavel888
Уважаемые знатоки, сделайте пожалуйста среднюю линию индикатора двухцветной, чтобы цвет изменялся при изменении направления движения.
Изменено 19 ноября, 2020 пользователем smoked
10 часов назад, smoked сказал:Уважаемые знатоки, сделайте пожалуйста среднюю линию индикатора двухцветной
Думал напишу за 5 минуты и пойду сериал смотреть. В итоге весь вечер над этой, вроде бы не сложной работой сидел. С тебя пиво.

Если не нравится толщина линии, измени 2 строчки
#property indicator_width3 3
#property indicator_width4 3
на эти
#property indicator_width3 1
#property indicator_width4 1
Rever27, огромное тебе спасибо. Индюк очень сильно "рисует" и для меня была пытка визуально за ним наблюдать. Посему удваиваю пиво (за каждый глаз
). Куда организовать доставку?
Один вопрос: запаздывание изменения цвета на одну свечу, при переходе от медведей к быкам это особенность индюка или поправимо? Смена цвета от быков к медведям вроде всё чётче отрабатывает.
Изменено 20 ноября, 2020 пользователем smoked
21 час назад, smoked сказал:это особенность индюка или поправимо?
Я не знаю как это поправить. Индикатору пришлось дописать отдельный буфер для отрисовки зеленой линии поверх оранжевой. Вообще код старый и трогать его страшно. Не так эта отрисовка критична.
Здравствуйте, уважаемые программисты!
Помогите. Нужно поправить алерт в индикаторе. Пиликает на каждой свечке при касании гориз. уровня, а хотелось бы чтобы сигналил только при первом касании.
Либо сделать так, что после первого касания он уровень не замечает. Либо (что предпочтительнее) чтобы уровень после первого касания дальше не отрисовывался.
Никто не отзывается, все заняты. Жаль! Полезный индикатор, в любой стратегии будет полезен. Но вот алерт у него реализован не самым удачным образом. Сам я не программист, поправить не смогу.
Видимо у всех дела в преддверие праздников. Ладно, всех с наступающим!
Всем привет!
Нашел на просторах индикатор. Декомпил - не декомпил. Привел в удобочитаемый вид.
Но закавыка с limit.
Обычно, в общем виде, так:
int limit=rates_total-prev_calculated;
//----
if(limit>1) // значит первый запуск, или есть изменения в истории - полный перерасчёт всех данных
{
limit=rates_total-nPeriod-1;
//----
ArrayInitialize(ExtBuffer, 0.);
ArrayInitialize(IntBuffer, 0.);
}
//---- и далее
for(int i=limit; i>=0; i--)
{
//----
}
Но тут этот вариант не работает. Наименьшее из зол:
if(limit=1) // значит появился новый бар - рассчитываются первый и текущий бары
{
limit=rates_total-nPeriod-1;
//----
}
И далее..
Хотелось бы использовать первый вариант. Прошу помощи у более опытных в программировании форумчан.
Индикатор:
//+----------------------------------------------+ //| K_Indicator.mq4 | //+----------------------------------------------+ #property strict //---- indicator settings #property indicator_separate_window #property indicator_minimum -1.05 #property indicator_maximum 1.05 #property indicator_buffers 1 #property indicator_color1 clrSandyBrown //---- input parameters input uint Inp_K_Period = 3; // K_Indicator Period //---- buffers double Ext_Buffer[]; //---- int nK_Period; //---- int nDraw_begin1=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { string sShort_name; //---- IndicatorDigits(2); //---- nK_Period=int(Inp_K_Period < 3 ? 3 : Inp_K_Period); //---- indicator line SetIndexBuffer(0, Ext_Buffer); SetIndexStyle (0, DRAW_LINE); SetIndexLabel (0, "K ("+(string)nK_Period+")"); //---- name for indicator sShort_name="K_Indicator"; IndicatorShortName(sShort_name); //---- nDraw_begin1=nK_Period; SetIndexDrawBegin(0,nDraw_begin1); //---- initialization done return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //---- if(rates_total<=nDraw_begin1) return(0); //---- double dCoefficient=0., dPeriodRatio=0., k, dTempValue, dPriceBag, dPriceToAbs, dPreValue, dValue; int nRelayIO, nPeriod=0, A=0, B, C; double ArrayP[300]={0}, ArrayX[300]={0}, ArrayY[300]={0}, ArrayZ[300]={0}; //---- int limit=rates_total-prev_calculated; //---- //if(limit>1) if(limit=1) // need >1 { limit=rates_total-nDraw_begin1-1; //---- ArrayInitialize(Ext_Buffer, 0.); } //---- K_Indicator for(int i=limit; i>=0; i--) { nRelayIO = 0; dTempValue= 0.; //---- nPeriod=int(nK_Period-1 >= 2 ? nK_Period : 3); //---- k=nPeriod; dCoefficient= 12/(k*(k-1)*(k+1)); dPeriodRatio= (nPeriod+1)*0.5; //---- for(A=2; A<=nPeriod; A++) ArrayP[A-1]=ArrayP[A]; //---- ArrayP[nPeriod]=close[i]; //---- for(B=1; B<=nPeriod; B++) { ArrayY[B]= B; ArrayZ[B]= B; ArrayX[B]= ArrayP[B]; } //---- for(B=1; B<=(nPeriod-1); B++) { dPriceBag= ArrayX[B]; C= B; A= B+1; //---- for(A=B+1; A<=nPeriod; A++) { if (ArrayX[A]<dPriceBag) { dPriceBag= ArrayX[A]; C= A; } } //---- dPriceToAbs= ArrayX[B]; ArrayX[B] = ArrayX[C]; ArrayX[C] = dPriceToAbs; dPriceToAbs= ArrayY[B]; ArrayY[B] = ArrayY[C]; ArrayY[C] = dPriceToAbs; } //---- B=1; while(nPeriod>B) { A= B+1; nRelayIO= 1; dTempValue=ArrayZ[B]; //---- while(nRelayIO!=0) { if (ArrayX[B]!=A) { if ((A-B)>1) { dTempValue=dTempValue/(A-B); ArrayZ[B]= dTempValue; } nRelayIO=0; } else { dTempValue=dTempValue+ArrayZ[A]; A=A+1; } } B=A; } dTempValue=0.; for(B=1; B<=nPeriod; B++) dTempValue=dTempValue+(ArrayZ[B]-dPeriodRatio)*(ArrayY[B]-dPeriodRatio); //---- dPreValue=dCoefficient*dTempValue; //---- dValue=dPreValue; if (dValue==0) dValue=0.00001; //---- Ext_Buffer[i]=dValue; } //---- return(rates_total); } //+------------------------------------------------------------------+
Заранее благодарен
А вы уверены что в rates_total и prev_calculated есть данные?
8 часов назад, radioman сказал:Всем привет!
Нашел на просторах индикатор. Декомпил - не декомпил. Привел в удобочитаемый вид.
Но закавыка с limit.
Обычно, в общем виде, так:
int limit=rates_total-prev_calculated; //---- if(limit>1) // значит первый запуск, или есть изменения в истории - полный перерасчёт всех данных { limit=rates_total-nPeriod-1; //---- ArrayInitialize(ExtBuffer, 0.); ArrayInitialize(IntBuffer, 0.); } //---- и далее for(int i=limit; i>=0; i--) { //---- }Но тут этот вариант не работает. Наименьшее из зол:
if(limit=1) // значит появился новый бар - рассчитываются первый и текущий бары { limit=rates_total-nPeriod-1; //---- }И далее..
Хотелось бы использовать первый вариант. Прошу помощи у более опытных в программировании форумчан.
Индикатор:
//+----------------------------------------------+ //| K_Indicator.mq4 | //+----------------------------------------------+ #property strict //---- indicator settings #property indicator_separate_window #property indicator_minimum -1.05 #property indicator_maximum 1.05 #property indicator_buffers 1 #property indicator_color1 clrSandyBrown //---- input parameters input uint Inp_K_Period = 3; // K_Indicator Period //---- buffers double Ext_Buffer[]; //---- int nK_Period; //---- int nDraw_begin1=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { string sShort_name; //---- IndicatorDigits(2); //---- nK_Period=int(Inp_K_Period < 3 ? 3 : Inp_K_Period); //---- indicator line SetIndexBuffer(0, Ext_Buffer); SetIndexStyle (0, DRAW_LINE); SetIndexLabel (0, "K ("+(string)nK_Period+")"); //---- name for indicator sShort_name="K_Indicator"; IndicatorShortName(sShort_name); //---- nDraw_begin1=nK_Period; SetIndexDrawBegin(0,nDraw_begin1); //---- initialization done return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //---- if(rates_total<=nDraw_begin1) return(0); //---- double dCoefficient=0., dPeriodRatio=0., k, dTempValue, dPriceBag, dPriceToAbs, dPreValue, dValue; int nRelayIO, nPeriod=0, A=0, B, C; double ArrayP[300]={0}, ArrayX[300]={0}, ArrayY[300]={0}, ArrayZ[300]={0}; //---- int limit=rates_total-prev_calculated; //---- //if(limit>1) if(limit=1) // need >1 { limit=rates_total-nDraw_begin1-1; //---- ArrayInitialize(Ext_Buffer, 0.); } //---- K_Indicator for(int i=limit; i>=0; i--) { nRelayIO = 0; dTempValue= 0.; //---- nPeriod=int(nK_Period-1 >= 2 ? nK_Period : 3); //---- k=nPeriod; dCoefficient= 12/(k*(k-1)*(k+1)); dPeriodRatio= (nPeriod+1)*0.5; //---- for(A=2; A<=nPeriod; A++) ArrayP[A-1]=ArrayP[A]; //---- ArrayP[nPeriod]=close[i]; //---- for(B=1; B<=nPeriod; B++) { ArrayY[B]= B; ArrayZ[B]= B; ArrayX[B]= ArrayP[B]; } //---- for(B=1; B<=(nPeriod-1); B++) { dPriceBag= ArrayX[B]; C= B; A= B+1; //---- for(A=B+1; A<=nPeriod; A++) { if (ArrayX[A]<dPriceBag) { dPriceBag= ArrayX[A]; C= A; } } //---- dPriceToAbs= ArrayX[B]; ArrayX[B] = ArrayX[C]; ArrayX[C] = dPriceToAbs; dPriceToAbs= ArrayY[B]; ArrayY[B] = ArrayY[C]; ArrayY[C] = dPriceToAbs; } //---- B=1; while(nPeriod>B) { A= B+1; nRelayIO= 1; dTempValue=ArrayZ[B]; //---- while(nRelayIO!=0) { if (ArrayX[B]!=A) { if ((A-B)>1) { dTempValue=dTempValue/(A-B); ArrayZ[B]= dTempValue; } nRelayIO=0; } else { dTempValue=dTempValue+ArrayZ[A]; A=A+1; } } B=A; } dTempValue=0.; for(B=1; B<=nPeriod; B++) dTempValue=dTempValue+(ArrayZ[B]-dPeriodRatio)*(ArrayY[B]-dPeriodRatio); //---- dPreValue=dCoefficient*dTempValue; //---- dValue=dPreValue; if (dValue==0) dValue=0.00001; //---- Ext_Buffer[i]=dValue; } //---- return(rates_total); } //+------------------------------------------------------------------+
Заранее благодарен
Я, может, не до конца понимаю проблему...
Если хочется знать, первый ли это запуск - проверяем prev_calculated <= 0
Если лимит должен быть больше единицы - ну прибавляем к нему единицу по умолчанию и сравниваем limit > 1
Ну, или поясните, почему хочется сравнивать именно > 1?
Изменено 16 декабря, 2020 пользователем Rigal
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем


