Помощь в кодировании - страница 36

 

Нужна помощь в разработке СТОПЛОССА

mladen:
kemal44

Вот ссылка на тему, где объясняется, как использовать функции в коде : https://www.mql5.com/en/forum/173005

Там очень хорошо объясняется (и больше, чем я могу объяснить в одном посте), как их использовать

Уважаемый Младен,

При бэктестинге, BreakEven-Stoplos вроде работает, но когда на реальном счете, насколько я вижу, он не работает должным образом,

Не могли бы Вы взглянуть на файл эксперта, а затем сказать мне, что с ним не так?

заранее спасибо

Файлы:
xpexpert.txt  24 kb
 

...

kemal

Проверьте во вкладке эксперты терминала, какая ошибка выписывается.

Я не могу ее проверить, так как в ней отсутствует логика входа (она никогда не устанавливает BuyCondition или SellCondition в true, как написано).

kemal44:
Уважаемый Младен,

При бэктестинге BreakEven-Stoplos вроде работает, но на реальном счете, насколько я вижу, он не работает должным образом,

Не могли бы вы взглянуть на файл эксперта, а затем сказать мне, что с ним не так?

заранее спасибо
 
mladen:
kemal

Проверьте во вкладке экспертов терминала, какая ошибка выписана.

Я не могу проверить это, так как отсутствует логика входа (он никогда не устанавливает BuyCondition или SellCondition в true так, как это написано)

вот эксперт с логикой покупки продажи ,

Проблема в безубыточном стоп-лоссе.

Я хочу сделать безубыточным то, что если прибыль подскочит на 5 пунктов от точки входа, стоп-лосс должен быть установлен на точку входа, чтобы защитить портфель,

заранее спасибо

Файлы:
xpexpert_1.txt  24 kb
 

...

Поскольку минимальное расстояние стоп-лосса зависит от символа к символу, от брокера к брокеру и может меняться от момента к моменту, перед установкой безубытка добавьте проверку, которая будет выглядеть примерно так (это общий пример, когда ордер является ордером на покупку, вы можете написать его очень похожим на ордер на продажу) :

double minimalDistance = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

if (OrderType()=OP_BUY && (Bid-OrderOpenPrice())>=minimalDistance)

... your code for setting stop loss

PS: все это справедливо (согласно последним изменениям - начиная с билда 419 и выше) в случаях, когда ваш брокер не является ECN брокером. Если ваш брокер является ECN брокером, то в этом случае MarketInfo(Symbol(),MODE_STOPLEVEL) в последних билдах будет возвращать 0, и вам придется немного поэкспериментировать, чтобы настроить минимальное расстояние (если оно есть) стоп-лосса.

kemal44:
Вот эксперт с логикой покупки-продажи,

Проблема заключается в безубыточном стоп-лоссе.

Я хочу сделать безубыточным то, что если прибыль подскочит на 5 пунктов от точки входа, стоп-лосс должен быть установлен на точку входа, чтобы защитить портфель,

заранее спасибо
 
mladen:
Поскольку минимальное расстояние стоп-лосса зависит от символа к символу, от брокера к брокеру и может меняться от одного момента к другому, перед установкой безубытка, добавьте проверку, которая будет выглядеть примерно так (это общий пример, когда ордер является ордером на покупку, вы можете написать его очень похожим на ордер на продажу):
double minimalDistance = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

if (OrderType()=OP_BUY && (Bid-OrderOpenPrice())>=minimalDistance)

... your code for setting stop loss

PS: все это справедливо (согласно последним изменениям - начиная с билда 419 и выше) в случаях, когда ваш брокер не является ECN брокером. Если ваш брокер является ECN брокером, то в этом случае MarketInfo(Symbol(),MODE_STOPLEVEL) в последних билдах вернет 0, и вам придется немного поэкспериментировать, чтобы настроить минимальное расстояние (если оно есть) стоп-лосса.

Спасибо;

Расстояние - хорошая идея,

Я понятия не имею о правилах ECN брокеров, мой брокер - местная компания.

 

...

kemal44

Из вашего брокера - попробуйте следующее: простой способ проверки - попробовать открыть ордер вручную, но когда вы это сделаете, попробуйте установить стоп-лосс и/или тейк-профит. Если эти поля отключены (как на картинке ниже) в диалоге открытия ордера или какое бы значение кроме 0 вы не установили в них, вы получите ошибку, значит ваш брокер является брокером типа "ECN / STP".

kemal44:
Спасибо;

Расстояние - хорошая идея,

Я понятия не имею о правилах ECN брокеров, мой брокер - местная компания.
Файлы:
order_open.gif  22 kb
 
mladen:
kemal44

