[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 575

 
Frostr:



Советник который вы дали при тестировании почему то у меня открывает по 500-800 позиций сразу, не пойму от чего зависит количество открываемых позиций и не могу регулировать(( 

Помогает  уменьшить кол-во открываемых позицй только увелчение Lotа если постваить лот на всю, тогда он и будет по 1-3 позиции открывать

если поставить Lot минимум он будет открывать 500-1500 позиций за раз

1. Введите ограничение на количество одновременно открываемых ордеров.

2. При значительном увеличении лота дополнительное открытие позиций невозможно ввиду отсутствия средств.

 
Frostr:



Советник который вы дали при тестировании почему то у меня открывает по 500-800 позиций сразу, не пойму от чего зависит количество открываемых позиций и не могу регулировать(( 

Помогает  уменьшить кол-во открываемых позицй только увелчение Lotа если постваить лот на всю, тогда он и будет по 1-3 позиции открывать

если поставить Lot минимум он будет открывать 500-1500 позиций за раз

Файлы:
 
rigonich:


 

написал для своего эксперта что то вроде трейлинга, но не работает, в зависимости что пытаюсь изменить для того чтобы начало работать, выдаёт при модификации ошибку 1, или просто не идёт дальше первых принтов ( Print("Ведём позицию Buy"); )... какие могут быть причины, буду рад всем предложениям, за ранее спасибо!

 

bool TrailingStop()
   {
   int MD0=MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ((OrderMagicNumber()==11111)==true)
      {
      Print("Ведём позицию Buy");
      while(OrderCloseTime()==0)
         {
         if ((NormalizeDouble(Bid-OrderStopLoss()+StepStop*Point,Digits)>NormalizeDouble(StopLevel*Point,Digits))&&(NormalizeDouble(MD0,Digits)<NormalizeDouble(StopLevel*Point,Digits)))
               {
               RefreshRates();
               Print("текущий бид-",Bid,", текущий стоп-",OrderStopLoss(),", текуйщий тейк-",OrderTakeProfit(),", цена открытия-",OrderOpenPrice(),", расстояние от текущего стопа до текущего бида-",NormalizeDouble(Bid-OrderStopLoss(),Digits),", новый стоп-",NormalizeDouble(Bid-StopLevel*Point,Digits));
               if (OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-StopLevel*Point,Digits),OrderTakeProfit(),0)==true)
                  Print("Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", успешно изменён на ",OrderStopLoss());
               else Print("Не удалось переместить уровень Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),". Ошибка ",GetLastError());
               }
         Sleep(1000);
         }
      if (OrderCloseTime()>0)
         {
         Print("Ордер с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", закрыт по цене ",OrderClosePrice(),", с прибылью/убытком ",OrderProfit());
         return(true);
         }
      }
   else
      {
      if ((OrderMagicNumber()==22222)==true)
         {
         Print("Ведём позицию Sell");
         while(OrderCloseTime()==0)
            {
            if ((NormalizeDouble(OrderStopLoss()+StepStop*Point-Ask,Digits)>NormalizeDouble(StopLevel*Point,Digits))&&(NormalizeDouble(MD0,Digits)<NormalizeDouble(StopLevel*Point,Digits)))
               {
               RefreshRates();
               Print("текущий бид-",Ask,", текущий стоп-",OrderStopLoss(),", текуйщий тейк-",OrderTakeProfit(),", цена открытия-",OrderOpenPrice(),", расстояние от текущего стопа до текущего бида-",NormalizeDouble(OrderStopLoss()-Ask,Digits),", новый стоп-",NormalizeDouble(Ask+StopLevel*Point,Digits));
               if (OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+StopLevel*Point,Digits),OrderTakeProfit(),0)==true)
                  Print("Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", успешно изменён на ",OrderStopLoss());
               else Print("Не удалось переместить уровень Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),". Ошибка ",GetLastError());
               }
            Sleep(1000);
            }
         if (OrderCloseTime()>0)
            {
            Print("Ордер с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", закрыт по цене ",OrderClosePrice(),", с прибылью/убытком ",OrderProfit());
            return(true);
            }
         }
      else return(false);
      }
   }
 
Ekburg:

написал для своего эксперта что то вроде трейлинга, но не работает, в зависимости что пытаюсь изменить для того чтобы начало работать, выдаёт при модификации ошибку 1, или просто не идёт дальше первых принтов ( Print("Ведём позицию Buy"); )... какие могут быть причины, буду рад всем предложениям, за ранее спасибо!

 


Ваше условие while(OrderCloseTime()==0).  Если вы зайдете в этот цикл, будут повторяться попытки модификации пока ордер не закроется или не встретится оператор  brek или return, которых у вас в цикле нет. 

Извините, облажался. Они есть., но без очков сразу не заметил. Убрал лишнюю скобочку, добавил выход. попробуйте, может заработает.

Файлы:
0101.mq4  3 kb
 
Ekburg:

написал для своего эксперта что то вроде трейлинга, но не работает, в зависимости что пытаюсь изменить для того чтобы начало работать, выдаёт при модификации ошибку 1, или просто не идёт дальше первых принтов ( Print("Ведём позицию Buy"); )... какие могут быть причины, буду рад всем предложениям, за ранее спасибо!

Ради интереса расскажите как себя ведёт ЭТО - "что-то вроде трейлинга" в советнике??? По моим предположениям код должен зависнуть. А что на самом деле??? Больше одного ордера открывается???
 
TarasBY:
Ради интереса расскажите как себя ведёт ЭТО - "что-то вроде трейлинга" в советнике??? По моим предположениям код должен зависнуть. А что на самом деле??? Больше одного ордера открывается???


эммм.. почему он должен зависнуть?!

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

ведёт себя очень просто: по тому же принципу что и трелинг терминала, когда разница между лосем и ценой становиться больше, чем уровень трейлинга, то ордер модифицируется и принимается новое значение стоплосса, после он спит секунду, что бы не было частых запросов(так как ещё не могу нормально потестить свой вариант трейлинга, принял это время за секунду), если нужных условий не наступило, то он будет ждать их наступления, всё это происходит до тех пор, пока ордер не закроется и время закрытия станет больше нуля, поэтому условие цикла не будет выполняться и функция закончит свою работу и вернёт true

 
Ekburg:


эммм.. почему он должен зависнуть?!

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

ведёт себя очень просто: по тому же принципу что и трелинг терминала, когда разница между лосем и ценой становиться больше, чем уровень трейлинга, то ордер модифицируется и принимается новое значение стоплосса, после он спит секунду, что бы не было частых запросов(так как ещё не могу нормально потестить свой вариант трейлинга, принял это время за секунду), если нужных условий не наступило, то он будет ждать их наступления, всё это происходит до тех пор, пока ордер не закроется и время закрытия станет больше нуля, поэтому условие цикла не будет выполняться и функция закончит свою работу и вернёт true

Код вошёл в цикл по условию выхода из него - закрытие ордера по StopLoss`у. А сколько на это времени потребуется (на достижение ценой уровня SL)??? Наверно, не миллисекунда, и не секунда, а скорее всего и не минута?! ПОЗДРАВЛЯЮ - Вы сделали "новый шаг" в кодописании на MQL4!!!

P.S. А может я и ошибаюсь, а Вы просто продвинутый кодописец для тестера?! :)))

 
подскажите пожалуйста хороший FTP фриварный сервак для сриншотов и стейтов и что бы он не уходил в даун через 1 год ... как некоторые
 
TarasBY:

Код вошёл в цикл по условию выхода из него - закрытие ордера по StopLoss`у. А сколько на это времени потребуется (на достижение ценой уровня SL)??? Наверно, не миллисекунда, и не секунда, а скорее всего и не минута?! ПОЗДРАВЛЯЮ - Вы сделали "новый шаг" в кодописании на MQL4!!!

P.S. А может я и ошибаюсь, а Вы просто продвинутый кодописец для тестера?! :)))



Если бы все все знали, зачем бы нужна была эта ветка и форумы вообще?
Причина обращения: