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

 
smart_man:

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

Вопрос касается переменных объявленных в начале кода вот так:

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double  VAR1 = 1;

double VAR2[1000];

Нужно не потерять значения VAR1 и VAR2 (массив наполняется данными в процессе работы советника). Пока из идей только запись в файл (global.txt) на каждом тике, а при запуске терминала чтение из этого файла (global.txt) и воссоздание переменных, а далее опять запись на каждом тике. Какие есть еще варианты?

Либо в глобалки терминала, либо в ресурс.
 
Arseniy Barudkin:

Спасибо за помощь! Пока оставил вот так, сейчас решил немного изменить условия при которых функция вызывается. А вообще вы мне очень помогли))

Все-таки правильно, что Вам не отвечают. Надо ставить задачу, иначе ее невозможно решить.

Посмотрим первоначальное ТЗ:

"Arseniy Barudkin 2017.05.23 19:56      RU

Приветствую господа! Не хочу что бы это приняли за флуд, но мне без этой функции ни как не обойтись. Ну так что ребят кто нибудь сможет помочь мне с функцией которая перебирает все ордера и удаляет одновременно два ордера, один с самым маленьким лотом и отрицательным профитом из существующих на графике, а второй с самым большим лотом и положительным профитом так же из существующих. "

Что мы видим в представленном Вами коде?

1. Все ордера открыты с помощью эксперта и имеют уникальный Magic.

2. Суммарный профит искомых ордеров положительный.

3. Ордера являются встречными.

4. Размер лота с положительным профитом строго больше лота с отрицательным.

Где это видно в представленном ТЗ?

Кроме того: из кода видно, что Вы не умеете закрывать встречные ордера, теряя, как минимум, спред.

 
fxtz:

Вопрос В метатрейдере 4 можно ли написать программу, чтобы открыть от 2 до 250 позиций по моему выбору с заданным стоплоссом и заданным профитом в один клик? Чтоб не открывать вручную по одной

Если ограничения брокера столь крутые, то язык программирования именной этого и создан, чтобы писать автоматически скрипты. 
 
Mislaid:

Все-таки правильно, что Вам не отвечают. Надо ставить задачу, иначе ее невозможно решить.

Посмотрим первоначальное ТЗ:

"Arseniy Barudkin 2017.05.23 19:56      RU

Приветствую господа! Не хочу что бы это приняли за флуд, но мне без этой функции ни как не обойтись. Ну так что ребят кто нибудь сможет помочь мне с функцией которая перебирает все ордера и удаляет одновременно два ордера, один с самым маленьким лотом и отрицательным профитом из существующих на графике, а второй с самым большим лотом и положительным профитом так же из существующих. "

Что мы видим в представленном Вами коде?

1. Все ордера открыты с помощью эксперта и имеют уникальный Magic.

2. Суммарный профит искомых ордеров положительный.

3. Ордера являются встречными.

4. Размер лота с положительным профитом строго больше лота с отрицательным.

Где это видно в представленном ТЗ?

Кроме того: из кода видно, что Вы не умеете закрывать встречные ордера, теряя, как минимум, спред.


Я не спорю много недочетов! Я только вникаю в этот вид деятельности. И пишу в эту ветку для того чтобы помогли или указали на ошибки! По моему она для этого и существует. Теперь к коду. 1) Возможно я чего то не понимаю, но что плохого в том что все ордера в советнике имеют уникальный Magic!? 2)Это условие и вообще вся эта функция для того и нужна чтобы при большой нагрузке на маржу закрыть как минимум два встречных ордера и не уйти в минус, 3 и 4 пункты относятся сюда же. А встречные ордера я действительно не знаю как правильно закрыть.
 
Arseniy Barudkin:

Я не спорю много недочетов! Я только вникаю в этот вид деятельности. И пишу в эту ветку для того чтобы помогли или указали на ошибки! По моему она для этого и существует. Теперь к коду. 1) Возможно я чего то не понимаю, но что плохого в том что все ордера в советнике имеют уникальный Magic!? 2)Это условие и вообще вся эта функция для того и нужна чтобы при большой нагрузке на маржу закрыть как минимум два встречных ордера и не уйти в минус, 3 и 4 пункты относятся сюда же. А встречные ордера я действительно не знаю как правильно закрыть.
Если бы Вы были моим студентом, отметка "хорошо" уже была бы за то, что Вы представили код. А, если в процессе общения, Вы бы смогли показать, что умеете генерировать идеи, тогда "отлично" Из ответа, я вижу, что правильно мыслишь
 

Здравствуйте ... советник написан на MQL4, торгует рыночными ордерами Buy, Sell с Trailing ... решил добавить в код установку отложенных BuyStop, SellStop ... и тут столкнулся с неожиданной проблемой = как только в окне МТ4 появляется любой отложенный ордер, прекращает работать  Trailing (SL не устанавливается, Modify нет) ... не пойму в чём проблема, функция  Trailing стандартная с обратным перебором из библиотеки, добавлено две выделенных стр.,  ... или тут не в функции дело? Может быть кто-то сталкивался с подобным?

int TralFunck(int Ticket)

 {   double TralPrice=0,Punkt=0;

   chk=OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);

for(Ticket=OrdersTotal()-1; Ticket>=0; Ticket--)  

  { if (OrderProfit()<=0)       continue;

    if (OrderType()==4)		continue;

    if (OrderType()==5) 	continue;

   if (OrderType()==0)  {   Punkt=(Bid-OrderOpenPrice())/Point;TralPrice=NormalizeDouble((Bid-Tral*D*Point),Digits);  }

   if (OrderType()==1)  {   Punkt=(OrderOpenPrice()-Ask)/Point;TralPrice=NormalizeDouble((Ask+Tral*D*Point),Digits);   }

   if (Punkt<MarketInfo(Symbol(),MODE_STOPLEVEL))       continue;

   if(Punkt<(Tral+TP)*D)        continue;

   if(OrderType()==0 && TralPrice<=NormalizeDouble(OrderStopLoss(),Digits))     continue;

   if(OrderType()==1 && TralPrice>=NormalizeDouble(OrderStopLoss(),Digits) && OrderStopLoss()!=0)       continue;

   ModifyOrder(OrderTicket(),OrderOpenPrice(),TralPrice,OrderTakeProfit());     continue;

   }   return(0);

 }


 
Yaroslav Nykula:

Здравствуйте ... советник написан на MQL4, торгует рыночными ордерами Buy, Sell с Trailing ... решил добавить в код установку отложенных BuyStop, SellStop ... и тут столкнулся с неожиданной проблемой = как только в окне МТ4 появляется любой отложенный ордер, прекращает работать  Trailing (SL не устанавливается, Modify нет) ... не пойму в чём проблема, функция  Trailing стандартная с обратным перебором из библиотеки, добавлено две выделенных стр.,  ... или тут не в функции дело? Может быть кто-то сталкивался с подобным?



Замените return(0); на continue; что бы из цикла не выходить. В конце функции оставьте как есть.

Для вставки кода используйте кнопку SRC в редакторе

 
Victor Nikolaev:


Замените return(0); на continue; что бы из цикла не выходить. В конце функции оставьте как есть.

Для вставки кода используйте кнопку SRC в редакторе


Спасибо ... подправил ... кнопку SRC в редакторе учту, извините ... но суть проблемы от этого не изменилась, Trailing  и Modify по прежнему не хотят работать при наличии  отложенных  ордеров.
 
Я недавно начал торговать на mt4. Решил протестировать свою стратегию но у меня в тестере стратегий нет функции визуализация и кнопки пауза. без этих функций тестировать не возможно. как быть?
 
vsmutew7:
Я недавно начал торговать на mt4. Решил протестировать свою стратегию но у меня в тестере стратегий нет функции визуализация и кнопки пауза. без этих функций тестировать не возможно. как быть?

 

Вероятно, нужно растянуть окно пошире, особенно то, в котором кнопка "Старт"

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