советник - разные вопросы - страница 22

 
Marco vd Heijden:

Пожалуйста, используйте стилизатор, он находится на вкладке "Инструменты".
Я понятия не имею, чего вы пытаетесь достичь, поэтому мне придется догадываться, что вы хотите сделать, а это никогда не бывает хорошо.
Но вы можете посмотреть на пример здесь:
Итак, вы видите, что вы можете использовать ObjectGetDouble напрямую, нет необходимости копировать значение в другой double, потому что объект сам хранит значение, и когда вы перетаскиваете линию, значение автоматически меняется, и будет видно в следующий раз, когда вы прочитаете его.

Прежде всего, спасибо за ваши комментарии, которые показывают мне правильные пути.
Я совершил большуюошибку, потому что я пытался в файле Test.mq4. С тех пор как я начал пробовать в основном mq4 файле. Я получаю правильный путь. Оба этих файла очень разные для меня.

Да, после того, как я попробовал несколько раз ваши примеры, я смог достичь своей цели в этом вопросе. Но я понял, что должен просто использовать OnChartEvent() для создания объектов "HLine" (и некоторых графических).
А затем я просто должен использовать OrderModify() для модификации тейк-профита, причем модификация тейк-профита должна следовать за объектом "HLine". (Во-первых: "HLine" получает текущую цену тейк-профита, а во-вторых: тейк-профит следует за объектом "HLine" - и но OrderModify() не должен обновляться, пока я перетаскиваю объект "HLine").
И теперь я начал исследовать OrderModify().

Я чувствую, что могу проверить ваш пример еще раз. Надеюсь, у меня получится.

Спасибо за вашу помощь, мистер Марко.

 

Господин Марко еще раз большое спасибо за все.

Итак, только что закончилась функция OM (Orders Modification)
Я увидел несколько проблем в моей функции OM, которые я решил самостоятельно.
Но постоянно я вижу, что функция OM нуждается в некоторых обновлениях, потому что я пытаюсь протестировать функцию OM с модификацией тейк-профита.

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

#1 Какую часть кодов я могу оставить?
Я уже пробовал обе нижеприведенные части кодов. Но я не увидел никакой разницы между ними. Похоже, что оба кода работают хорошо для меня.

// I learned this Calculation from thread of @Simon's
for ( i = OrdersTotal() - 1; i >= 0; i-- ){}

// This is from yours Mr. Marco
for ( i = OrdersTotal(); i >= 0; i-- ){}

#2 Это неправильно?
Я использую 7 раз нижеприведенные части кода в своем скрипте советника. Только 2x для расчета функций Sell и Buy. И 2 раза для закрытия. Я вызываю их через OnChartEvent() и OnTick().

for ( i = OrdersTotal() - 1; i >= 0; i-- )
  {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
   if(closeothers==false && OrderSymbol()!=Symbol()) continue;
//...
  }



Также у меня есть и другие проблемы, но я работаю над ними, чтобы решить их самостоятельно.

Заранее спасибо.

 

Нумерация начинается с 0, а не с 1.

Предположим, у вас есть 3 заказа. Это:

  • 0
  • 1
  • 2

Поэтому вы должны использовать это:

for ( i = OrdersTotal() - 1; i >= 0; i-- ){}

Если вы этого не сделаете, это не будет катастрофой; OrderSelect потерпит неудачу при первом проходе (i==3) и перейдет к следующей итерации.

Извините, я не понимаю ваш второй вопрос.

 

Что касается второго вопроса.

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

 
honest_knave:

Если вы этого не сделаете, это не будет катастрофой; OrderSelect потерпит неудачу при первом проходе (i==3) и перейдет к следующей итерации.

Marco vd Heijden:

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

Спасибо за ваши комментарии. Очень признателен!

 

Я уже потратил несколько часов на эти вопросы, чтобы понять, откуда это взялось?!
Q: Пожалуйста, дайте мне знать, что это такое? (Я прикрепляю файл с изображением)

Я использую ваш самый полезный пример "Stealth 4.mq4" для перетаскивания стоп-лосса и тейк-профита, и это прекрасно работало в последнюю пятницу.
Теперь рынок закрылся, и я вижу эти сообщения в окне Journal. Когда я удаляю блоки кода OrderModify(), эти сообщения прекращаются.

Хороших выходных.

Файлы:
 

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

Нужно немного больше кода, чтобы это прекратилось.

 

Max Enrik: Когда я удаляю блоки кода OrderModify(), то сообщения прекращаются.
  1. Вот почему я рекомендую
    Не торгуйте несколькими валютами в одном советнике
  2. Если бы вы торговали только одной парой/чартом в OnTick, у вас бы не было этой проблемы.
 

Вполне возможно торговать всеми валютами в одном советнике.

 
Marco vd Heijden: Вполне возможно торговать всеми валютами в одном советнике.
Никогда не говорил, что это не так. Я сказал, что не рекомендую этого делать из-за всех проблем. Одна пара/график упрощает все. Не надо усложнять все, что необходимо.
Причина обращения: