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

 
#Стоп Лосс, Тейк Профит - Перетаскивания - Открыть

После моего последнего комментария я начал изучать форум и статьи на тему "Стоп-лосс и тейк-профит - перетаскивание объекта".
И только сейчас нашел эту статью MQL5 COOKBOOK: РАБОТА С ТИПИЧНЫМИ СОБЫТИЯМИ НА ГРАФИКЕ
Но она для MT5.

Поэтому прежде чем я начну читать или пробовать эту статью, пожалуйста, сообщите мне, будет ли эта статья полезна для MT4?
Также, если это возможно, пожалуйста, поделитесь со мной хорошей статьей о перетаскивании объектов.

Заранее спасибо.
 
Да, OnChartEvent() одинаков для обоих языков.
 
Marco vd Heijden:
Да, OnChartEvent() одинаков для обоих языков.
О! Приятно знать, я могу начать читать.
Большое спасибо.
 

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

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

 
Marco vd Heijden:

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

Приятно это знать. Я всегда думал (/ беспокоился) об этом, что язык MT4 скоро не будет использоваться. Спасибо.
 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close
Заранее спасибо.
 

Я уже прочитал статью и проверил коды других людей для 'CHARTEVENT_OBJECT_DRAG ', что как использовать его.
Но, к сожалению, это не имеет смысла для меня. Сейчас я думаю, что потратил свое время на бесполезные вещи. Потому что их стиль кода действительно отличается от моего.
(Мой стиль кода просто простой - как стиль кода документации mql4 - который я понимаю немного больше).

Просто я хочу сказать, что когда я перетаскиваю объект "Stop Loss, Take Profit, Pending Orders", что может перемещаться вместе с этим объектом. (конечно, все они могут быть отдельно).

Также я видел один скрипт EA для модификации ордеров (sl, tp и т.д.) - и он работает без ' CHARTEVENT_OBJECT_DRAG '... Надеюсь, вы понимаете, что я имею в виду.

Сейчас мне очень нужна помощь в простом примере для ' CHARTEVENT_OBJECT_DRAG ' с объектом HLine или Trendline. Или четкое объяснение или просто что-то хорошее ( / более четкое ) комментарий.
Я уже потратил много времени и все еще изучаю этот вопрос. Надеюсь, я скоро получу ответ.

Всего вам наилучшего.
Заранее спасибо.

 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

Это будет верно Утро ИЛИ Полночь

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close

Здесь есть отдельный случай для утра и отдельный случай для полуночи.

Так что это две разные вещи.

Max Enrik:

Я уже прочитал статью и проверил коды других людей для 'CHARTEVENT_OBJECT_DRAG ', что как использовать его.
Но, к сожалению, это не имеет смысла для меня. Сейчас я думаю, что потратил свое время на бесполезные вещи. Потому что их стиль кода действительно отличается от моего.
(Мой стиль кода просто простой - как стиль кода документации mql4 - который я понимаю немного больше).

Просто я хочу, чтобы при перетаскивании объектов "Stop Loss, Take Profit, Pending Orders", которые могут перемещаться вместе с этим объектом. (конечно, все они могут быть по отдельности).

Также я видел один скрипт советника для модификации ордеров (sl, tp и т.д.) - и он работает без ' CHARTEVENT_OBJECT_DRAG '... Надеюсь, вы понимаете, что я имею в виду.

Сейчас мне очень нужна помощь в простом примере для ' CHARTEVENT_OBJECT_DRAG ' с объектом HLine или Trendline. Или четкое объяснение или просто что-то хорошее ( / более четкое ) комментарий.
Я уже потратил много времени и все еще изучаю этот вопрос. Надеюсь, я скоро получу ответ.

Всего вам наилучшего.
Заранее спасибо.


Вы можете перетащить линию, когда

OBJPROP_SELECTABLE ==1
OBJPROP_SELECTED ==1

Оба варианта верны, и вы можете просто прочитать значения с помощью \.

ObjectGet Double(....

Вместо

ObjectSetDouble(....
Это не так сложно и может быть очень полезно.
 
Marco vd Heijden:

Я почти не знал, как я могу написать код для Stop Loss и Take Profit Drags, когда я начал делать это, спасибо большое.
Теперь я чувствую, что могу делать то, что хочу, после вашего замечательного комментария.

Рынок закрыт

Итак, я уже попробовал и теперь я могу получить ' OBJPROP_PRICE ', который я хочу.
Когда я перетаскиваю объект ' HLine ' и затем Print() обновляется раз в секунду. Потому что я использую EventSetTimer( 1 ).

Но мне нужно, чтобы Print() не обновлялся раз в секунду. Я бы хотел, чтобы Print() обновлялся после того, как я остановил перетаскивание.
Если вы понимаете меня, пожалуйста, помогите мне или дайте мне совет.

Всего вам наилучшего.

 

Поэтому вы можете хранить значение OBJPROP_PRICE в double и затем сравнивать их.

Если они отличаются, вы знаете, что началось перетаскивание, а если они снова равны, вы знаете, что перетаскивание было остановлено.

//+------------------------------------------------------------------+
//|                                                   Drag Hline.mq4 |
//|      Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double price; // price variable;
bool drag;     // drag flag
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
//--- create Hline
   ObjectCreate(0,"line",OBJ_HLINE,0,0,Ask);
//--- store value
   price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- compare values
   if(price!=ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
     {
      drag=1;                                          // set drag flag
      price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0); //store new value
     }
   if(drag==1)
     {
      if(price==ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
        {
         drag=0; //reset drag flag
         Alert(" New value set: ", DoubleToString(price));
        }
     }
  }
//+------------------------------------------------------------------+

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

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