Спрашивайте! - страница 45

 
majlisb:
Привет, профессионал

например, в Ea мы получаем сигнал и хотим разместить ордер BUYSTOP/SellStop на высоте сигнального бара,

Мы должны дождаться открытия нового бара, чтобы найти высоту сигнального бара, как мы можем это сделать? (любая статья, пост, советник, , , , )

Спасибо

Если вы считаете 3 бара для сигнала, теперь считайте 4 бара просто да? У Codersguru есть хорошая статья о другом способе на сайте mql4

 

У меня есть вопрос:

Это может потребовать дополнительного программирования, которое невозможно сделать на MT. Не уверен. В принципе, у меня есть советник, который и в бэктесте, и в форвард-тесте хорошо работает в MT с данными Alpari. На данных других брокеров часто возникают расхождения между сделками. Иногда, если сделка открыта на Alpari, она может быть не открыта у другого брокера или наоборот. Можно ли написать какой-то скрипт, который будет исполнять сделки на платформе моего брокера сразу после исполнения сделки на платформе Альпари?

Например, я получаю сигнал на покупку 2 лотов кабеля по 1.9450 на Alpari. Сделка исполняется. Тот же самый ордер вводится на платформе моего реального брокера на долю секунды позже. Когда стоп или уровень t/p достигается на Alpari и сделка закрывается, эта же сделка закрывается на платформе моего реального брокера.

Это не скальпинговая система, поэтому если между двумя ценами будет расхождение в 2 пункта, это не страшно. Кто-нибудь знает, возможно ли это, и если да, то как мне это сделать? Спасибо.

 

Помогите с MTF xpMA

Codersguru,

Не могли бы вы проверить возможности MTF в xpMA?

Большое спасибо,

Pippt

Пожалуйста, посмотрите пост #364 на:

https://www.mql5.com/en/forum/173574

 

простой вопрос, но я не могу понять. какая математическая функция в mql используется для округления двойного значения?

например, у меня есть 0.69, а я хочу, чтобы результат был .70. или если значение равно .63, а результат будет .60.

mathceiling() и mathfloor() не справляются с этой задачей.

 

Вопрос для начинающих

Привет всем...

Благодаря CodersGuru и его отличному курсу, я пытаюсь изучить MQL4

путем преобразования индикатора, который я написал на MQL3.

Я столкнулся с проблемой и был бы признателен за помощь... если бы кто-нибудь мог сказать мне, что я делаю неправильно в следующем коде.

Проблема заключается в двух операторах If... в строках 78 и 79

//+------------------------------------------------------------------+

//| First_Indicator.mq4 |

//| Codersguru |

//| https://www.mql5.com/en/forum |

//+------------------------------------------------------------------+

#property copyright "Codersguru"

#property link "https://www.forex-tsd.com"

#property indicator_chart_window

#property indicator_buffers 8

#property indicator_color1 Red

//---- буферы

double ExtMapBuffer1[];

//----------------- Объявления переменных ----------------------+

int pos=0;

double Pivot_Point = 0;

double new_Pivot_Point =0;

double prev_Pivot_Point=0;

double Pivot_Factor=0;

double LastClose=0;

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- индикаторы

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);

SetIndexBuffer(0,ExtMapBuffer1);

string short_name = "Pivot Line";

IndicatorShortName(short_name);

return(1);

}

//+------------------------------------------------------------------+

//| Функция деинициализации индикатора Custor |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция итерации индикатора |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//---- проверка на возможные ошибки

if (counted_bars<0) return(-1);

//---- последний подсчитанный бар будет пересчитан.

if (counted_bars>0) counted_bars--;

int cnt=Bars-counted_bars;

//---- основной цикл вычислений

while(cnt >= 0)

{

LastClose = Close[cnt];

If (LastClose > Pivot_Point) //Line 78

If(new_Pivot_Point > prev_Pivot_Point) //Строка 79

{

prev_Pivot_Point = new_Pivot_Point;

Pivot_Point = new_Pivot_Point;

}

ExtMapBuffer1[cnt]= Pivot_Point ;

cnt--;

}

return(0);

}

Вот сообщения компилятора -

---------------------------------------------------------------

'If' - функция не определена .....(78,10)

'If' - ожидается точка с запятой .....(79,13)

'If' - функция не определена ...(79, 13)

'{' - ожидается точка с запятой ....(80, 13)

----------------------------------------------------------------

Что бы я ни делал, я не могу понять, в чем проблема... Я знаю, что это очень просто, но это ускользает от меня...

Спасибо всем, кто может помочь в этом базовом вопросе....

Шеф

P.S. Счастливого, здорового, процветающего Нового года ВСЕМ

 

MQL чувствителен к регистру: используйте "if" вместо "If".

 

WOW... that was Fast....

СПАСИБО ВАМ большое за быстрый ответ... решил это...

ваш ответ очень ценен... удачного нового года...

Шеф

 

MathRound

BluePearl:
простой вопрос, но я не могу его понять. какая математическая функция в mql используется для округления двойного значения?

например, у меня есть 0.69, а я хочу, чтобы результат был .70. или если значение равно .63, а результат будет .60.

mathceiling() и mathfloor() не справляются с этой задачей.

Существует "MathRound(double x)", который округляет значение до ближайшего целого числа; то же самое, что и "MathFloor(x+0.5)", я полагаю. Чтобы получить округление до одного десятичного знака, можно использовать выражение для сдвига/отмены десятичных дробей, например "MathRound(x*10)/10".

 

Как я могу добавить стрелки к прикрепленным, чтобы они показывали вверх и вниз на кресте?

Файлы:
mtf_cross.mq4  5 kb
 

Гистограмма

Ну, вот еще один вопрос, поскольку я продолжаю изучать, как конвертировать с MQL3 на MQL4.....

Я хотел бы закрасить участок графика, который находится между двумя линиями, верхней и нижней. Я не знаю, есть ли какая-нибудь функция для закрашивания участка экрана или нет, поэтому я решил попробовать использовать "Draw_Histogram" в операторе SetIndexStyle(). Но я не совсем понимаю, как она работает. Когда я ее использую, ничего не происходит.

например:

SetIndexStyle(7,DRAW_HISTOGRAM,0,1);

ExtMapBuffer8[cnt]= (Pivot_Point-(Short_Line*Point));

Print("Cnt = ",cnt, "Histo = ",ExtMapBuffer8[cnt], "Calc = ",(Pivot_Point+(Short_Line*Point)));

В журнале выводится правильный cnt, правильный calc, но значение Histo равно нулю.

Я изучил код в индикаторе MACD, безрезультатно, и в индикаторе Heiken-Ashi, и я не могу понять, как это работает. Похоже, что индикатор Heiken-Ashi использует 4 буфера для создания каждой свечи, но я не уверен в этом.

MACD, похоже, использует базовую линию, равную нулю, от которой строится гистограмма, есть ли базовая линия, от которой она начинается? Если да, то как ее установить?

Не мог бы кто-нибудь объяснить, как работает эта функция, чтобы я мог научиться правильно ее кодировать. Если есть функция, которая закрашивает определенный участок экрана, я буду благодарен за любую информацию об этом.

Спасибо всем за вашу любезную помощь....

Искренне,

Главный