Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Предотвращение переторговки
Привет всем,
Я протестировал свой советник, используя метод всех тиков на графике H4, используя MACD кросс для инициирования ордеров (среди прочих), и тестер стратегии открывает около 200 позиций в первые несколько минут, поэтому после некоторого чтения я понял, что мне нужно ограничить количество сделок, которые он размещает, в моей системе он не должен размещать более 1 сделки каждые 4 часа, потому что я жду закрытия свечи перед этим, используя iMACD(.... PRICE_CLOSE...) и смещаю его на 0 для MACDMainCurrent & MACDSymbolCurrent и 1 для MACDMainPrevious & MACDSymbolPrevious.
Мои глобальные переменные следующие:
string hasOrderedGV = "has_ordered_GV";
string barsGV = "bars_GV";
И я вставил этот код перед тем, как мой советник проверяет наличие длинных или коротких позиций:
//--- Определить, размещен ли уже ордер на временном блоке H4
if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Bars))
{
GlobalVariableSet(hasOrderedGV,false);
GlobalVariableSet(barsGV,Bars);
}
//--- Проверка возможности длинной позиции (BUY)
if (GlobalVariableGet (hasOrderedGV, false))
{
if ... (здесь я фактически проверяю MACD кросс среди других индикаторов).
Затем, если ордер открылся успешно:
if (Ticket > 0)
{
GlobalVariableSet(hasOrderedGV,true);
{
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), GetTPPriceShort(SLPriceShort, RiskRewardRatio), OrderExpiration(), Green);
и т.д. и т.п.
Может ли кто-нибудь подсказать мне, правильно ли я поступаю? Я не знаю, может быть, есть более эффективный или точный способ сделать это? Спасибо.
...
Почему бы вам просто не посчитать, сколько ордеров уже открыл ваш советник, и если он уже открыл ордер, не открывать новый ордер?
Просто идея (и обычный и самый простой способ ограничения количества ордеров, открываемых советником).
Всем привет,
Я протестировал свой советник по методу all ticks на графике H4, используя MACD cross для инициирования ордеров (среди прочего), и тестер стратегии открывает около 200 позиций в первые несколько минут, поэтому после некоторого чтения я понял, что мне нужно ограничить количество сделок, которые он размещает, в моей системе он не должен размещать более 1 сделки каждые 4 часа, потому что я жду закрытия свечи перед этим, используя iMACD(.... PRICE_CLOSE...) и смещаю его на 0 для MACDMainCurrent & MACDSymbolCurrent и 1 для MACDMainPrevious & MACDSymbolPrevious.
Мои глобальные переменные следующие:
string hasOrderedGV = "has_ordered_GV";
string barsGV = "bars_GV";
И я вставил этот код перед тем, как мой советник проверяет наличие длинных или коротких позиций:
//--- Определить, размещен ли уже ордер на временном блоке H4
if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Bars))
{
GlobalVariableSet(hasOrderedGV,false);
GlobalVariableSet(barsGV,Bars);
}
//--- Проверка возможности длинной позиции (BUY)
if (GlobalVariableGet (hasOrderedGV, false))
{
if ... (здесь я фактически проверяю MACD кросс среди других индикаторов).
Затем, если ордер открылся успешно:
if (Ticket > 0)
{
GlobalVariableSet(hasOrderedGV,true);
{
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), GetTPPriceShort(SLPriceShort, RiskRewardRatio), OrderExpiration(), Green);
и т.д. и т.п.
Может ли кто-нибудь сказать мне, правильно ли я поступаю? Я не знал, может быть, есть более эффективный или точный способ сделать это? Спасибо.Просто потому, что мой советник обычно имеет несколько открытых позиций одновременно; поэтому я не могу использовать, скажем,
if (CountedOrders > 5)
Break;
или что-то в этом роде, потому что я не знаю, сколько позиций будет открыто в любой момент времени. Мне нужно связать это со временем, о котором я думаю.
Я прикрепляю этот советник к моему 5-значному счету mt4... Но он не открывает ни одной сделки.
пожалуйста, помогите мне
Пожалуйста, мне нужно отредактировать советника, чтобы он перемещал стоплосс в 3 шага.
У этого советника уже есть возможность безубытка, но я хочу, чтобы советник перемещал мой
стоплосс от первой точки безубыточности на +20 пунктов, когда моя прибыль достигает
+27 пунктов и снова переместить его на +40 пунктов, когда прибыль достигнет +50 пунктов и даже больше, если это возможно.
больше, если возможно.
Привет, Младен,
Спасибо за предупреждение! Мне уже удалось решить эту проблему.
Кстати, не знаете ли Вы, что означает функция MODE и SHIFT в iStochasticdo или есть ли место, где можно получить больше информации? Я читал документацию на сайте mql4, но она не имеет смысла для меня. Объяснение, которое они дают, слишком краткое.
Например.
iStochastic(NULL, 0, 3, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Current + 0);
iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_MAIN, 0);
iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Current + 1);
Что делает текущий + 0 и т.д.?
Спасибо и пожелания
Терранс
Терранс Это функция. Поместите ее в конец вашего эксперта и разместите вызовы к ней там, где вы считаете нужным проверить, открыт ли уже ордер на текущем баре.
Здравствуйте, не мог бы кто-нибудь подсказать мне, где я ошибаюсь, пожалуйста? Я получаю код ошибки ')' неправильное количество параметров в строке, выделенной красным - но все параметры складываются...
if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Bars))
{
GlobalVariableSet(hasOrderedGV,false);
GlobalVariableSet(barsGV,Bars);
}
//--- Проверка возможности длинной позиции (BUY)
if (GlobalVariableGet (hasOrderedGV, false)) Thanks
...
Терранс
MODE_MAIN означает, что вы считываете значение стохастической линии. MODE_SIGNAL означает, что вы считываете значение сигнальной линии стохастика.
Что касается SHIFT: он одинаков для всех индкаторов (даже пользовательских). Например: SHIFT=0 означает текущее значение баров, SHIFT=1 означает значение первого закрытого бара и так далее...
Привет Младен,
Спасибо за предупреждение! Мне уже удалось решить эту проблему.
Кстати, не знаете ли вы, что означает функция MODE и SHIFT в iStochasticdo, или есть ли место, где можно найти больше информации? Я читал документацию на сайте mql4, но она не имеет смысла для меня. Объяснения, которые они дают, слишком кратки.
Например.
iStochastic(NULL, 0, 3, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Current + 0);
iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_MAIN, 0);
iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Current + 1);
Что делает текущий + 0 и т.д.?
Спасибо и пожелания
Терранс...
Ошибка заключается в том, что GlobalVariableGet() имеет только один параметр (имя переменной). Вам не нужен второй параметр ("false", который вы имеете в вызове функции)
Здравствуйте, не мог бы кто-нибудь подсказать мне, где я ошибаюсь? Я получаю код ошибки ')' неправильное количество параметров в строке, выделенной красным - но все параметры складываются...
if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Bars))
{
GlobalVariableSet(hasOrderedGV,false);
GlobalVariableSet(barsGV,Bars);
}
//--- Проверка возможности длинной позиции (BUY)
если (GlobalVariableGet (hasOrderedGV, false)) СпасибоЯ изменил код на такой, и он, по крайней мере, не содержит ошибок - это нормально?
if (GlobalVariableGet (hasOrderedGV) == false)