Что касается предупреждений при компиляции "return value of ''order send/select,modify,close'' были исправлены путем добавления (bool dummyResult) ранее, но теперь я вижу, что вы используете просто (bool dummy), это нормально для всех и каждой ситуации или новый (bool dummy) для некоторых конкретных индикаторов и ситуаций?
Что касается предупреждений при компиляции "return value of ''order send/select,modify,close'' were corrected by adding (bool dummyResult) previously but now i see you using simply (bool dummy), is it ok for all and every situation or the new (bool dummy) for some specific indicators and situations ?
regards
Обычно эти предупреждения доброкачественные.
Что используется, чтобы действительно проверить, в порядке ли операция(и) ордера, так это GetLastError() (поскольку она дает гораздо больше деталей, чем простой булев возврат, который по умолчанию возвращается от операций ордера) - так что, да, это нормально, и затем, если требуется больше деталей для возможной ошибки, тогда, всеми средствами, GetLastError() должен использоваться
mladen: Обычно эти предупреждения доброкачественные.
Чтобы действительно проверить, в порядке ли операция(и) заказа, используется GetLastError() (поскольку она дает гораздо больше деталей, чем простой булев возврат, который по умолчанию возвращается от операций заказа) - так что, да, это нормально, и затем, если требуется больше деталей для возможной ошибки, тогда, всеми средствами, следует использовать GetLastError().
mladen: Он имел в виду вот это: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated
Но посмотрите и этот пост: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089
Младен,
Спасибо за информацию. Это / был мой один из самых любимых форумов, так что это плохая новость для меня тоже. Тем не менее, в сети есть и другие места с готовыми функциями форума и чата. (Я привел один пример в теме "Forex-TSD будет закрыт...").
#define _maWorkBufferx1 1 #define _maWorkBufferx2 2 #define _maWorkBufferx3 3 #define _maWorkBufferx5 5 double iCustomMa(int mode, double price, double length, int i, int instanceNo=0) { if (length<=1) return(price); int r = Bars-i-1; switch (mode) { // ... case ma_ema : return(iEma(price,length,r,instanceNo)); // ... default : return(0); } }
double workEma[][_maWorkBufferx1]; double iEma(double price, double period, int r, int instanceNo=0) { if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars); // double alpha = 2.0 / (1.0+period); workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]); return(workEma[r][instanceNo]); }
возвращают разные значения (для одного и того же MAPeriod и i)? Означает ли это, что что iEma работает немного иначе, чем встроенная EMA?
EMA зависит от предыдущих значений. Если вы рассчитывали значения по всей серии, то они должны возвращать очень похожие значения. Если нет (если вы пытались рассчитать только одно значение), то они не будут одинаковыми, так как iMA() за занавесками рассчитывает всю серию, а iCustomMa() рассчитывает только те значения, которые вы запросили.
Запустите iCustomMa() на всей серии, и результаты должны быть одинаковыми.
PS: эта iEma() устарела. Новая версия выглядит следующим образом (она не изменит значения, но это "строгое доказательство режима")
double workEma[][_maWorkBufferx1]; double iEma(double price, double period, int r, int instanceNo=0) { if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars); //
enum enMaTypes { ma_sma, // simple moving average - SMA ma_ema, // exponential moving average - EMA ma_dsema, // double smoothed exponential moving average - DSEMA ma_dema, // double exponential moving average - DEMA ma_tema, // tripple exponential moving average - TEMA ma_smma, // smoothed moving average - SMMA ma_lwma, // linear weighted moving average - LWMA ma_pwma, // parabolic weighted moving average - PWMA ma_alxma, // Alexander moving average - ALXMA ma_vwma, // volume weighted moving average - VWMA ma_hull, // Hull moving average ma_tma, // triangular moving average ma_sine, // sine weighted moving average ma_linr, // linear regression value ma_ie2, // IE/2 ma_nlma, // non lag moving average ma_zlma, // zero lag moving average ma_lead, // leader exponential moving average ma_ssm, // super smoother ma_smoo // smoother };
Насколько я знаю, это последний список скользящих средних, доступный в виде открытого кода.
Что касается предупреждений при компиляции "return value of ''order send/select,modify,close'' были исправлены путем добавления (bool dummyResult) ранее, но теперь я вижу, что вы используете просто (bool dummy), это нормально для всех и каждой ситуации или новый (bool dummy) для некоторых конкретных индикаторов и ситуаций?
с уважением
Уважаемый MLADEN
Что касается предупреждений при компиляции "return value of ''order send/select,modify,close'' were corrected by adding (bool dummyResult) previously but now i see you using simply (bool dummy), is it ok for all and every situation or the new (bool dummy) for some specific indicators and situations ?
regards
Что используется, чтобы действительно проверить, в порядке ли операция(и) ордера, так это GetLastError() (поскольку она дает гораздо больше деталей, чем простой булев возврат, который по умолчанию возвращается от операций ордера) - так что, да, это нормально, и затем, если требуется больше деталей для возможной ошибки, тогда, всеми средствами, GetLastError() должен использоваться
(что мы будем делать после 31 января?) :(
ВойтекПол,
Как это понимать?
ВойтекПол,
Как это понимать?
Но проверьте и этот пост: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089
Обычно эти предупреждения доброкачественные.
Чтобы действительно проверить, в порядке ли операция(и) заказа, используется GetLastError() (поскольку она дает гораздо больше деталей, чем простой булев возврат, который по умолчанию возвращается от операций заказа) - так что, да, это нормально, и затем, если требуется больше деталей для возможной ошибки, тогда, всеми средствами, следует использовать GetLastError().
Спасибо за помощь.
с уважением
Он имел в виду вот это: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated
Но посмотрите и этот пост: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089
Младен,
Спасибо за информацию. Это / был мой один из самых любимых форумов, так что это плохая новость для меня тоже. Тем не менее, в сети есть и другие места с готовыми функциями форума и чата. (Я привел один пример в теме "Forex-TSD будет закрыт...").
Привет всем,
Мне нужен кодер, чтобы поставить стрелку с предупреждением для этой стратегии. Вручную эта стратегия дает 100% победу.
Ниже приведена ссылка на стратегию.
http://www.binaryoptionsedge.com/topic/1879-high-power-option-2015/page-2#entry108014
Сообщение #29
Obrigado.
Уважаемый Младен, возможно ли, чтобы две следующие функции:
and
iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
if (length<=1) return(price);
int r = Bars-i-1;
switch (mode)
{
// ...
case ma_ema : return(iEma(price,length,r,instanceNo));
// ...
default : return(0);
}
}
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
//
double alpha = 2.0 / (1.0+period);
workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
return(workEma[r][instanceNo]);
}
что iEma работает немного иначе, чем встроенная EMA?
Уважаемый Младен, возможно ли, чтобы две следующие функции:
and
iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
if (length<=1) return(price);
int r = Bars-i-1;
switch (mode)
{
// ...
case ma_ema : return(iEma(price,length,r,instanceNo));
// ...
default : return(0);
}
}
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
//
double alpha = 2.0 / (1.0+period);
workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
return(workEma[r][instanceNo]);
}
что iEma работает немного иначе, чем встроенная EMA?
Запустите iCustomMa() на всей серии, и результаты должны быть одинаковыми.
PS: эта iEma() устарела. Новая версия выглядит следующим образом (она не изменит значения, но это "строгое доказательство режима")
double iEma(double price, double period, int r, int instanceNo=0)
{
if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
//
workEma[r][instanceNo] = price;
if (r>0 && period>1)
workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
return(workEma[r][instanceNo]);
}
Большое спасибо за быстрый ответ! Не могли бы вы, пожалуйста, сказать мне, где я могу
я могу найти текущий код скользящих средних:
enum enMaTypes
{
ma_sma, // simple moving average - SMA
ma_ema, // exponential moving average - EMA
ma_dsema, // double smoothed exponential moving average - DSEMA
ma_dema, // double exponential moving average - DEMA
ma_tema, // tripple exponential moving average - TEMA
ma_smma, // smoothed moving average - SMMA
ma_lwma, // linear weighted moving average - LWMA
ma_pwma, // parabolic weighted moving average - PWMA
ma_alxma, // Alexander moving average - ALXMA
ma_vwma, // volume weighted moving average - VWMA
ma_hull, // Hull moving average
ma_tma, // triangular moving average
ma_sine, // sine weighted moving average
ma_linr, // linear regression value
ma_ie2, // IE/2
ma_nlma, // non lag moving average
ma_zlma, // zero lag moving average
ma_lead, // leader exponential moving average
ma_ssm, // super smoother
ma_smoo // smoother
};
Насколько я знаю, это последний список скользящих средних, доступный в виде открытого кода.
(другие MA уже в формате ex4).