Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1942

 
Maksim Kalachev #:

Читал, только индикатор выставляется как индикатор. Но при загрузке демоверсии он появляется в советниках

Не размещайте один и тот же вопрос в разных ветках форума.

Я Вам ответил там:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Artyom Trishkin, 2022.04.05 15:13

Вы его написали с использованием старых обработчиков.

Нужно использовать OnCalculate()


 
Artyom Trishkin #:

Не размещайте один и тот же вопрос в разных ветках форума.

Я Вам ответил там:


Уже читаю. Благодарю Вас!

 
можно ли удалить переписку с человеком ? хочу закрыть с пользователем чат
 
makssub #:

Добрый день.

Помогите с кодом, может есть примеры.
Задача:

Есть несколько открытых ордеров, с разными лотами, в разных направлениях. Одни из них зарывается с профитом,  предположим 20. Но есть открытый с отрицательным профитом, предположим -55 с лотами 0,05. Хочу закрыть часть отрицательного ордера на сумму профита положительно закрытого ордера, чтобы уменьшить просадку. 

Пытался написать на основе оператора while, но что то пошло не так.

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

Вы не написали, это на одном инструменте или на разных позиции?
 

Почему МТ5 работает код а на МТ4 нет? build 1З5З

Сохраняет шаблон но не применяет шаблон

//+------------------------------------------------------------------+
//|                                              File Read Write.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string SYMBOL;
string ccname;
void OnStart()
  {

   SYMBOL = _Symbol;
   ccname = SYMBOL;
   SaveTemplate();
 
 DownloadTemplate();
     
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SaveTemplate(void)
  {
   if(ChartSaveTemplate(0, ccname))
      Print("Template successfully saved!  " + SYMBOL);
   else
      Print("Template save Failed!  " + SYMBOL);
   return;
  }
//+------------------------------------------------------------------+
void DownloadTemplate(void)
  {

   if(ChartApplyTemplate(0,ccname))
      return;
   else
      Print("Template download Failed!  " + SYMBOL);
  }

 
Подскажите, пожалуйста, как заставить программу работать только тогда, когда началась новая свеча и после прогона по коду затаиться и ждать начало следующей свечи?
 
Ivan Butko #:
Подскажите, пожалуйста, как заставить программу работать только тогда, когда началась новая свеча и после прогона по коду затаиться и ждать начало следующей свечи?

это называется цены открытия.
элементарно делается 

 
Pavel Malyshko #:

это называется цены открытия.
элементарно делается 

А я не соображу. Приходит тик, прошла проверка. Приходит следующий тик - опять проверка. Тот же таймер не вписывается в открытие

На ум приходит только запомнить время открытия, прибавлять к нему время свечи и сверять текущее время с новым значением

 
Ivan Butko #:

А я не соображу. Приходит тик, прошла проверка. Приходит следующий тик - опять проверка. Тот же таймер не вписывается в открытие

На ум приходит только запомнить время открытия, прибавлять к нему время свечи и сверять текущее время с новым значением

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Valeriy Yastremskiy, 2022.03.30 09:37

 
static datetime OldTime=0;
if(iTime(NULL,0,0)!=OldTime)
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol()); OldTime=iTime(NULL,0,0);
      }

Так при загрузке тоже будет алерт. При появлении нового бара  iTime(NULL,0,0) будет изменен и равенства не будет один раз, потом будет равенство и иф будет ложным. 

Можно так еще.

static bool FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }

или так, что бы получать новый бар на любом таймфрейме.

bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar)
  {
   FlagNbar=false;
   if(ArgBarTime!=iTime(NULL,prd,0))
     {
      ArgBarTime=iTime(NULL,prd,0);
      FlagNbar=true;
     }

   return(FlagNbar);
  }

Вызов такой будет

 if(FlagNewBarF(1, BarTime1,FlagNewBar1))
     {
      Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
      
     }

   if(FlagNewBarF(5, BarTime5,FlagNewBar5))
     {
      Alert("FlagNbar5 ",FlagNewBar5,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS));
     
     }

 
Valeriy Yastremskiy #:
Вы не написали, это на одном инструменте или на разных позиции?

Пусть это будет все рамках одной валютной пары, EurUsd например. Оба открыты в Buy.