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

 
Arseniy Barudkin:   Здравствуйте господа форумчане! Помогите пожалуйста с написанием функции.

С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем...        Недовольные пишут в личку!!!

//+-------------------------------------------------------+
//| функция перебрала открытые ордера на графике          |
//| и выделила: 1) с самым маленьким лотом и --- профитом |
//| 2) с самым большим лотом и +++ профитом.       скрипт |
//| Предполагается, что такие есть. И удалила    PROBA.mq4|
//+-------------------------------------------------------+
// Назначение функций OrdersTotal, OrderSelect, OrderClose
// и прочих узнаем поставив на них курсор и нажав F1

#property strict

void OnStart()
{
   int    Проскальзывание=20;
   int    Тикет1 =0,  Тикет2=0;
   double Лот1=100000, Лот2=0;
   bool   Результат;     //  Чтоб избежать лишних предупреждений

   // Выделение
   for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--)
   {
     if(!OrderSelect(Тикет,SELECT_BY_POS)) continue; // Что-то помешало - идем к следующему
     if(OrderSymbol() != _Symbol) continue;          // Чужой график

     // Если с меньшим лотом и   --- профитом   то запомним тикет и лот
     if(OrderLots()<Лот1     &&  OrderProfit()<0)
     {
       Тикет1=OrderTicket();
       Лот1=OrderLots();
     }

     // Если с большим лотом и   +++ профитом   то запомним тикет и лот
     if(OrderLots()>Лот2     &&  OrderProfit()>0)
     {
       Тикет2=OrderTicket();
       Лот2=OrderLots();
     }
   }

   // Удаление
   if(Тикет1)
   {
      while(!RefreshRates());
      if(OrderSelect(Тикет1,SELECT_BY_TICKET))  // Чтоб получить цену закрытия
         Результат=OrderClose(Тикет1, Лот1,OrderClosePrice(),Проскальзывание);
   }

   if(Тикет2)
   {
      while(!RefreshRates());
      if(OrderSelect(Тикет2,SELECT_BY_TICKET))
         Результат=OrderClose(Тикет2, Лот2,OrderClosePrice(),Проскальзывание);
   }
}   

А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом

А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?

 

Здравствуйте!

Можно помочь меня? Советник отрьйвает сделки на каждьй тик. Как нада написать код для отрьйтие примерно 5 сделок или только сколько я хочу?

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);

}

Что нада изменит, добавит в код?

Можно ответить ***

Спасибо!

 
alstefanov:

Здравствуйте!

Можно помочь меня? Советник отрьйвает сделки на каждьй тик. Как нада написать код для отрьйтие примерно 5 сделок или только сколько я хочу?

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);

}

Что нада изменит, добавит в код?

Можно ответить ***

Спасибо!

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

{ 

if(OrdersTotal()==0)OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);

}
 
Подскажите как можно ускорить работу советника в тестере чтоб тестился быстрее , советник использует только один индикатор
 
missha32Подскажите как можно ускорить работу советника в тестере чтоб тестился быстрее , советник использует только один индикатор

Прежде всего, сократить интервал времени тестирования. Лучше всего: 1) три последних месяца. 2) три месяца, чтоб в середине был брексит. Обязательно отказаться от тестирования по всем тикам. Ведь в MT4 в истории отсутствуют тики, и они моделируются легкими подергиваниями цены вверх-вниз. Тестируете на двух таймфреймах - М15 и М1 - и смотрите, где лучше. А лучше на демо - включаете в понедельник с утра и в пятницу вечером смотрите результат с помощью известного скрипта. Если надо тестировать 100 советников, открываем 10 терминалов и в каждом 10 графиков с советниками.

Обязательно надо иметь много компьютеров. На реальный счет достаточно 4 доллара с плечом 500. Посмотрите на любой график - при правильном входе запросто за день можно удвоить депозит. А это за месяц в миллион раз. В интернете есть такие бесплатные советники? Кто-то продаст такого? Поэтому деньги надо вкладывать в компьютеры. Ищем точки входа. Пишем программы, считаем в Excel по формулам и макросам, пишем скрипты и советники для расчетов. Потом уже, когда выяснится, как искать точки входа, потом уже роботы, стопы, трал, депозит, пополнение, снятие, ...

 
STARIJ:

С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем...        Недовольные пишут в личку!!!

А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом

А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?

for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--)  - это код перебора рыночных ордеров по тикету в обратном порядке(от последнего открытого к первому) - я правильно понимаю?

вот только "Тикет" кирилицей не пройдёт, нужно латиницей "Ticket"

 
Yaroslav Nykula:
for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--)  - это код перебора рыночных ордеров по тикету в обратном порядке(от последнего открытого к первому) - я правильно понимаю?

вот только "Тикет" кирилицей не пройдёт, нужно латиницей "Ticket"

Не проверял, но должен пройти не только кирилицей, но и китаиницей.
 
Vitaly Muzichenko:   Не проверял, но должен пройти не только кирилицей, но и китаиницей.
Когда берусь за новый язык, прежде всего проверяю, ест ли кириЛЛицу, или выплевывает. Этот ест. Прилагаю тот скрипт - проверьте
Файлы:
PROBA.mq4  2 kb
 
Здравсвтвуйте. Вопрос такой: можно ли загнать значения тиков (соответствующие цены) за определенный торговый период (т.е за одну свечу) в одномерный массив? Причем сделать это так, что бы массив формировался на протяжении формирования свечи. Реально ли это в MQL4? Буду благодарен за ответ.
 
STARIJ:

С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем...        Недовольные пишут в личку!!!

А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом

А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?


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