Помогите доработать советника

 

Здравствуйте. Я абсолютно не силен в программировании. Поэтому прошу помощи - помогите добавить в код StopLoss и TrailingStop и убрать все лишнее. Советник не мой, но стратегия не плохая, поэтому методом проб и ошибок переделываю советника под себя - и уже честно говоря башню сносит, да еще и времени мало - работа. Кому интересно выкладываю советника полностью так сказать в оригинальной упаковке. А вот то, что я с ним творю :



//+------------------------------------------------------------------+
//|                                             stohastic_system.mq4 |
//|                                                    Анатолий      |                                                                  |
//+------------------------------------------------------------------+

extern double Lots=0.4;
extern int TakeProfit=50;
extern int NWave=2;
extern int K=9;
extern int D=3;
extern int slowing=5;
extern int Average_method=2;
extern int price_field=0;

int K_level=0;
int down=0;
int up=0;


int init()
  {

   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
    int ticket=0;
    double stoch_1=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,1);
    double stoch_2=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,2);
    double stoch_3=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,3);
    int Hour_curr=TimeHour(TimeCurrent());
    
    if ((stoch_1>90)&&(stoch_2>70)) K_level=90;
    if ((stoch_1<10)&&(stoch_2<30)) K_level=10;  
    if(OrdersTotal()<1)
      {        
        if((Hour_curr>=1)&&(Hour_curr<24))//проверка сигналов только в этот промежуток времени
          {
            if((K_level==10)&&(stoch_1>10))//сигнал на покупку
              {
                RefreshRates();
                Print("Сигнал на покупку. stoch_1=",stoch_1," stoch_2=",stoch_2);
                ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,Ask+TakeProfit*Point,"buy_order1",1,0,Blue);
                
                K_level=10; 
                down=0;               
              }
            if((K_level==90)&&(stoch_1<90))//сигнал на продажу
              {
                RefreshRates();
                Print("Сигнал на продажу. stoch_1=",stoch_1," stoch_2=",stoch_2);
                ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,Ask-TakeProfit*Point,"sell_order1",1,0,Red);
               
                K_level=90;
                up=0; 
              }
          }
      }
    
   
   
    return(0);
  }
   
Файлы:
 

Вы читали FAQ? А на кнопочки в верхней части окна сообщения смотрите - или они просто так нарисованы?

Сначала вставляете в код отступы (в редакторе MetaEditor), а затем, при создании сообщения, жмете SRC (или Ctrl+Alt+M) и вставляете код по-человечески.

//+------------------------------------------------------------------+
//| stohastic_system.mq4 |
//| Анатолий | |
//+------------------------------------------------------------------+

extern double Lots=0.4;
extern int TakeProfit=50;
extern int NWave=2;
extern int K=9;
extern int D=3;
extern int slowing=5;
extern int Average_method=2;
extern int price_field=0;

int K_level=0;
int down=0;
int up=0;


int init()
{
   return(0);
}

int deinit()
{
   return(0);
}

int start()
{
   int ticket=0;
   double stoch_1=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,1);
   double stoch_2=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,2);
   double stoch_3=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,3);
   int Hour_curr=TimeHour(TimeCurrent());

   if ((stoch_1>90)&&(stoch_2>70)) K_level=90;
   if ((stoch_1<10)&&(stoch_2<30)) K_level=10;
   if(OrdersTotal()<1)
   {
      if((Hour_curr>=1)&&(Hour_curr<24))//проверка сигналов только в этот промежуток времени
      {
         if((K_level==10)&&(stoch_1>10))//сигнал на покупку
         {
            RefreshRates();
            Print("Сигнал на покупку. stoch_1=",stoch_1," stoch_2=",stoch_2);
            ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,Ask+TakeProfit*Point,"buy_order1",1,0,Blue);

            K_level=10;
            down=0;
         }
         if((K_level==90)&&(stoch_1<90))//сигнал на продажу
         {
            RefreshRates();
            Print("Сигнал на продажу. stoch_1=",stoch_1," stoch_2=",stoch_2);
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,Ask-TakeProfit*Point,"sell_order1",1,0,Red);

            K_level=90;
            up=0;
         }
      }
   }

   return(0);
}

убрать все лишнее

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

 
Mathemat:

Вы читали FAQ? А на кнопочки в верхней части окна сообщения смотрите - или они просто так нарисованы?

Сначала вставляете в код отступы (в редакторе MetaEditor), а затем, при создании сообщения, жмете SRC (или Ctrl+Alt+M) и вставляете код по-человечески.

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


Простите - пытаюсь исправиться.

 
Простите еще раз. С (лишним) я вроде разобрался. А вот вставить закрытие ордеров по СТОПУ или ТРЕЙЛИНГ СТОПУ никак не получается. Нет необходимых знаний -- а учить язык времени нет тем более-- по этому прошу помощи.
Причина обращения: