Советники: OpenTiks - страница 10

 
zerkmax:
Исправленная версия трала:
void TrailingStairs(int ticket,int trldistance)
{
int Spred=Ask - Bid;
if (OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice())>(Point*trldistance))
{
if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Bid,3,Green);
}
}
}
}
else
{
if((OrderOpenPrice()-Ask)>(Point*trldistance))
{
if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Ask,3,Green);
}
}
}
}
zerkmax:
Исправленная версия трала:
void TrailingStairs(int ticket,int trldistance)
{
int Spred=Ask - Bid;
if (OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice())>(Point*trldistance))
{
if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Bid,3,Green);
}
}
}
}
else
{
if((OrderOpenPrice()-Ask)>(Point*trldistance))
{
if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Ask,3,Green);
}
}
}
}
}

здрасте, я не понимаю в языке qml и прошу помочь если я заменю в советнике часть на вот эту то он будет доработан ?)))

 
Lamer:
zerkmax:
Исправленная версия трала:
void TrailingStairs(int ticket,int trldistance)
{
int Spred=Ask - Bid;
if (OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice())>(Point*trldistance))
{
if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Bid,3,Green);
}
}
}
}
else
{
if((OrderOpenPrice()-Ask)>(Point*trldistance))
{
if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Ask,3,Green);
}
}
}
}
zerkmax:
Исправленная версия трала:
void TrailingStairs(int ticket,int trldistance)
{
int Spred=Ask - Bid;
if (OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice())>(Point*trldistance))
{
if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Bid,3,Green);
}
}
}
}
else
{
if((OrderOpenPrice()-Ask)>(Point*trldistance))
{
if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Ask,3,Green);
}
}
}
}
}

здрасте, я не понимаю в языке qml и прошу помочь если я заменю в советнике часть на вот эту то он будет доработан ?)))

нет конечно, это только трал, а логика остается та же ))

 

Не могу понять почему когда я запускаю свою версию OpenTiks + RSI я не получаю столь сногсшибательных результатов как у вас. Вроде и код правильный. Странно :(((

 

Хотя результаты все равно хорошие.

 
sergey13:

Не могу понять почему когда я запускаю свою версию OpenTiks + RSI я не получаю столь сногсшибательных результатов как у вас. Вроде и код правильный. Странно :(((

Вы уверены что код ПРАВИЛЬНЫЙ, т.е. такой как у меня?

 

Как вам сказать. Изменения в условиях buy учтены, Trailing Stop исправлен. А, что касается RSI, то тут не ручаюсь, т.к. вашей версии не видел. Я взял переделанную версию вашего индикатора с сайта http://www.tradingsystemforex.com/expert-advisors-backtesting/590-opentiks-expert-advisor.html (у них, кстати, не были исправлены 2 вышеуказанные ошибки, пришлось подправить) Там есть версия с динамическим лотом и Стохастиком. Ну а я заменил Стохастик на RSI.  Вроде все правильно.

Хотя если у вас почти за год на минутном 114 сделок, то у меня ГОРАЗДО больше. Это настораживает. 

 
//+------------------------------------------------------------------+
//|                                                     OpenTiks.mq4 |
//|                                        Copyright © 2008, ZerkMax |
//|                                                      zma@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, ZerkMax"
#property link      "zma@mail.ru"
extern int    TrailingStop   = 30;
extern int    StopLoss       = 0;
extern double Lots           = 0.01;
extern bool   RiskManagement = false; // money management (управление капиталом)
extern double RiskPercent    = 10;    // risk in percentage (риск в процентах)
extern int    magicnumber    = 777;
extern bool   PolLots        = false;
extern int    MaxOrders      = 1;
extern string RSI            = "RSI";
extern int    TimeFrame      = 0;
extern int    RSIperiod      = 14;
extern int    applied_price  = 0;
extern int    LowLevel       = 30;
extern int    HighLevel      = 70;
int prevtime;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
//risk management
   
   bool MM=RiskManagement;
   if(MM){if(RiskPercent<0.1||RiskPercent>100){Comment("Invalid Risk Value.");return(0);}
   else{Lots=MathFloor((AccountFreeMargin()*AccountLeverage()*RiskPercent*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*
   MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);}}
   if(MM==false){Lots=Lots;}
   int i=0;  
   int total = OrdersTotal();   
   for (i=0; i <= total; i++) 
     {
      if(TrailingStop>0)  
       {                 
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
       if(OrderMagicNumber() == magicnumber) 
         {
         TrailingStairs(OrderTicket(),TrailingStop);
         }
       }
     }
bool BuyOp=false;
bool SellOp=false;
double rsi;
rsi=iCustom(Symbol(),0,"#MTF_RSI",TimeFrame,RSIperiod,applied_price,0,i);
if (rsi<LowLevel&&Low[0]>Low[1]&&Low[1]>Low[2]&&Low[2]>Low[3]&&Open[0]>Open[1]&&Open[1]>Open[2]&&Open[2]>Open[3]) BuyOp=true;
if (rsi>HighLevel&&High[0]<High[1]&&High[1]<High[2]&&High[2]<High[3]&&Open[0]<Open[1]&&Open[1]<Open[2]&&Open[2]<Open[3]) SellOp=true;
   if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0];
   if(!IsTradeAllowed()) 
     {
       prevtime = Time[1];
       return(0);
     }
   if (total < MaxOrders || MaxOrders == 0)
     {   
       if(BuyOp)
        { 
         if (StopLoss!=0)
          {
           OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-(StopLoss*Point),0,"OpenTiks_Buy",magicnumber,0,Green);
          }
         else
          {
           OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"OpenTiks_Buy",magicnumber,0,Green);
          }
        }
       if(SellOp)
        { 
         if (StopLoss!=0)
          {
           OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+(StopLoss*Point),0,"OpenTiks_Sell",magicnumber,0,Red);
          } 
         else 
          {
           OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"OpenTiks_Sell",magicnumber,0,Red);
          }
        }
     }
   
//----
   return(0);
  } 
//+------------------------------------------------------------------+
void TrailingStairs(int ticket,int trldistance)
   {
    int Spred=Ask - Bid;
    if (OrderType()==OP_BUY)
      {
       if((Bid-OrderOpenPrice())>(Point*trldistance))
         {
          if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
            {
             OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
             if (PolLots)
             if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
               {
               OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green);
               }
             else
               {
               OrderClose(ticket,OrderLots(),Bid,3,Green);
               }
            }
         }
      }
     else
       {
        if((OrderOpenPrice()-Ask)>(Point*trldistance))
          {
           if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
             {
              OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
             if (PolLots)
             if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
               {
               OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green);
               }
             else
               {
               OrderClose(ticket,OrderLots(),Ask,3,Green);
               }
             }
          }
       }
   }


Чтобы долго не объяснять привожу вариант кода которым пользуюсь. Если заметите ошибку, подскажите пожалуйста.

 
sergey13:

Как вам сказать. Изменения в условиях buy учтены, Trailing Stop исправлен. А, что касается RSI, то тут не ручаюсь, т.к. вашей версии не видел. Я взял переделанную версию вашего индикатора с сайта http://www.tradingsystemforex.com/expert-advisors-backtesting/590-opentiks-expert-advisor.html (у них, кстати, не были исправлены 2 вышеуказанные ошибки, пришлось подправить) Там есть версия с динамическим лотом и Стохастиком. Ну а я заменил Стохастик на RSI. Вроде все правильно.

Хотя если у вас почти за год на минутном 114 сделок, то у меня ГОРАЗДО больше. Это настораживает.

рси я использую совсем не так. Кроме того я использую стандартный рси (iRSI), от этого и количество выходов другое, параметры для сравнения действительно 30/70, в прошлом году они работали лучше всего. в этом году на таких параметрах однозначный слив, в данный момент идет странный ниспадающий тренд (все это касается пары евройена, на других не торгую). Ну и система ММ немного другая, но это не принципиально

 
zerkmax:
sergey13:

Как вам сказать. Изменения в условиях buy учтены, Trailing Stop исправлен. А, что касается RSI, то тут не ручаюсь, т.к. вашей версии не видел. Я взял переделанную версию вашего индикатора с сайта http://www.tradingsystemforex.com/expert-advisors-backtesting/590-opentiks-expert-advisor.html (у них, кстати, не были исправлены 2 вышеуказанные ошибки, пришлось подправить) Там есть версия с динамическим лотом и Стохастиком. Ну а я заменил Стохастик на RSI. Вроде все правильно.

Хотя если у вас почти за год на минутном 114 сделок, то у меня ГОРАЗДО больше. Это настораживает.

рси я использую совсем не так. Кроме того я использую стандартный рси (iRSI), от этого и количество выходов другое, параметры для сравнения действительно 30/70, в прошлом году они работали лучше всего. в этом году на таких параметрах однозначный слив, в данный момент идет странный ниспадающий тренд (все это касается пары евройена, на других не торгую). Ну и система ММ немного другая, но это не принципиально



Не согласен, что дело в том, что я использую #MTF_RSI 'MTF RSI', а вы стандартный (iRSI), потому как я добавлял на график их оба, сравнивал и НИКАКИХ отличий не нашел. В #MTF_RSI есть, конечно, возможность использовать значения с другого таймфрейма, но я пока этого не делал. Так что значения 2-х индикаторов идентичны.

Поэтому, если в самом приведенном коде советника ошибок нет, то я не понимаю в чем дело.

 
sergey13:
zerkmax:
sergey13:

Как вам сказать. Изменения в условиях buy учтены, Trailing Stop исправлен. А, что касается RSI, то тут не ручаюсь, т.к. вашей версии не видел. Я взял переделанную версию вашего индикатора с сайта http://www.tradingsystemforex.com/expert-advisors-backtesting/590-opentiks-expert-advisor.html (у них, кстати, не были исправлены 2 вышеуказанные ошибки, пришлось подправить) Там есть версия с динамическим лотом и Стохастиком. Ну а я заменил Стохастик на RSI. Вроде все правильно.

Хотя если у вас почти за год на минутном 114 сделок, то у меня ГОРАЗДО больше. Это настораживает.

рси я использую совсем не так. Кроме того я использую стандартный рси (iRSI), от этого и количество выходов другое, параметры для сравнения действительно 30/70, в прошлом году они работали лучше всего. в этом году на таких параметрах однозначный слив, в данный момент идет странный ниспадающий тренд (все это касается пары евройена, на других не торгую). Ну и система ММ немного другая, но это не принципиально

Не согласен, что дело в том, что я использую #MTF_RSI 'MTF RSI', а вы стандартный (iRSI), потому как я добавлял на график их оба, сравнивал и НИКАКИХ отличий не нашел. В #MTF_RSI есть, конечно, возможность использовать значения с другого таймфрейма, но я пока этого не делал. Так что значения 2-х индикаторов идентичны.

Поэтому, если в самом приведенном коде советника ошибок нет, то я не понимаю в чем дело.


то я не понимаю в чем дело. - рси я использую совсем не так

Причина обращения: