Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 93

 
seny:

Прошу помощи, привожу пример

в таком виде все работает...

а в таком нет...

как мне вписать в буфер через переменную к?

double k=0;
 
Alekseu Fedotov:
double k=0;

Не помогает! не в теле кода, не в инициализации, не в старте...

 
seny:

в таком виде все работает...  а в таком нет...

чтоб понять - надо упростить. Сравните два выражения: 100/10/10  = 1      и      к=10/10        100/к  = 100      а вот если к=10*10, то будет правильно

 
Приветствую. Подскажите, пожалста, как сделать продление временной шкалы на будущее когда включено смещение графика.
 
Andrey Sokolov:
Приветствую. Подскажите, пожалста, как сделать продление временной шкалы на будущее когда включено смещение графика.

никак. Вы можете только сами нарисовать вертикальные линии - у них внизу время показывается.

 

Здравствуйте. Подскажите, как написать условие, при котором: если открытый ордер закрылся по" тейкпрофиту" - удалить все оставшиеся рыночные ордера; если нет(закрылся по стоплосс) - выставить такой же точно ордер (с таким же "стоплосс" и "тейкпрофит" ) в виде отложенного. 

 
6737998:

Здравствуйте. Подскажите, как написать условие, при котором: если открытый ордер закрылся по" тейкпрофиту" - удалить все оставшиеся рыночные ордера; если нет(закрылся по стоплосс) - выставить такой же точно ордер (с таким же "стоплосс" и "тейкпрофит" ) в виде отложенного. 


я ж вам ответил в другой теме - работайте с историей и написал необходимые вам для этого операторы.

 

А можно статью написать в разделе "Статьи" о каком-то форекс-явлении,
а внизу статьи разместить рекламу на свой платный индикатор с маркета, индикатор, которым можно это явление исследовать. ? 

 

всем привет, столкнулся с проблемкой...

Задача интерактивно менять советника на чарте. Вариант с несколькими чартами и несколькими советниками не рассматривается.

Известен вариант о применении шаблона ChartApplyTemplate, и он справляется со своей задачей, но бывает возвращает ответ false (в цикле постоянный ответ), мотивируя это тем что не может поместить команду в очередь.

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

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

ПС: При ручной смене шаблона такое не встречается. Может тогда через winAPI попробовать... надо покопать, не работал  с этим

ChartApplyTemplate - Chart Operations - MQL4 Reference
ChartApplyTemplate - Chart Operations - MQL4 Reference
  • docs.mql4.com
ChartApplyTemplate - Chart Operations - MQL4 Reference
 
Vasili Taucci:

всем привет, столкнулся с проблемкой...

Задача интерактивно менять советника на чарте. Вариант с несколькими чартами и несколькими советниками не рассматривается.

Известен вариант о применении шаблона ChartApplyTemplate, и он справляется со своей задачей, но бывает возвращает ответ false (в цикле постоянный ответ), мотивируя это тем что не может поместить команду в очередь.

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

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

ПС: При ручной смене шаблона такое не встречается. Может тогда через winAPI попробовать... надо покопать, не работал  с этим

Посмотрите это. Там для MT5, но для MT4 принцип полностью схожий. При использовании ChartApplyTemplate требуется обязательная синхронизация, которую в библе делаю так

  static bool TemplateApply( const long Chart_ID, const string &Str, const bool Sync = true )
  {
    string TmpStr = Str;

    const bool SyncFlag = (Sync && Chart_ID && (Chart_ID != ::ChartID()) && !::IsStopped());

    if (SyncFlag)
    {
      const color ColorStopLevel = (color)::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL);

      if ((bool)(ColorStopLevel >> 24))
        ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, ColorStopLevel & 0xFFFFFF);

      const int NewColorStopLevel = (int)EXPERT::StringBetween(TmpStr, EXPERT_STOPLEVEL, STRING_END) | (0x01 << 24);

      TmpStr = Str;
      EXPERT::StringReplace(TmpStr, EXPERT_STOPLEVEL, STRING_END, EXPERT_STOPLEVEL + (string)NewColorStopLevel + STRING_END);
    }

    short Data[];
    const bool Res = ::StringToShortArray(TmpStr, Data, 0, ::StringLen(TmpStr)) &&
                     ::FileSave(FILENAME, Data) && ::ChartApplyTemplate((ulong)Chart_ID, FILENAME);

    if (Res && SyncFlag)
    {
      long Value;

      while ((!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(0);

      ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, (int)Value & 0xFFFFFF);
    }

    return(Res);
  }
Expert
Expert
  • голосов: 12
  • 2017.08.28
  • fxsaber
  • www.mql5.com
Библиотека чтения/записи параметров произвольных советников.