Yura Vakulenko Спасибо
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
привет всем. как будет кусок код отвечающий за условие , вход-выход советника по стрелочному индикатору(без исходника) ? заранее спасибо
Изменено 23 декабря, 2014 пользователем abuu
Вот кусок кода из подобного советника:
привет всем. как будет кусок код отвечающий за условие , вход-выход советника по стрелочному индикатору(без исходника) ? заранее спасибо
bufBuy = iCustom(NULL,0,"beforexguru_orig",Sensitivity, false, false,3,1);
bufSell = iCustom(NULL,0,"beforexguru_orig",Sensitivity, false, false,4,1);
if (bufBuy != EMPTY_VALUE) ordOpen(OP_BUY);
if (bufSell != EMPTY_VALUE) ordOpen(OP_SELL);
Стрелки в разных буферах. Значения в этих буферах либо пусто (EMPTY_VALUE) или цена где рисовать стрелку.
pavlovost У Вас ошибки в коде.
1. Вместо Start используйте OnTick
2. Это: HourStart == TimeCurrent() работать не будет, т.к. HourStart это целое = 10, а TimeCurrent datetime = 16587456.
Вам надо писать так: (HourStart TimeHour(TimeCurrent()))
pavlovost У Вас ошибки в коде.
1. Вместо Start используйте OnTick
2. Это: HourStart == TimeCurrent() работать не будет, т.к. HourStart это целое = 10, а TimeCurrent datetime = 16587456.
Вам надо писать так: (HourStart TimeHour(TimeCurrent()))
А это будет работать? (HourEnd == TimeHour(TimeCurrent()))
И OnTick использовать вместо Start, это для чего? Ведь функция Start вроде основная для работы советника.
Спасибо за участие и извините, если вопросы глупые.
Yura Vakulenko я чего то не вкурил твои правила входа в и выхода в рынок по этому индюку.Вот что он показывает.как с ним работать я пока не понял ?
Добавлено: 22-12-2014 17:39:48
Yura Vakulenko,я понаблюдал за индикатором и понял что за продажу отвечает буфер 1, за пакупку буфер 3. и нулевой сигналка. Значит на пакупку входим когда открывается новый бар и есть сигналы от трех буферов, то есть Сигнальный больше - 100, буфер 1 со смещением в 1 бар, то же больше -100,и буфер 1 со смещением в 2 бара то же больше -100. Открываем ордер. Далее если поступают сигналы пока нет противоположного открываем сетку ордеров с использованием мартина.При появлении противоположного сигнала закрываем сетку ордеров. Тут же окрываем в обратную сторону ,все повторяется до противоположного сигнала индюка. Я правильно понял идею твоей системы ?
да, ты все правильно понял. Вышло что0то?
Добавлено: 23-12-2014 13:25:10
Вот кусок кода из подобного советника:
привет всем. как будет кусок код отвечающий за условие , вход-выход советника по стрелочному индикатору(без исходника) ? заранее спасибо
bufBuy = iCustom(NULL,0,"beforexguru_orig",Sensitivity, false, false,3,1);
bufSell = iCustom(NULL,0,"beforexguru_orig",Sensitivity, false, false,4,1);
if (bufBuy != EMPTY_VALUE) ordOpen(OP_BUY);
if (bufSell != EMPTY_VALUE) ordOpen(OP_SELL);
Стрелки в разных буферах. Значения в этих буферах либо пусто (EMPTY_VALUE) или цена где рисовать стрелку.
pavlovost У Вас ошибки в коде.
1. Вместо Start используйте OnTick
2. Это: HourStart == TimeCurrent() работать не будет, т.к. HourStart это целое = 10, а TimeCurrent datetime = 16587456.
Вам надо писать так: (HourStart TimeHour(TimeCurrent()))
Oli, можешь скинуть советник, который ты уже навоял на моем индикаторе? )) Ну это же не хорошо!)
Изменено 23 декабря, 2014 пользователем Yura Vakulenko
Заменил функцию OnInit на init. Стер OnDeinit и OnTick - и все заработало. В этом была проблема.
Здравствуйте!
В ходе изучения индикаторных функций на MQL возникли следующие вопросы:
[list type=decimal]
Здравствуйте!
В ходе изучения индикаторных функций на MQL возникли следующие вопросы:
[list type=decimal]В окне индикаторов в терминале MT4 можно установить необходимые уровни и, в зависимости от значения индикатора относительно уровня, принимать решения по торговле. Можно ли получить доступ к уровням в MQL4? Каким образом можно применять индикаторы (к примеру, сглаживающее среднее MA) к данным другого индикатора (к примеру, RSI)?
1. Читай
2. Здесь варианты. Вы применять сглаживание к индюку в терминале будете? или в советнике? или в польз. индикаторе?
[list type=decimal]
Есть встроенные средства, но всё-таки велосипед будет быстрее. Три пути:
- Сглаживающую среднюю к RSI планирую применять в советнике. Есть мысль записать значения RSI в массив и дальше использовать эти значения для построения MA. Но это изобретение велосипеда. Может, есть какие-нибудь встроенные средства?
1. Открываете индюк РСИ, добавляете параметр МАпериод и 1 буфер. После расчёта основного буфера вставляете расчёт со сглаживанием. В сове импортируете через иКустом() 2-й буфер модифицированного РСИ. (я так делал)
2. В сове копируете в массив значения РСИ и сглаживаете с помощью этой функции iMAOnArray()
3. В сове по-барно получаете значение РСИ и сразу применяете экспоненциальное сглаживание (без дополнительного копирования в массив) типа: maRSI = (newRSI + maRSI*(МАпериод-1))/МАпериод;. Имхо данный вариант лучше №2.
Вот кусок кода из подобного советника:
привет всем. как будет кусок код отвечающий за условие , вход-выход советника по стрелочному индикатору(без исходника) ? заранее спасибо
bufBuy = iCustom(NULL,0,"beforexguru_orig",Sensitivity, false, false,3,1);
bufSell = iCustom(NULL,0,"beforexguru_orig",Sensitivity, false, false,4,1);
if (bufBuy != EMPTY_VALUE) ordOpen(OP_BUY);
if (bufSell != EMPTY_VALUE) ordOpen(OP_SELL);
Стрелки в разных буферах. Значения в этих буферах либо пусто (EMPTY_VALUE) или цена где рисовать стрелку.
pavlovost У Вас ошибки в коде.
1. Вместо Start используйте OnTick
2. Это: HourStart == TimeCurrent() работать не будет, т.к. HourStart это целое = 10, а TimeCurrent datetime = 16587456.
Вам надо писать так: (HourStart TimeHour(TimeCurrent()))
спасибо и еще как прикрутить мартингейл к советнику ? заранее спасибо
Мартин разный бывает. Например после закрытого убытка - увеличение лота (множителем или слагаемым). Или в сетке при незакрытой убыточной позе усреднение с увеличением/уменьшением лота. Вам какой?
спасибо и еще как прикрутить мартингейл к советнику ? заранее спасибо
Вопрос, как быть с переменными GlobalVariables, если нужно сохранять все типы значений: int, double и bool, а они могут иметь только тип double. Булевые ещё можно получить обходным путём по условиям, но как быть с целочисленными, если например нужно сохранить туда тикет. Можно конечно после извлечения приводить к нужному типу, но не возникнет ли при этом глюков. В общем прошу подсказать, как правильно и безглючно это устроить?
Мартин разный бывает. Например после закрытого убытка - увеличение лота (множителем или слагаемым). Или в сетке при незакрытой убыточной позе усреднение с увеличением/уменьшением лота. Вам какой?
спасибо и еще как прикрутить мартингейл к советнику ? заранее спасибо
после убыточного сделка советник увеличивал лот. например в два раза. как это сделать ? заранее спасибо
Приводи к нужному типу через: тикет = (int)глобтикет; глючить не будет.
Вопрос, как быть с переменными GlobalVariables, если нужно сохранять все типы значений: int, double и bool, а они могут иметь только тип double. Булевые ещё можно получить обходным путём по условиям, но как быть с целочисленными, если например нужно сохранить туда тикет. Можно конечно после извлечения приводить к нужному типу, но не возникнет ли при этом глюков. В общем прошу подсказать, как правильно и безглючно это устроить?
Но, по большому счёту, это нужно только если в терминале несколько сов работающих совместно. Если сова одна, необходимости в глобальных переменных нет.
Добавлено: 27-12-2014 12:23:24
после убыточного сделка советник увеличивал лот. например в два раза. как это сделать ? заранее спасибо
Самый оптимальный вариант включает несколько шагов:
1. При открытии ордера сохраняете его тикет.
2. Проверяете наличие открытых ордеров. Как только всё закрылось -
3. Смотрите по тикету закрытый профит, если 4. Умножаете лот закрытого ордера на множитель.
5. Снова в бой!
Есть мене оптимальный способ, через исследование истории закрытых ордеров, но этот способ посложнее будет. имхо.
Изменено 27 декабря, 2014 пользователем 0ll
Подскажите для чего нужны и PositionOpen и Buy с Sell в классе CTrade?
Суть одна же вроде. Может скорость выполнения или есть какие-то параметры, которые есть в одном, но нет в другом?
Стесняюсь спросить: Вы этот класс где увидели? если на этом форуме, то может Вам написать в соответствующую ветку?
Вот я бы рад Вам помочь, но не знаю о чём речь...
Вот здесь увидел:
mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade
Это мкл5. к сожалению я не большой спец в этом вопросе. Мое имхо: будет работать практически одинаково.
Для компетентных ответов Вам надо обратиться к разработчику класса - метаквотам.
Здравствуйте Уважаемые форумчане.
Появилась идея создать индикатор на основе стандартного Volumes, вот только язык mql уж очень тяжело дается мне.
Пожалуйста оцените идею и ее реализацию. (Мне и вправду показалось это интересным).
Идея: Суть индикатора измерить сколько пунктов проходит цена на падающем объеме и сколько на растущем. Обновление данных должно проходить по закрытию свечи. Старт расчетов берется с начала падающего и растущих объемов по индикатору Volumes.
На рисунке я выделил это вертикальными линиями. То есть перерасчет индикатор ведет после смены падающего объема на растущий и наоборот. В синий квадрат нарисовал пример, как мог бы выглядеть такой индикатор.
Такая идея и даже более продвинутые уже реализованы. массово. Конечно я не отговариваю от очередной реализации - это даже полезно.
искал... весь интернет облазил, не нашел ничего даже схожего с этим(( Может подскажите где копать? Вы считаете это не интересным?
Это интересно, сам делал, даже бота делал на этом. Самый доступный индюк On Balance Volume который доступен в Вашем терминале.
искал... весь интернет облазил, не нашел ничего даже схожего с этим(( Может подскажите где копать? Вы считаете это не интересным?
Я нашел сегодня индикатор где просто в пунктах размер свечи, а вот именно то чего хочу пока нету. Чтож буду думать над реализацией. Что можете сказать про реализацию идеи, это сложно? Спасибо за советы.
Помогите решить проблемку: Пишу советник по внешнему индикатору, не получается получить значения из буфферов.
1. функция iCustom не помогает, значения всегда 0
void OnTick()
{
double SignalBuy=iCustom(NULL,0,"indikator",0,0);
double SignalSell=iCustom(NULL,0,"indikator",1,0);
Alert(SignalBuy+" "+SignalSell);
}
2. На графике рисуются стрелки, но нет ниодного объекта, по которому можно было бы открывать ордера.
Какие есть ещё пути решения?
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем