Скрипт для безиндикаторного бота(сетка),аналог трала.

 

Добрый день!

Пожалуйста,подскажите где найти, или предоставьте готовый скрипт в MQL4, или создайте его "за идею",который можно вставить в бот с тумблером " true/false " в параметрах настройки,где он выполняет аналогичную функцию трейлинга стоповых ордеров.

То есть,в период одного цикла и до конца его,скрипт должен периодически подтягивать ряд стоповых ордеров, сохраняя дистанцию (ОТСТУП) между бай и селл ордеров ,в момент если какой-либо из ордеров активируется рыночной ценой,то противоположные ряд неактивных ордеров подтягиваются на расстоянии ШАГа,заданный в настройках параметров. В моём боте имеются соответственные магики на селл и бай, не плохо иметь универсал.

Дополню ещё,что в боте имеется отступ(расстояние от рыночной цены) и шаг(расстояние между стоповыми ордерами).На каждую сторону количество стоповых ордеров по 10.

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

Я лично здесь не прошу Вашего мнения о пользы этого скрипта и его последствий,полезен или бесперспективный,просто мне нужно найти это и вмонтировать в бот !

Если есть вопросы или предложения ,прошу высказать здесь.

Почту и контакты не предоставляю ибо то, что я прошу выставить здесь не для себя,а для всех бесплатно,кому интересен такой скрипт для своих ботов. Могу и код своего бота вставить ,если это необходимо,лучше конечно самому вмонтировать )))

Спасибо за внимание.



 
paragon67:

Добрый день!

Пожалуйста,подскажите где найти, или предоставьте готовый скрипт в MQL4, или создайте его "за идею",который можно вставить в бот с тумблером " true/false " в параметрах настройки,где он выполняет аналогичную функцию трейлинга стоповых ордеров.

То есть,в период одного цикла и до конца его,скрипт должен периодически подтягивать ряд стоповых ордеров, сохраняя дистанцию (ОТСТУП) между бай и селл ордеров ,в момент если какой-либо из ордеров активируется рыночной ценой,то противоположные ряд неактивных ордеров подтягиваются на расстоянии ШАГа,заданный в настройках параметров. В моём боте имеются соответственные магики на селл и бай, не плохо иметь универсал.

Дополню ещё,что в боте имеется отступ(расстояние от рыночной цены) и шаг(расстояние между стоповыми ордерами).На каждую сторону количество стоповых ордеров по 10.

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

Я лично здесь не прошу Вашего мнения о пользы этого скрипта и его последствий,полезен или бесперспективный,просто мне нужно найти это и вмонтировать в бот !

Если есть вопросы или предложения ,прошу высказать здесь.

Почту и контакты не предоставляю ибо то, что я прошу выставить здесь не для себя,а для всех бесплатно,кому интересен такой скрипт для своих ботов. Могу и код своего бота вставить ,если это необходимо,лучше конечно самому вмонтировать )))

Спасибо за внимание.



Самостоятельный поиск: Code Base и Маркет. Если не хочется искать и писать код самостоятельно:  Фриланс
 
Я не совсем понял что вам нужно, но виртуальный трал выглядит примерно так:
//----------------- Ввод -----------------
input bool  ProfitTral_ON           =true;
input int   Profit_Level            =350;
input int   Tral_Level              =250;
input int   BuyMag                  =1001;
input int   SellMag                 =2001;

//---------- Глобальные переменные (обязательно глобальные, иначе уровень трала будет бегать за ценой) --------------------
double StopLossBuy=0,StopLossSell=0;
//-------------------------------
void OnTick() {  // Или в пользовательской функции 

//----------------------------  
// Просчитать максимальную/минимальную позиции, "лишнее" пригодится в другом месте ;)
double MaxOP_Buy=0, MinOP_Buy=99999, MaxOP_Sell=0, MinOP_Sell=99999;

   for(i=0;i<OrdersTotal();i++){ 
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ 
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==BuyMag || OrderMagicNumber()==SellMag  ) {  
            if(OrderType()==OP_BUY) {  
               MaxOP_Buy=MathMax(MaxOP_Buy,OrderOpenPrice());
               MinOP_Buy=MathMin(MinOP_Buy,OrderOpenPrice());
            } //--
            if(OrderType()==OP_SELL) {  
               MaxOP_Sell=MathMax(MaxOP_Sell,OrderOpenPrice());
               MinOP_Sell=MathMin(MinOP_Sell,OrderOpenPrice());
            } //--
         } //--
      } //--
   } //-- for
   
//------------- Пишу только для StopLossBuy ... --------------------
   if(StopLossBuy==0 && Bid-MinOP_Buy>=Profit_Level*Point)   StopLossBuy=Bid-Tral_Level*Point; // Set Stoploss
   if(StopLossBuy >0 && Bid-StopLossBuy>=Profit_Level*Point) StopLossBuy=Bid-Tral_Level*Point; // Stoploss Tral
   
//------------- Закрытие по СЛ (можно вставить в верхний цыкл)  -----------------------------------------
bool Answer=false;

   for(i=0;i<OrdersTotal();i++){ 
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ 
         if(OrderSymbol()==Symbol() && (OrderMagicNumber()==BuyMag || OrderMagicNumber()==SellMag  ) {  
            if(OrderType()==OP_BUY) {  
               if(Bid<=StopLossBuy) {
               Answer=OrderClose(OrderTicket(),OrderLots(),Bid,30,clrRed); 
               if(Answer) { 
                  StopLossBuy=0; // Обязательно обнулить переменную при закрытии позиции
               } //-- if(ans)
               if(!Answer) { 
                 //--- Сообщение об ошибке и вызов функции обработки ошибок. Если нет - можно и дез, код удалить.
               } //--
            } //--
            if(OrderType()==OP_SELL) {  
               MaxOP_Sell=MathMax(MaxOP_Sell,OrderOpenPrice());
               MinOP_Sell=MathMin(MinOP_Sell,OrderOpenPrice());
            } //--
         } //--
      } //--
   } //-- for
   

} //-- OnTick()
//=========================================================

PS
Набросал экспромтом, ошибки не проверял, возможно и есть, проверьте компиляцией. Идея, надеюсь, понятна, если че то смыслите - допишете, если нет - заказывайте кому-нить. 
Можете мне ;)
Аналогично делается трал виртуального стопа или лимита (цикл не нужен, только переменная объявленная на глобальном уровне), 
принцип тот же - тралится переменная, пересечении ее уровня ценой - команда на открытие. Визуализацию можно сделать выводом линии (удобно при настройке)

ЗЫ ЗЫ
Во, блин, точно - дочитал до конца - вы таки хотите тралить виртуальные уровни открытия - описал уже в общих чертах. Шаг трала делает просто - задаете шаг в переменно на вводе, 
В скрипте: if(StopLossBuy >0 && Bid-StopLossBuy>=(Profit_Level+Step)*Point) StopLossBuy=Bid-Tral_Level*Point;

Будет перемещать уровень с заданным шагом.