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

 
Я не знаю, предлагаю перепроверить. Сам факт, что цифры не сходятся, подтверждаю.
Но я забил, смотрю на первую страницу. Мир несовершенен.
 
Vitaly Muzichenko #:

Если-бы выбросили, тогда и этого не было-бы

 

--

К тому-же, если вырежут сделки с истории, то баланс покажет завышение, а здесь - нехватка.

Кухня так вошла в азарт, что Демо-деньги украла?

Какой ДЦ?
 

здравствуйте всем!

оптимизирую сов  с тралом лимиток потихоньку

подскажите пожалуйста как решить следующую задачу:

следующий OP_SELLLIMIT выставляется, если стартовая цена < стартовой цены предыдущего OP_SELLLIMIT

следующий OP_BUYLIMIT выставляется, если стартовая цена >  стартовой цены предыдущего  OP_BUYLIMIT

в настоящее время добавил условие о превышении хай/лоу вчерашнего дня, но хочу еще добавить как описал выше, но не соображу как это сделать

вот такой код имею:

/+------------------------------------------------------------------+
//|         Открытие лимитных ордеров                                |
//+------------------------------------------------------------------+
   double buylimit_open=0,selllimit_open=0;
   int sig_slimit=0,sig_blimit=0;
 //если нет откр орд. и отступ > мин. стопа то, откр бай/селл на интервале "step" 
   if(n==0&&blimit==0&&step>stops) {buylimit_open=NormalizeDouble(Bid-step,Digits);sig_blimit=1; }
   if(n==0&&slimit==0&&step>stops) {selllimit_open=NormalizeDouble(Ask+step,Digits);sig_slimit=1;}
 //если нет откр орд. и отступ <= мин. стопа то, откр бай/селл на интервале равном мин. стопу (но это не для работы по марж зонам!) типа скальпинг  
   if(n==0&&blimit==0&&step<=stops) {buylimit_open=NormalizeDouble(Bid-stops,Digits);sig_blimit=1; }
   if(n==0&&slimit==0&&step<=stops) {selllimit_open=NormalizeDouble(Ask+stops,Digits);sig_slimit=1;}
  

   if(Ask < iLow(NULL,1440,1)&&Sell==true&&sig_slimit==1) {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
   if(Bid > iHigh(NULL,1440,1)&&Buy==true&&sig_blimit==1) {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}

//+------------------------------------------------------------------+
//|        Удаление второго лимитного ордера, при появлении рыночного|
//+------------------------------------------------------------------+
   for(int lim_del=total-1; lim_del>=0; lim_del--)
      if(OrderSelect(lim_del,SELECT_BY_POS))
         if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==Magic)
               if(OrderType()>1)                               //если тип ордера НЕ 0(OP_BUY) и НЕ 1(OP_SELL), а больше (т.е. 2,3,4,5)
                 {
                  if(n>0) {int cl=OrderDelete(OrderTicket());} // удаляем отложку при появлении рыночного ордера
                 }

  }
 
Vitaly Muzichenko #:

Виталий, да цифры странно не сходятся. Но это же не вы програмно делали, а передает ДЦ в терминал. В ДЦ спрашивали почему не соответствие ?

 
Tretyakov Rostyslav #:
Какой ДЦ?
Volodymyr Zubov #:

Виталий, да цифры странно не сходятся. Но это же не вы програмно делали, а передает ДЦ в терминал. В ДЦ спрашивали почему не соответствие ?

Нет, не спрашивал. Они у меня ровно 2 года назад снесли 400$ настоящих денег шпилькой, так ничего и не узнал

А за демку вообще нет желания писать

 
Vitaly Muzichenko #:

Нет, не спрашивал. Они у меня ровно 2 года назад снесли 400$ настоящих денег шпилькой, так ничего и не узнал

А за демку вообще нет желания писать

а шпилька только у вас в терминале была?

что за ДЦ?

 
законопослушный гражданин #:

а шпилька только у вас в терминале была?

что за ДЦ?

Да, сбили ровно пункт_в_пункт. Кухню не называю

Вот огрызок с переписки

Они вон позицию ордером называют, о чём тут дальше говорить.

 

 
законопослушный гражданин #:

здравствуйте всем!

оптимизирую сов  с тралом лимиток потихоньку

подскажите пожалуйста как решить следующую задачу:

следующий OP_SELLLIMIT выставляется, если стартовая цена < стартовой цены предыдущего OP_SELLLIMIT

следующий OP_BUYLIMIT выставляется, если стартовая цена >  стартовой цены предыдущего  OP_BUYLIMIT

в настоящее время добавил условие о превышении хай/лоу вчерашнего дня, но хочу еще добавить как описал выше, но не соображу как это сделать

вот такой код имею:

При отправки лимитки сохраняешь цену в переменную и затем сравниваешь,

но есть нюанс, нужно условие для обнуления сохранённой цены.

 
Tretyakov Rostyslav #:

При отправки лимитки сохраняешь цену в переменную и затем сравниваешь,

но есть нюанс, нужно условие для обнуления сохранённой цены.

спасибо.

 
законопослушный гражданин #:

посмотрите пожалуйста как сделал, правильно ли? (вроде работает, но пока не могу проверить результаты прямо на графике)

создал функцию хранения - желтым

добавил условие для открытия ордера -синим:

не правильно

Запоминать при открытии

//Глобальные переменные
double last_limit_SELL=EMPTY_VALUE;     // цена открытия последнего лимитного ордера на продажу
double last_limit_BUY =0;                       // цена открытия последнего лимитного ордера на покупку



if(Ask < iLow(NULL,1440,1)&& Ask <last_limit_SELL&&Sell==true&&sig_slimit==1)
 {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {last_limit_SELL=selllimit_open; return;} 
if(open<0) {Print("OrderSend failed #",GetLastError());return;}}

if(Bid > iHigh(NULL,1440,1)&& Bid >last_limit_BUY &&Buy==true&&sig_blimit==1)
 {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {last_limit_BUY =buylimit_open; return;}
if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
Причина обращения: