• Уважаемый гость! Чтобы просмотреть скрытую часть информации Вам нужно зарегистрироваться.

    Быстрая регистрация!

Удалено трелинг стоп

  • Автор темы Dream
  • Дата начала
Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
Подскажите пожалуйста почему не работает трейлинг стоп??
Код:
#property strict
//                          ПОСТОЯННЫЕ

               input double    Lots  = 0.1;
               input int       Slip  = 0;
               input int       Magic = 0;
               
               input int       TrailingStep  = 100;
               input int       TrailingStop  = 250;
               input int       StopLoss      = 0;
               
               
   
int OnInit()//НАЧАЛО РАБОТЫ
  {

   
//---
   return(INIT_SUCCEEDED);
  }
  
  
  
  
void OnTick() 
//*******************************************************************************************************************************
//***************************ВСЕ ПЕРЕМЕННЫЕ.ПРОГРАММА****************************************************************************
//*******************************************************************************************************************************
 {

  //----------------------ИНДИКАТОРЫ----------------------------------------------------------------------------------------------

    
       double     Hc       =   iClose (_Symbol,PERIOD_H1,1);
       double     D        =   iClose (_Symbol,PERIOD_H1,1);
       double     Ho       =   iOpen  (_Symbol,PERIOD_H1,2);
       
       
    // 1 ЧАС
       double  MA1H1       =   iMA         (_Symbol,PERIOD_H1,1,12,0,0,1);
       double  MA13H1      =   iMA         (_Symbol,PERIOD_H1,13,0,0,0,1);
       double  MA24H1      =   iMA         (_Symbol,PERIOD_H1,24,0,0,0,1);     
       double  MACDH1a     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,1);       
       double  MACDH1b     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,2);
       double  MACDH1c     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,3);
       double  Moment1     =   iMomentum   (_Symbol,PERIOD_H1,2,PRICE_CLOSE,1);
       double  Moment2     =   iMomentum   (_Symbol,PERIOD_H1,2,PRICE_CLOSE,2);
      
      
 
//---------------------------------------------------------------------------------------------------------------------------------   
  
                     
 //-------------------------ПЕРЕМЕННЫЕ---------------------------------------------------------------------------------------------
 
                      
                      int       B      = 0;
                      int       S      = 0;
                      

//--------------------------ПОДСЩЕТ(ПРОВЕРКА)ОРДЕРОВ--------------------------------------------------------------------------------
                    for( int i = 0; i<OrdersTotal(); i++)
                  {
                    if (OrderSelect(i,SELECT_BY_POS)==true)
                    if (OrderMagicNumber()==Magic)
                  { if (OrderType()==OP_BUY)
                        B++;
                    if (OrderType()==OP_SELL)
                        S++;
                  }
                  } 
                        
//***********************************************************************************************************************************
//----------------------УСЛОВИЯ ОТКРЫТИЯ ОРДЕРОВ-------------------------------------------------------------------------------------
//***********************************************************************************************************************************
//----------------------ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ-----------------------------------------------------------------------------------
        
                  
                    
                 
                    
                    if (B==0 && Hc > MA13H1 && MACDH1a > 0.0 && MACDH1b > 0.0 && 
                                Moment1 > 100 && Moment2 > 100 && Moment1 > Moment2 )
      
      
                   {
                       int tik= OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,0,0,"",Magic,clrBlue);
                       if(tik>0)
                       Print("ОРДЕР НА ПОКУПКУ ОТКРЫТ ! ! !");
                       else
                       Print("ОШИБКА ОРДЕР НА ПОКУПКУ НЕ ОТКРЫТ ! ! !");
                   } 
                  
                  
//---------------------ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ-----------------------------------------------------------------------------------
                   
                     
                      
                     if (S==0 &&  Hc < MA13H1 && MACDH1a <0.0 && MACDH1b < 0.0 && 
                                  Moment1 < 100 && Moment2 < 100 && Moment1 < Moment2 )
       
                    {
                       int tik= OrderSend(_Symbol,OP_SELL,Lots,Bid,Slip,0,0,"",Magic,clrRed);
                       if(tik>0)
                       Print("ОРДЕР НА ПРОДОЖУ ОТКРЫТ ! ! !");
                       else
                       Print("ОШИБКА ОРДЕР НА ПРОДАЖУ НЕ ОТКРЫТ ! ! !");
                    }
                      
 //------------------------------------------------------------------------------------------------------------------------------------                  
//                     ДОБОВЛЕНИЕ СТОПЛОССА
//*************************************************************************************************************************************
 double Tstop =0, Tstep =0, Op =0, Sl =0;
 

  
            Tstop =NormalizeDouble(TrailingStop*Point(),_Digits);
            Tstep =NormalizeDouble(TrailingStep*Point(),_Digits);
            
    double  ask = NormalizeDouble(Ask,_Digits);
    double  bid = NormalizeDouble(Bid,_Digits);
           

   for(int i=OrdersTotal()-1; i>0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)==true)
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderMagicNumber()==Magic)
              {
                Op = NormalizeDouble(OrderOpenPrice(),_Digits);
                Sl = NormalizeDouble(OrderStopLoss(),_Digits);
               
               if(OrderType()==OP_BUY)
               {
                if((bid-Op)> Tstop)
                  if((bid-Sl)> Tstop)
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((bid-Tstop)+Point(),_Digits),OrderTakeProfit(),0,clrWhite)==false)
                       Print (" ошибка BUY OrderModify");
               }
               if(OrderType()==OP_SELL)
               {
                if((Op-ask)> Tstop)
                  if((Sl-ask)> Tstop||Sl==0)
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((ask+Tstop)-Point(),_Digits),OrderTakeProfit(),0,clrWhite)==false)
                       Print (" ошибка SELL OrderModify");
               }
              }
           }
        }

  }  
  
 //---------------------------------------------------------------------------------------------------------------------------------------------- 
 
 //                         КОМЕНТАРИЙ
                 Comment ("\n", " Bay ордера = ",B,
                          "\n", " SELL Ордера = ",S);   


}

    void OnDeinit(const int reason)//КОНЕЦ РАБОЫ

  {

   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
 
  • Панель управления
  • #2
Admin

Admin

Команда форума
Администратор
Регистрация
03.01.2013
Сообщения
2 166
Реакции
513
Подскажите пожалуйста почему не работает трейлинг стоп??
Код:
#property strict
//                          ПОСТОЯННЫЕ

               input double    Lots  = 0.1;
               input int       Slip  = 0;
               input int       Magic = 0;
               
               input int       TrailingStep  = 100;
               input int       TrailingStop  = 250;
               input int       StopLoss      = 0;
               
               
   
int OnInit()//НАЧАЛО РАБОТЫ
  {

   
//---
   return(INIT_SUCCEEDED);
  }
  
  
  
  
void OnTick() 
//*******************************************************************************************************************************
//***************************ВСЕ ПЕРЕМЕННЫЕ.ПРОГРАММА****************************************************************************
//*******************************************************************************************************************************
 {

  //----------------------ИНДИКАТОРЫ----------------------------------------------------------------------------------------------

    
       double     Hc       =   iClose (_Symbol,PERIOD_H1,1);
       double     D        =   iClose (_Symbol,PERIOD_H1,1);
       double     Ho       =   iOpen  (_Symbol,PERIOD_H1,2);
       
       
    // 1 ЧАС
       double  MA1H1       =   iMA         (_Symbol,PERIOD_H1,1,12,0,0,1);
       double  MA13H1      =   iMA         (_Symbol,PERIOD_H1,13,0,0,0,1);
       double  MA24H1      =   iMA         (_Symbol,PERIOD_H1,24,0,0,0,1);     
       double  MACDH1a     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,1);       
       double  MACDH1b     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,2);
       double  MACDH1c     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,3);
       double  Moment1     =   iMomentum   (_Symbol,PERIOD_H1,2,PRICE_CLOSE,1);
       double  Moment2     =   iMomentum   (_Symbol,PERIOD_H1,2,PRICE_CLOSE,2);
      
      
 
//---------------------------------------------------------------------------------------------------------------------------------   
  
                     
 //-------------------------ПЕРЕМЕННЫЕ---------------------------------------------------------------------------------------------
 
                      
                      int       B      = 0;
                      int       S      = 0;
                      

//--------------------------ПОДСЩЕТ(ПРОВЕРКА)ОРДЕРОВ--------------------------------------------------------------------------------
                    for( int i = 0; i<OrdersTotal(); i++)
                  {
                    if (OrderSelect(i,SELECT_BY_POS)==true)
                    if (OrderMagicNumber()==Magic)
                  { if (OrderType()==OP_BUY)
                        B++;
                    if (OrderType()==OP_SELL)
                        S++;
                  }
                  } 
                        
//***********************************************************************************************************************************
//----------------------УСЛОВИЯ ОТКРЫТИЯ ОРДЕРОВ-------------------------------------------------------------------------------------
//***********************************************************************************************************************************
//----------------------ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ-----------------------------------------------------------------------------------
        
                  
                    
                 
                    
                    if (B==0 && Hc > MA13H1 && MACDH1a > 0.0 && MACDH1b > 0.0 && 
                                Moment1 > 100 && Moment2 > 100 && Moment1 > Moment2 )
      
      
                   {
                       int tik= OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,0,0,"",Magic,clrBlue);
                       if(tik>0)
                       Print("ОРДЕР НА ПОКУПКУ ОТКРЫТ ! ! !");
                       else
                       Print("ОШИБКА ОРДЕР НА ПОКУПКУ НЕ ОТКРЫТ ! ! !");
                   } 
                  
                  
//---------------------ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ-----------------------------------------------------------------------------------
                   
                     
                      
                     if (S==0 &&  Hc < MA13H1 && MACDH1a <0.0 && MACDH1b < 0.0 && 
                                  Moment1 < 100 && Moment2 < 100 && Moment1 < Moment2 )
       
                    {
                       int tik= OrderSend(_Symbol,OP_SELL,Lots,Bid,Slip,0,0,"",Magic,clrRed);
                       if(tik>0)
                       Print("ОРДЕР НА ПРОДОЖУ ОТКРЫТ ! ! !");
                       else
                       Print("ОШИБКА ОРДЕР НА ПРОДАЖУ НЕ ОТКРЫТ ! ! !");
                    }
                      
 //------------------------------------------------------------------------------------------------------------------------------------                  
//                     ДОБОВЛЕНИЕ СТОПЛОССА
//*************************************************************************************************************************************
 double Tstop =0, Tstep =0, Op =0, Sl =0;
 

  
            Tstop =NormalizeDouble(TrailingStop*Point(),_Digits);
            Tstep =NormalizeDouble(TrailingStep*Point(),_Digits);
            
    double  ask = NormalizeDouble(Ask,_Digits);
    double  bid = NormalizeDouble(Bid,_Digits);
           

   for(int i=OrdersTotal()-1; i>0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)==true)
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderMagicNumber()==Magic)
              {
                Op = NormalizeDouble(OrderOpenPrice(),_Digits);
                Sl = NormalizeDouble(OrderStopLoss(),_Digits);
               
               if(OrderType()==OP_BUY)
               {
                if((bid-Op)> Tstop)
                  if((bid-Sl)> Tstop)
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((bid-Tstop)+Point(),_Digits),OrderTakeProfit(),0,clrWhite)==false)
                       Print (" ошибка BUY OrderModify");
               }
               if(OrderType()==OP_SELL)
               {
                if((Op-ask)> Tstop)
                  if((Sl-ask)> Tstop||Sl==0)
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((ask+Tstop)-Point(),_Digits),OrderTakeProfit(),0,clrWhite)==false)
                       Print (" ошибка SELL OrderModify");
               }
              }
           }
        }

  }  
  
 //---------------------------------------------------------------------------------------------------------------------------------------------- 
 
 //                         КОМЕНТАРИЙ
                 Comment ("\n", " Bay ордера = ",B,
                          "\n", " SELL Ордера = ",S);   


}

    void OnDeinit(const int reason)//КОНЕЦ РАБОЫ

  {

   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
Проверил все работает!
 

Вложения

Lis974

Lis974

Участник
Регистрация
21.02.2016
Сообщения
156
Реакции
47
Подскажите пожалуйста почему не работает трейлинг стоп??
Код:
#property strict
//                          ПОСТОЯННЫЕ

               input double    Lots  = 0.1;
               input int       Slip  = 0;
               input int       Magic = 0;
               
               input int       TrailingStep  = 100;
               input int       TrailingStop  = 250;
               input int       StopLoss      = 0;
               
               
   
int OnInit()//НАЧАЛО РАБОТЫ
  {

   
//---
   return(INIT_SUCCEEDED);
  }
  
  
  
  
void OnTick() 
//*******************************************************************************************************************************
//***************************ВСЕ ПЕРЕМЕННЫЕ.ПРОГРАММА****************************************************************************
//*******************************************************************************************************************************
 {

  //----------------------ИНДИКАТОРЫ----------------------------------------------------------------------------------------------

    
       double     Hc       =   iClose (_Symbol,PERIOD_H1,1);
       double     D        =   iClose (_Symbol,PERIOD_H1,1);
       double     Ho       =   iOpen  (_Symbol,PERIOD_H1,2);
       
       
    // 1 ЧАС
       double  MA1H1       =   iMA         (_Symbol,PERIOD_H1,1,12,0,0,1);
       double  MA13H1      =   iMA         (_Symbol,PERIOD_H1,13,0,0,0,1);
       double  MA24H1      =   iMA         (_Symbol,PERIOD_H1,24,0,0,0,1);     
       double  MACDH1a     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,1);       
       double  MACDH1b     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,2);
       double  MACDH1c     =   iMACD       (_Symbol,PERIOD_H1,8,13,9,PRICE_CLOSE,MODE_MAIN,3);
       double  Moment1     =   iMomentum   (_Symbol,PERIOD_H1,2,PRICE_CLOSE,1);
       double  Moment2     =   iMomentum   (_Symbol,PERIOD_H1,2,PRICE_CLOSE,2);
      
      
 
//---------------------------------------------------------------------------------------------------------------------------------   
  
                     
 //-------------------------ПЕРЕМЕННЫЕ---------------------------------------------------------------------------------------------
 
                      
                      int       B      = 0;
                      int       S      = 0;
                      

//--------------------------ПОДСЩЕТ(ПРОВЕРКА)ОРДЕРОВ--------------------------------------------------------------------------------
                    for( int i = 0; i<OrdersTotal(); i++)
                  {
                    if (OrderSelect(i,SELECT_BY_POS)==true)
                    if (OrderMagicNumber()==Magic)
                  { if (OrderType()==OP_BUY)
                        B++;
                    if (OrderType()==OP_SELL)
                        S++;
                  }
                  } 
                        
//***********************************************************************************************************************************
//----------------------УСЛОВИЯ ОТКРЫТИЯ ОРДЕРОВ-------------------------------------------------------------------------------------
//***********************************************************************************************************************************
//----------------------ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ-----------------------------------------------------------------------------------
        
                  
                    
                 
                    
                    if (B==0 && Hc > MA13H1 && MACDH1a > 0.0 && MACDH1b > 0.0 && 
                                Moment1 > 100 && Moment2 > 100 && Moment1 > Moment2 )
      
      
                   {
                       int tik= OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,0,0,"",Magic,clrBlue);
                       if(tik>0)
                       Print("ОРДЕР НА ПОКУПКУ ОТКРЫТ ! ! !");
                       else
                       Print("ОШИБКА ОРДЕР НА ПОКУПКУ НЕ ОТКРЫТ ! ! !");
                   } 
                  
                  
//---------------------ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ-----------------------------------------------------------------------------------
                   
                     
                      
                     if (S==0 &&  Hc < MA13H1 && MACDH1a <0.0 && MACDH1b < 0.0 && 
                                  Moment1 < 100 && Moment2 < 100 && Moment1 < Moment2 )
       
                    {
                       int tik= OrderSend(_Symbol,OP_SELL,Lots,Bid,Slip,0,0,"",Magic,clrRed);
                       if(tik>0)
                       Print("ОРДЕР НА ПРОДОЖУ ОТКРЫТ ! ! !");
                       else
                       Print("ОШИБКА ОРДЕР НА ПРОДАЖУ НЕ ОТКРЫТ ! ! !");
                    }
                      
 //------------------------------------------------------------------------------------------------------------------------------------                  
//                     ДОБОВЛЕНИЕ СТОПЛОССА
//*************************************************************************************************************************************
 double Tstop =0, Tstep =0, Op =0, Sl =0;
 

  
            Tstop =NormalizeDouble(TrailingStop*Point(),_Digits);
            Tstep =NormalizeDouble(TrailingStep*Point(),_Digits);
            
    double  ask = NormalizeDouble(Ask,_Digits);
    double  bid = NormalizeDouble(Bid,_Digits);
           

   for(int i=OrdersTotal()-1; i>0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS)==true)
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderMagicNumber()==Magic)
              {
                Op = NormalizeDouble(OrderOpenPrice(),_Digits);
                Sl = NormalizeDouble(OrderStopLoss(),_Digits);
               
               if(OrderType()==OP_BUY)
               {
                if((bid-Op)> Tstop)
                  if((bid-Sl)> Tstop)
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((bid-Tstop)+Point(),_Digits),OrderTakeProfit(),0,clrWhite)==false)
                       Print (" ошибка BUY OrderModify");
               }
               if(OrderType()==OP_SELL)
               {
                if((Op-ask)> Tstop)
                  if((Sl-ask)> Tstop||Sl==0)
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((ask+Tstop)-Point(),_Digits),OrderTakeProfit(),0,clrWhite)==false)
                       Print (" ошибка SELL OrderModify");
               }
              }
           }
        }

  }  
  
 //---------------------------------------------------------------------------------------------------------------------------------------------- 
 
 //                         КОМЕНТАРИЙ
                 Comment ("\n", " Bay ордера = ",B,
                          "\n", " SELL Ордера = ",S);   


}

    void OnDeinit(const int reason)//КОНЕЦ РАБОЫ

  {

   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
Проверил все работает!
Вот, что значит профессионал своего дела! Мне бы так соображать! ::)
 
Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
а вот у меня неработает((((
 

Вложения

Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
настройки тестера??? пробовал на каждом тике и по ценам закрытия
 
  • Панель управления
  • #7
Admin

Admin

Команда форума
Администратор
Регистрация
03.01.2013
Сообщения
2 166
Реакции
513
Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
мммм.. что за настройки покажите пример пожалуйста??
 
Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
вставляю вместо трейлинга простой стоплосс он его ставит
 
  • Панель управления
  • #10
Admin

Admin

Команда форума
Администратор
Регистрация
03.01.2013
Сообщения
2 166
Реакции
513
Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
оно?
 

Вложения

Dream

Dream

Каждый день по чуть, чуть...
Участник
Регистрация
27.02.2016
Сообщения
125
Реакции
12
+
 

Вложения

Теги Нет
Верх