Как кодировать? - страница 7

 

Как я понимаю, самый лучший/простой способ сделать это - посмотреть на предыдущий бар, как вы уже сказали. Вы можете опоздать, а можете и нет. Вот что я имею в виду:

Функция Start() обрабатывает каждый тик. MT4, в силу своего дизайна, обрабатывает только время после тика. Это означает, что новый бар не появится на вашем графике до первого тика этого нового бара. Поэтому, когда вы приближаетесь к концу бара, если ваш алерт срабатывает после каждого тика (раздражающий способ), вы получите алерт на последнем тике бара. Если же вы смотрите на предыдущий бар для оповещения (не раздражающий способ), то вы получите оповещение на первом тике нового бара.

Таким образом, в часы с высокой рыночной активностью первый тик нового бара может произойти сразу после закрытия предыдущего бара (по времени). В часы медленного рынка может пройти 20-30 секунд, прежде чем появится новый тик, и MT 4 не покажет вам новый бар, пока не появится первый тик.

Надеюсь, это понятно.

Keris

 

Нужна помощь в кодировании "Техники входа по волатильности стоп"

Volatility Stop рассчитывает волатильность, используя средний диапазон ценового бара. Она рассчитывается путем умножения среднего диапазона на константу. Значение прибавляется к самому низкому закрытию при короткой позиции и вычитается из самого высокого максимума при длинной позиции:

Range = (Range x (N - 1) + High - Low / N)

Short = Lowest Close + Range x C

Long = Highest Close - Range x C

Лучше всего использовать Volatility Stop на сильно трендовых рынках. Это отличная техника входа и в большинстве случаев она превосходит действительные прорывы линий тренда или прорывы каналов. Обратный стоп также служит для количественной оценки риска, связанного с волатильностью. Константы должны находиться в диапазоне от 2,5 до 4,0.

У меня нет личного опыта работы с этим индикатором, но я читал о нем в книге "Fibonacci Ratios with Pattern Recognition".

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

Файлы:
v.s..bmp  962 kb
 

Привет,

посмотрите на это https://www.mql5.com/en/forum/173255

и https://www.mql5.com/en/forum/173255.

Игорь

 

Igorad, большое спасибо, остановка канала Volty - это именно то, что я искал.

 

Пожалуйста, помогите с этим кодом...

Я пытаюсь изучить механизм работы индикатора LSMA_in_color, который я нашел где-то на этом форуме. Следующий код устанавливает цвет сегментов линии индикатора на основе значений в wt[]:

//========== COLOR CODING ===========================================

ExtMapBuffer3[shift] = wt[shift]; //yellow

ExtMapBuffer2[shift] = wt[shift]; //blue

ExtMapBuffer1[shift] = wt[shift]; //red

if (wt[shift+1] > wt[shift])

{

ExtMapBuffer2[shift] = EMPTY_VALUE; //turn blue off

Print ("red ",wt[shift+1]," ",wt[shift]);

}

else if (wt[shift+1] < wt[shift])

{

ExtMapBuffer1[shift] = EMPTY_VALUE; //turn red off

Print ("blue ",wt[shift+1]," ",wt[shift]);

}

else

{

ExtMapBuffer1[shift]=EMPTY_VALUE; //turn red off;

ExtMapBuffer2[shift]=EMPTY_VALUE; //turn blue off;

Print ("yellow ",wt[shift+1]," ",wt[shift]);

}

Я добавил функции Print(), чтобы увидеть фактические значения в трех цветовых условиях - красном, желтом и синем. Похоже, что желтое состояние возникает только тогда, когда wt[shift] == wt[shift+1], но по какой-то причине, когда я запускаю эту функцию, журнал показывает, что она никогда не входит в желтое состояние. Каждая запись в журнале либо красная, либо синяя. На графике явно присутствуют желтые условия - каждый раз, когда он меняется с красного на синий или с синего на красный, он переходит в желтое состояние между ними... Почему он не печатает желтые условия в журнал?

Также, просматривая журнал, я вижу случаи, когда wt[shift] идентичен wt[shift+1], но печатается как красное условие. Как такое может происходить, если красное условие требует, чтобы wt[shift+1] > wt[shift]?

Буду признателен за любую помощь

 

Yessiree, любая помощь вообще.....

 

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

 

код для проверки, была ли последняя [закрытая] сделка выигрышной или проигрышной...

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

Я пробую OrderSelect() и OrderProfit() с HistoryTotal(), используя массив... но OrderProfit, похоже, ссылается на "открытый ордер", так что это не дает мне желаемых результатов.

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

Поэтому мне нужно проверить, к чему привела последняя закрытая сделка, прежде чем изменять количество лотов.

Любая помощь будет принята с благодарностью...

 
fxdk:
Есть ли в mql4 метод для проверки того, принесла ли последняя сделка прибыль или убыток, после ее закрытия?

Я пробую OrderSelect() и OrderProfit() с HistoryTotal(), используя массив... но OrderProfit, кажется, ссылается на "открытый ордер", поэтому он не дает мне желаемых результатов.

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

Поэтому мне нужно проверить, к чему привела последняя закрытая сделка, прежде чем изменять количество лотов.

Буду признателен за любую помощь...

fxdk,

чтобы проверить прибыль последнего закрытого ордера, используйте этот код:

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); //Это прибыль или убыток последнего закрытого ордера.

 
codersguru:
fxdk,

для проверки прибыли последнего закрытого ордера используйте этот код:

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); //Это прибыль или убыток последнего закрытого ордера

Я думаю, что это может быть не всегда верно. У меня была дискуссия со Славой по этому поводу, и кажется, что HISTORY, как и TRADE, не всегда сортируются по дате, и зависит от колонны сортировки, которую вы используете на вкладке терминала. Поэтому надежнее просканировать всю (!) историю и сравнить даты закрытия; затем запомнить последнюю, чтобы в следующий раз не сканировать весь массив.

Причина обращения: