Помогите пожалуйста!

 

Здравствуйте! Помогите мне пожалуйста прикрутить Tralling Stop, через включение и выключение False/True + входные параметры к нему.

//+------------------------------------------------------------------+
//|                                       ArtificialIntelligence.mq4 |
//|                                                Copyright © 2017, |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//---- input parameters
extern int    x1 = 135;
extern int    x2 = 127;
extern int    x3 = 16;
extern int    x4 = 93;
// StopLoss level
extern double sl = 85;
extern double lots = 1;
extern int MagicNumber = 888;
static int prevtime = 0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0];
   int spread = 3;
//----
   if(IsTradeAllowed()) 
     {
       RefreshRates();
       spread = MarketInfo(Symbol(), MODE_SPREAD);
     } 
   else 
     {
       prevtime = Time[1];
       return(0);
     }
   int ticket = -1;
// check for opened position
   int total = OrdersTotal();   
//----
   for(int i = 0; i < total; i++) 
     {
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES); 
       // check for symbol & magic number
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) 
         {
           int prevticket = OrderTicket();
           // long position is opened
           if(OrderType() == OP_BUY) 
             {
               // check profit 
               if(Bid > (OrderStopLoss() + (sl * 2  + spread) * Point)) 
                 {               
                   if(perceptron() < 0) 
                     { // reverse
                       ticket = OrderSend(Symbol(), OP_SELL, lots * 2, Bid, 3, 
                                          Ask + sl * Point, 0, "AI", MagicNumber, 0, Red); 
                       Sleep(30000);
                       //----
                       if(ticket < 0) 
                           prevtime = Time[1];
                       else 
                           OrderCloseBy(ticket, prevticket, Blue);   
                     } 
                   else 
                     { // trailing stop
                       if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - sl * Point, 
                          0, 0, Blue)) 
                         {
                           Sleep(30000);
                           prevtime = Time[1];
                         }
                     }
                 }  
               // short position is opened
             } 
           else 
             {
               // check profit 
               if(Ask < (OrderStopLoss() - (sl * 2 + spread) * Point)) 
                 {
                   if(perceptron() > 0) 
                     { // reverse
                       ticket = OrderSend(Symbol(), OP_BUY, lots * 2, Ask, 3, 
                                          Bid - sl * Point, 0, "AI", MagicNumber, 0, Blue); 
                       Sleep(30000);
                       //----
                       if(ticket < 0) 
                           prevtime = Time[1];
                       else 
                           OrderCloseBy(ticket, prevticket, Blue);   
                     } 
                   else 
                     { // trailing stop
                       if(!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + sl * Point, 
                          0, 0, Blue)) 
                         {
                           Sleep(30000);
                           prevtime = Time[1];
                         }
                     }
                 }  
             }
           // exit
           return(0);
         }
     }
// check for long or short position possibility
   if(perceptron() > 0) 
     { //long
       ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - sl * Point, 0, "AI", 
                          MagicNumber, 0, Blue); 
       //----
       if(ticket < 0) 
         {
           Sleep(30000);
           prevtime = Time[1];
         }
     } 
   else 
     { // short
       ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Ask + sl * Point, 0, "AI", 
                          MagicNumber, 0, Red); 
       if(ticket < 0) 
         {
           Sleep(30000);
           prevtime = Time[1];
         }
     }
//--- exit
   return(0);
  }
//+------------------------------------------------------------------+
//| The PERCEPTRON - a perceiving and recognizing function           |
//+------------------------------------------------------------------+
double perceptron() 
  {
   double w1 = x1 - 100;
   double w2 = x2 - 100;
   double w3 = x3 - 100;
   double w4 = x4 - 100;
   double a1 = iAC(Symbol(), 0, 0);
   double a2 = iAC(Symbol(), 0, 7);
   double a3 = iAC(Symbol(), 0, 14);
   double a4 = iAC(Symbol(), 0, 21);
   return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
  }
//+------------------------------------------------------------------+


Файлы:
 
Willters:   Здравствуйте! Помогите мне пожалуйста прикрутить Tralling Stop, через включение и выключение False/True + входные параметры к нему.

Для начала выбросьте строки - эти функции пустые, но отнимают у терминала время, тормозят работу запуска и выхода

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }

А эти 3 строки тормозят работу компилятора

#property copyright ""
#property link      ""
//---- input parameter

И зачем задавать x1=135  а затем вычитать 100. Может сразу задать 35?  с остальными то же самое

Ругается на OrderSelect. Есть смысл написать bool x =OrderSelect    а в остальных 2 случаях просто x=OrderCloseBy

 
STARIJ:

Для начала выбросьте строки - эти функции пустые, но отнимают у терминала время, тормозят работу запуска и выхода

А эти 3 строки тормозят работу компилятора

#property copyright ""
#property link      ""
//---- input parameter

И зачем задавать x1=135  а затем вычитать 100. Может сразу задать 35?  с остальными то же самое

Ругается на OrderSelect. Есть смысл написать bool x =OrderSelect    а в остальных 2 случаях просто x=OrderCloseBy

Что за чушь?

Вы читали вопрос "Помогите прикрутить Tralling Stop"?

 
Vitaly Muzichenko:

Что за чушь?

Вы читали вопрос "Помогите прикрутить Tralling Stop"?

прочитал. И изложил начала процесса... а Вы обратили внимание, кому ответ написан? Если можете - дайте лучший ответ, отдаю инициативу Вам!!! Исчезаю до Нового Года
 
STARIJ:
прочитал. И изложил начала процесса... а Вы обратили внимание, кому ответ написан? Если можете - дайте лучший ответ, отдаю инициативу Вам!!!

Начало процесса: "Для начала выбросьте строки" - не нужно ничего с этого выбрасывать, вообще не нужно, оно не мешает, совсем не мешает, и от него ни холодно, ни жарко.

Если по теме, то ТС интересует именно "прикрутить Tralling Stop"

Далее: "И зачем задавать x1=135  а затем вычитать 100. Может сразу задать 35?  с остальными то же самое" - зачем, что это псевдонейросеть, и значения должны быть те, что написаны. И это так-же менять не нужно.

Итог: ТС хочет получить чёткий и однозначный ответ, на чётко поставленный вопрос: "прикрутить Tralling Stop", а не пол-ведра воды. Вам в депутаты нужно, там как раз такими вещами и занимаются - никогда не отвечают на вопросы по теме.

 
Vitaly Muzichenko:

Начало процесса: "Для начала выбросьте строки" - не нужно ничего с этого выбрасывать, вообще не нужно, оно не мешает, совсем не мешает, и от него ни холодно, ни жарко.

Если по теме, то ТС интересует именно "прикрутить Tralling Stop"

Далее: "И зачем задавать x1=135  а затем вычитать 100. Может сразу задать 35?  с остальными то же самое" - зачем, что это псевдонейросеть, и значения должны быть те, что написаны. И это так-же менять не нужно.

Итог: ТС хочет получить чёткий и однозначный ответ, на чётко поставленный вопрос: "прикрутить Tralling Stop", а не пол-ведра воды.

Продолжаете лить воду? А по делу что-нибудь?
 

Здравствуйте! Это однослойная неро сеть. Если возможно прикрутить Траллинг стоп если не сложно..

 
Willters:

Здравствуйте! Это однослойная неро сеть. Если возможно прикрутить Траллинг стоп если не сложно..

Обратитесь во Фриланс.