Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, друзья. Это отличный индикатор Dynamic_Momentum_Index для Thinkorswim. Возможно ли переписать его для metatrader 4? Или может у кого-то есть такой индикатор для МТ4?
declare lower;input price = close;input stdevLength = 5;input avgOfStdevLength = 10;input DYMILength = 30;input DYMILengthLowerLimit = 3;input DYMILengthUpperLimit = 30;assert(DYMILengthLowerLimit > 0, "'dymi length lower limit' must be positive: " + DYMILengthLowerLimit);assert(DYMILength между DYMILengthLowerLimit и DYMILengthUpperLimit, "'dymi length' must be between lower and upper limit: " + DYMILength);def std = stdev(price, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = if dynamicLength between DYMILengthLowerLimit and DYMILengthUpperLimit then dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0);# точность 10^-5 для множителя emadef expIndex = if limitedLength == 0 then 1 else max(1, bn - ceil(-5 / lg(1 - sf)));def fromIndex = if isNan(expIndex) then 1 else expIndex;def chg = price - price[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = fromIndex to bn + 1 with accuN do sf * (if isnan(getValue(chg, bn - indexN)) then 0 else getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = fromIndex to bn + 1 with accuT do sf * (if isnan(getValue(absChg, bn - indexT)) then 0 else getValue(absChg, bn - indexT)) + (1 - sf) * accuT;def RSI = if totChgAvg != 0 and limitedLength != 0 then 50 * (netChgAvg / totChgAvg + 1) else RSI[1];plot DYMI = RSI;plot OverBought = 90;plot OverSold = 10;DYMI.DefineColor("OverBought", GetColor(5));DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("OverSold", GetColor(1));DYMI.AssignValueColor(if RSI > Overbought then DYMI.Color("OverBought") else if RSI =OverBought, "OverBought", Alert.BAR, Sound.ring);Alert (DYMI=OverBought then high*72 else double.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight(3);DotDn.setDefaultColor(color.wHITE);plot DotUp = if DYMI<=OverSold then low*-2 else double.nan;Dotup.setStyle(curve.POINTS);Dotup.setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper Buy Signal", Alert.BAR, Sound.ring);alert(DotDn, "Scalper Buy Signal", Alert.BAR, Sound.ring);
Здравствуйте, друзья. Есть отличный индикатор Dynamic_Momentum_Index для Thinkorswim. Возможно ли переписать его для metatrader 4? Или может у кого-то есть такой индикатор для MT4?
declare lower;input price = close;input stdevLength = 5;input avgOfStdevLength = 10;input DYMILength = 30;input DYMILengthLowerLimit = 3;input DYMILengthUpperLimit = 30;assert(DYMILengthLowerLimit > 0, "'dymi length lower limit' must be positive: " + DYMILengthLowerLimit);assert(DYMILength между DYMILengthLowerLimit и DYMILengthUpperLimit, "'dymi length' must be between lower and upper limit: " + DYMILength);def std = stdev(price, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = if dynamicLength between DYMILengthLowerLimit and DYMILengthUpperLimit then dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0);# точность 10^-5 для множителя emadef expIndex = if limitedLength == 0 then 1 else max(1, bn - ceil(-5 / lg(1 - sf)));def fromIndex = if isNan(expIndex) then 1 else expIndex;def chg = price - price[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = fromIndex to bn + 1 with accuN do sf * (if isnan(getValue(chg, bn - indexN)) then 0 else getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = fromIndex to bn + 1 with accuT do sf * (if isnan(getValue(absChg, bn - indexT)) then 0 else getValue(absChg, bn - indexT)) + (1 - sf) * accuT;def RSI = if totChgAvg != 0 and limitedLength != 0 then 50 * (netChgAvg / totChgAvg + 1) else RSI[1];plot DYMI = RSI;plot OverBought = 90;plot OverSold = 10;DYMI.DefineColor("OverBought", GetColor(5));DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("OverSold", GetColor(1));DYMI.AssignValueColor(if RSI > Overbought then DYMI.Color("OverBought") else if RSI =OverBought, "OverBought", Alert.BAR, Sound.ring);Alert (DYMI=OverBought then high*72 else double.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight(3);DotDn.setDefaultColor(color.wHITE);plot DotUp = if DYMI<=OverSold then low*-2 else double.nan;Dotup.setStyle(curve.POINTS);Dotup.setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper Buy Signal", Alert.BAR, Sound.ring);alert(DotDn, "Scalper Buy Signal", Alert.BAR, Sound.ring);
olvus,
Посмотрите этот пост: https: //www.mql5.com/en/forum/172919/page4. Может это поможет
Привет mladen, я хотел бы спросить вас об этом услуге.... есть ли у вас возможность перевести эту программу для MT4?
Спасибо в любом случае...
ЭТО ПРОГРАММА НА ДРУГОМ ЯЗЫКЕ:// var: domanda(0), offerta(0), var1(0), var2(0), indzona1;
// var1= ((H/C[1])-1)*V;
// var2= ((L/C[1]-1)*V*(-1);
// domanda= MOV(var1,450,S);
// offerta= MOV(var2,450,S);
// indzona1= CreateWiewport(100);
// PlotChart(domanda, indzona1, green, solid, 1);
// PlotChart(offerta, indzona1, red, solid, 1);ЭТО МОЯ РАБОТА НА ЯЗЫКЕ MT4, НО ПОСЛЕ ПОСЛЕДНЕГО ОБНОВЛЕНИЯ ОН БОЛЬШЕ НЕ РАБОТАЕТ:
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
extern int periodo=128;
double DOMANDA[];
double OFFERTA[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(6);
IndicatorBuffers(2);
SetIndexBuffer(0,DOMANDA);
SetIndexBuffer(1,OFFERTA);
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция деинициализации индикатора |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = Bars - counted_bars;
double var_dom[10000];
double var_off[10000];
ArraySetAsSeries(var_dom,true);
ArraySetAsSeries(var_off,true);
for(int i=0; i<limit; i++)
{
var_dom = ((High/Close)-1)*Volume;
var_off = ((Low/Close)-1)*Volume * (-1);
DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);
OFFERTA = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);
}
return(0);
}//+------------------------------------------------------------------+
Привет mladen, я хотел бы спросить вас об этом услуге.... есть ли у вас возможность перевести эту программу для MT4?
Спасибо в любом случае...
ЭТО ПРОГРАММА НА ДРУГОМ ЯЗЫКЕ:// var: domanda(0), offerta(0), var1(0), var2(0), indzona1;
// var1= ((H/C[1])-1)*V;
// var2= ((L/C[1]-1)*V*(-1);
// domanda= MOV(var1,450,S);
// offerta= MOV(var2,450,S);
// indzona1= CreateWiewport(100);
// PlotChart(domanda, indzona1, green, solid, 1);
// PlotChart(offerta, indzona1, red, solid, 1);ЭТО МОЯ РАБОТА НА ЯЗЫКЕ MT4, НО ПОСЛЕ ПОСЛЕДНЕГО ОБНОВЛЕНИЯ ОН БОЛЬШЕ НЕ РАБОТАЕТ:
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
extern int periodo=128;
double DOMANDA[];
double OFFERTA[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(6);
IndicatorBuffers(2);
SetIndexBuffer(0,DOMANDA);
SetIndexBuffer(1,OFFERTA);
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция деинициализации индикатора |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = Bars - counted_bars;
double var_dom[10000];
double var_off[10000];
ArraySetAsSeries(var_dom,true);
ArraySetAsSeries(var_off,true);
for(int i=0; i<limit; i++)
{
var_dom = ((High/Close)-1)*Volume;
var_off = ((Low/Close)-1)*Volume * (-1);
DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);
OFFERTA = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);
}
return(0);
}//+------------------------------------------------------------------+Стефан
Вот, пожалуйста
Стефан Вот, пожалуйста:
Да, идеально !!!!
Спасибо большое!!!
мистер младен, возможно ли переписать индикатор thinkorswim на индикатор metatrader 4 (пост 2474)?
Привет всем ,
допустим, у меня есть функция, которая перебирает все рыночные ордера и выбирает последний с помощью lastTicket(). затем я использую ot = orderopentime(). как мне получить значение ot, чтобы я мог использовать его в любой другой функции программы. я не хочу вызывать checko() изнутри цикла через все функции, например.
void checko()
{
if (ot>presetdatetime)
{
closeorder();
}
}
Всем привет!
допустим, у меня есть функция, которая перебирает все рыночные ордера и выбирает последний с помощью lastTicket(). затем я использую ot = orderopentime(). как мне получить значение ot, чтобы я мог использовать его в любой другой функции программы. я не хочу вызывать checko() изнутри цикла через все функции, например.
void checko()
{
if (ot>presetdatetime)
{
closeorder();
}
}hermes
Вопрос: под последним порядковым номером вы подразумеваете наибольший (который обычно является самым новым) или наименьший (который обычно является самым старым)?
hermes Вопрос: под последним порядковым билетом вы имеете в виду самый большой (который обычно самый новый) или самый маленький (который обычно самый старый)?
Спасибо, Младен, я имею в виду самый большой, который является самым новым заказом.
Спасибо Mladen, я имею в виду наибольшее, которое является самым новым порядком.
тогда вы можете использовать функцию, подобную этой:
{
int largestTicketNo = -1;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
largestTicketNo = MathMax(largestTicketNo,OrderTicket());
}
//
//
//
//
//
if (largestTicketNo>-1 )
{
if (OrderSelect(largestTicketNo,SELECT_BY_TICKET,MODE_TRADES))
if (OrderOpenTime()>timeLimit)
OrderDelete(largestTicketNo);
}
}PS: она не делает разницы между символами или возможными магическими числами. Если вам нужно, чтобы они тоже проверялись, то в вышеуказанную функцию нужно добавить дополнительный код.