Из вашего брокера - попробуйте следующее: простой способ проверки - попробовать открыть ордер вручную, но при этом попробовать установить стоп-лосс и/или тейк-профит. Если эти поля отключены (как на картинке ниже) в диалоге открытия ордера или какое бы значение кроме 0 вы не установили в них, вы получите ошибку, то ваш брокер является брокером типа "ECN / STP".

Мои торговые окна точно такие же, как на картинке выше .Я понял, что мой брокер относится к типу "ECN / STP" .

спасибо

В то же время, можем ли мы получить каналы (StdDev и т.д.), предоставляемые MT4, автоматически на нашем графике с помощью индикатора или кода на основе ea, я понятия не имею, как это закодировать, не могли бы вы помочь мне получить пример кода для этого?

заранее спасибо

 

...

kemal44

Я не уверен, что понял вопрос о "каналах", но позвольте мне попробовать:

Вы можете использовать любой встроенный индикатор metatrader, используя функции, которые они предоставляют. Например, для стандартного отклонения синтаксис следующий:

[[.[

[/TR]

[TR]

[

[TR]

[TD]ma_method

[TD] - [TD="width: 100%"]метод МА. из.

[TR]

[TD]applied_price[TD] - [TD="width: 100%"]Применяемая цена. Это может быть любое из значений перечисления Applied price.

[TR]

[TD]shift[TD] - [TD="width: 100%"]Индекс значения, взятого из буфера индикатора (сдвиг относительно текущего бара на заданное количество периодов назад).
double iStdDev(

[/TD]

string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)[/TD]

[/TR]

[/TABLE]

Вычисляет индикатор стандартного отклонения и возвращает его значение.

Параметры:

[TABLE="class:docparams"]

символ[/TD] -
/TD]Символ, данные которого должны быть использованы для расчета индикатора. NULL означает текущий символ.[/TD]

[/TR]

timeframe[/TD] -
/TD]Таймфрейм. Это может быть любое из значений перечисления Timeframe 0 означает текущий таймфрейм графика.[/TD]

[/TR]

ma_period[/TD] -
/TD]период МА.ma_shift -
TD="width: 100%"]сдвиг МА.
Это может быть любое значение
перечисления методов скользящей средней

Образец:

double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);

_________________________________________

Аналогично для других встроенных индикаторов (эти :

Таким образом, вы можете использовать любой из них в качестве вызова функции из другого индикатора, скрипта или эксперта.

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

kemal44:
Мои торговые окна точно такие же, как на картинке выше. Я понял, что мой borker имеет тип "ECN / STP".

спасибо

В то же время, можем ли мы получить каналы (StdDev и т.д.), предоставляемые MT4, автоматически на нашем графике с помощью индикатора или кода, основанного на ea, я понятия не имею, как это закодировать, не могли бы вы помочь мне получить пример кода для этого?

заранее спасибо
 
mladen:
kemal44

Я не уверен, что понял вопрос о "каналах", но попробую:

Вы можете использовать любой встроенный индикатор metatrader, используя функции, которые они предоставляют. Например, для стандартного отклонения синтаксис следующий:

.

[/TR]

[TR]

[TD="width: 100%"]сдвиг МА.

[TR]

[TD]ma_method[TD] - [TD="width: 100%"]метод МА. из.

[TR]

[TD]applied_price[TD] - [TD="width: 100%"]Применяемая цена. Это может быть любое из значений перечисления Applied price.

[TR]

[TD]shift[TD] - [TD="width: 100%"]Индекс значения, взятого из буфера индикатора (сдвиг относительно текущего бара на заданное количество периодов назад).
double iStdDev([/TD]string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)[/TD]

[/TR]

[/TABLE]

Вычисляет показатель стандартного отклонения и возвращает его значение.

Параметры:

[TABLE="class:docparams"]

символ[/TD] -[/TD]Символ, данные которого должны быть использованы для расчета индикатора. NULL означает текущий символ.[/TD]

[/TR]

таймфрейм[/TD] -[/TD]Таймфрейм. Это может быть любое из значений перечисления Timeframe0 означает текущий таймфрейм графика.[/TD]

[/TR]

ma_period[/TD] -[/TD]период МА.ma_shift -
Это может быть любое значение
перечисления методов скользящей средней

Образец:

double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);

_________________________________________

Аналогично для других встроенных индикаторов (эти :

Таким образом, вы можете использовать любую из этих функций как вызов функции из другого индикатора, скрипта или эксперта.

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

Под каналом Sdv я подразумеваю канал, как показано ниже,

Кстати, спасибо за быстрый ответ.

Файлы:
xxx.gif  13 kb
 

Советник с параболическим SAR

Есть ли у кого-нибудь идея торговли с параболическим SAR. Я хочу сделать советника с Parabolic SAR, но до сих пор я не получил хорошего результата. Так что если у вас есть идея с Parabolic SAR, я сделаю его лучше. Последнее, что я сделал, может принести прибыль, но Equity никогда не совпадает с балансом.

Файлы:
Причина обращения: