Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нужна помощь
................
Привет,
Приведите, пожалуйста, код для предыдущего бара.
Это может быть использовано в советнике для ограничения выставления ордеров, когда предыдущий бар больше определенной высоты.
С уважением,
SIDDESHСиддеш и другие, кто может помочь:
Код для предыдущего бара приведен ниже:
//на покупку
double indicatorpast = icustom(....................,1);
double indicatornow = icustom(....................,0);
if (close[1]indicatornow) OpenBUY();
if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();
но при таком подходе эксперт открывает позиции не только когда цена пересекает индикатор, он открывает позицию и выше индикатора. Я хочу, чтобы эксперт открывал позицию ТОЛЬКО при пересечении индикатора, поэтому я попробовал так:
//на покупку
double indicatorpast = icustom(....................,1);
double indicatornow = icustom(....................,0);
if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();
if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();
Но это утверждение не выполняется.
Вы знаете, что происходит? Потому что я думаю, что в этом утверждении нет ошибок.
Вопрос в том, почему не происходит открытие в точной точке пересечения, когда close[0]==Indicatornow? Если бы функция была с ==, мы бы предотвратили открытие ордеров выше точки пересечения между индикатором и закрытием текущего бара, но функция не работает с таким типом связи между переменными.
Люди, которые могут помочь:
Ниже приведен код для предыдущего бара:
//на покупку
double indicatorpast = icustom(....................,1);
double indicatornow = icustom(....................,0);
if (close[1]indicatornow) OpenBUY();
if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();
но при таком подходе эксперт открывает позиции не только когда цена пересекает индикатор, он открывает позицию и выше индикатора. Я хочу, чтобы эксперт открывал позицию ТОЛЬКО при пересечении индикатора, поэтому я попробовал так:
//на покупку
double indicatorpast = icustom(....................,1);
double indicatornow = icustom(....................,0);
if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();
if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();
Но это утверждение не выполняется.
Вы знаете, что происходит? Потому что я думаю, что в этом утверждении нет ошибок.
Вопрос в том, почему не происходит открытие в точной точке пересечения, когда close[0]==Indicatornow? Если бы функция была с ==, мы бы предотвратили открытие ордеров выше точки пересечения между индикатором и закрытием текущего бара, но функция не работает с таким типом связи между переменными.
Экспериментировали ли вы с такой же проблемой? Кто-нибудь знает, как ее решить?
Спасибо, еще раз.
Люди, которые могут помочь:
Код для предыдущего бара приведен ниже:
//на покупку
double indicatorpast = icustom(....................,1);
double indicatornow = icustom(....................,0);
if (close[1]indicatornow) OpenBUY();
if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();
но при таком подходе эксперт открывает позиции не только когда цена пересекает индикатор, он открывает позицию и выше индикатора. Я хочу, чтобы эксперт открывал позицию ТОЛЬКО при пересечении индикатора, поэтому я попробовал так:
//на покупку
double indicatorpast = icustom(....................,1);
double indicatornow = icustom(....................,0);
if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();
if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();
Но это утверждение не выполняется.
Вы знаете, что происходит? Потому что я думаю, что в этом утверждении нет ошибок.
Вопрос в том, почему не происходит открытие в точной точке пересечения, когда close[0]==Indicatornow? Если бы функция была с ==, мы бы предотвратили открытие ордеров выше точки пересечения между индикатором и закрытием текущего бара, но функция не работает с таким типом связи между переменными.
Экспериментировали ли вы с такой же проблемой? Кто-нибудь знает, как ее решить?
Спасибо, еще раз.Потому что вы ищете точное соответствие между возвращаемым 8-значным значением с плавающей точкой и ценой - они почти никогда не будут равны с подобным разрешением. Просто проверьте условие "больше-меньше" или "меньше-меньше".
программное обеспечение для свитчинга
привет ребята, мне нужно перевести этот индикатор или торговую относительную систему на язык mql, потому что он работает на metatrader 4. Я меняю брокера и программное обеспечение, может ли кто-нибудь помочь мне?
{Расчет расширенной регрессионной скользящей средней}
{BEGINNING}
{"-HShift" - BARS FORWARDS}
DataBars:= Ref(Price,- HShift);
e1:= Mov(DataBars,PeriodMA,TypeMA);
e2:= Mov(e1,PeriodMA,TypeMA);
e3:= Mov(e2,PeriodMA,TypeMA);
e4:= Mov(e3,PeriodMA,TypeMA);
e5:= Mov(e4,PeriodMA,TypeMA);
e6:= Mov(e5,PeriodMA,TypeMA);
c1:= -b*b*b;
c2:= 3*b*b+3*b*b*b;
c3:= -6*b*b-3*b-3*b*b*b;
c4:= 1+3*b+b*b*b+3*b*b;
MV:= c1*e6+c2*e5+c3*e4+c4*e3;
{Расчет времени жизни MV
для устранения искажения начальных значений}
{T3 Moving Average}
e1:= Mov(Pr,PeriodMA1,TypeMA1);
e2:= Mov(e1,PeriodMA1,TypeMA1);
e3:= Mov(e2,PeriodMA1,TypeMA1);
e4:= Mov(e3,PeriodMA1,TypeMA1);
e5:= Mov(e4,PeriodMA1,TypeMA1);
e6:= Mov(e5,PeriodMA1,TypeMA1);
c1:= -b1*b1*b1;
c2:= 3*b1*b1+3*b1*b1*b1;
c3:= -6*b1*b1-3*b1-3*b1*b1*b1;
c4:= 1+3*b1+b1*b1*b1+3*b1*b1;
MA1:= c1*e6+c2*e5+c3*e4+c4*e3;
{Тренд вверх и вниз}
UpTrend:=Mv>=MA1;
DownTrend:=MA1>=Mv;
{Сигналы Long и Short}
Long:= cross(Mv,MA1) и Mv>=MA1;
Short:= cross(MA1,Mv) and MA1>=Mv;
{OpenBuy и CloseBuy}
OpenBuy:= cross(Mv,MA1) и Mv>=MA1;
CloseBuy:= cross(MA1,Mv) and MA1>=Mv;
{OpenSell и CloseSell}
OpenSell:= cross(MA1,Mv) и MA1>=Mv;
CloseSell:= cross(Mv,MA1) and Mv>=MA1;
привет ребята, мне нужно перевести этот индикатор или торговую относительную систему на язык mql, потому что он работает на metatrader 4. Я меняю брокера и программное обеспечение, может ли кто-нибудь помочь мне?
{T3 Moving Average}
e1:= Mov(Pr,PeriodMA1,TypeMA1);
e2:= Mov(e1,PeriodMA1,TypeMA1);
e3:= Mov(e2,PeriodMA1,TypeMA1);
e4:= Mov(e3,PeriodMA1,TypeMA1);
e5:= Mov(e4,PeriodMA1,TypeMA1);
e6:= Mov(e5,PeriodMA1,TypeMA1);
c1:= -b1*b1*b1;
c2:= 3*b1*b1+3*b1*b1*b1;
c3:= -6*b1*b1-3*b1-3*b1*b1*b1;
c4:= 1+3*b1+b1*b1*b1+3*b1*b1;
MA1:= c1*e6+c2*e5+c3*e4+c4*e3;
Все эти коды похожи, вы можете начать с кода T3
Global, поместите это перед init()
In the order placement and/or order close stuff, wrap it in this:
{
if blah blah blah, gimme pips // not actual functions but you get the idea
if blah blah blah, close orders // um
}Common function outside main loop:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}Спасибо nitty1 за помощь. Я попробую это.
Также спасибо waltini и devil2000. Теперь я должен разобраться с этим.
Код счета для работы на демо свободно
Здравствуйте:
Может ли кто-нибудь подсказать мне, какой код можно вставить, чтобы советник, имеющий код безопасности счета, мог свободно работать на демо-счете, чтобы пользователи могли протестировать его перед запуском в реальном времени?
Возможно ли это вообще?
Спасибо
Привет:
Может ли кто-нибудь подсказать мне, какой код можно вставить, чтобы советник, в котором есть код безопасности счета, мог свободно работать на демо-счете, чтобы пользователи могли протестировать его перед запуском в реальном времени?
Возможно ли это вообще?
СпасибоИз метаредактора:
Возвращает TRUE, если эксперт работает на демо-счете, иначе возвращает FALSE.
Кодирование "состояния тренда" с помощью StepMA
Условие покупки:
StepMA (с цветовым режимом: 2) является "длинным"
Стохастик пересекает отметку 20 снизу вверх
Условие продажи:
StepMA (с цветовым режимом: 2) - "короткая"
Стохастик пересекает 80 сверху вниз
double StochCurrent = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 0);
double StochPrevious = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 1);
double TrendLong = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0, 0.0, false, 2, 0, 1, Bar + 0);
double TrendShort = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0, 0.0, false, 2, 0, 2, Bar + 0);
Покупать, если:
TrendLong && StochCurrent > 20 && StochPrevious < 20
Продавать, если:
TrendShort && StochCurrent 80
Может ли кто-нибудь помочь мне с кодом "Trend Condition" в приведенном выше примере, он не работает. Я пытался вызвать буфер 1 и буфер 2 для длинного и короткого режима, но я не понимаю код этого индикатора. Заранее спасибо!