Автор Тема: Помогите с кодом советника  (Прочитано 3856 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн EndimionАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 44
  • +8/-1
    • Просмотр профиля
Вроде бы не плохой советник, но почему-то не открывется на Buy.
Кто-нить знает, где нужно прописать или исправить, чтобы входил и на Buy.

//+------------------------------------------------------------------+
//|                                                  Day Trading.mq4 |
//+------------------------------------------------------------------+

extern double TakeProfit = 25;
extern double Lots = 1;
extern double TrailingStop = 0;
extern double StopLoss = 50;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double rsi1_1, rsi1_0;
  double stoc2d_1, stoc2d_0, stoc2k_1, stoc2k_0;
  double MacdCurrent, MacdPrevious, SignalCurrent;
  double sar1_1, sar1_0;
  double mom3_1, mom3_0;
  int cnt, ticket, total;
 
// initial data checks
   if(Bars<10)
     {
      Print("bars less than 10");
      return(0); 
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);
     }
     
// to simplify the coding and speed up access
stoc2d_1=iStochastic(NULL,0,10,7,3,MODE_SMA,NULL,MODE_SIGNAL,1);
stoc2d_0=iStochastic(NULL,0,10,7,3,MODE_SMA,NULL,MODE_SIGNAL,0);
stoc2k_1=iStochastic(NULL,0,10,7,3,MODE_SMA,NULL,MODE_MAIN,1);
stoc2k_0=iStochastic(NULL,0,10,7,3,MODE_SMA,NULL,MODE_MAIN,0);
mom3_1=iMomentum(NULL,0,14,PRICE_OPEN,1);
mom3_0=iMomentum(NULL,0,14,PRICE_OPEN,0);
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_TYPICAL,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_TYPICAL,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_TYPICAL,MODE_SIGNAL,0);
sar1_1 =iSAR(NULL,0,0.02,0.2,1);
sar1_0 =iSAR(NULL,0,0.02,0.2,0);

// identifying open orders
   total=OrdersTotal();
   if(total<1)
   {
   if(AccountFreeMargin()<(1000*Lots))
   {
   Print("We have no money. Free Margin = ", AccountFreeMargin());
   return(0); 
   }
   
// check for long position (BUY) possibility
   if(sar1_0 <= Ask && sar1_1>sar1_0 && mom3_0<100 && MacdCurrent>SignalCurrent && stoc2k_0<=20)
   {
   ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,0,0,Green);
   if(ticket>0)
   Print("Day Trading Buying : ", Symbol());
   {
   if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
   }
   return(0);
   }
   
   
// check for short position (SELL) possibility
   if(sar1_0 >= Ask && sar1_1<sar1_0 && mom3_0>100 && MacdCurrent<SignalCurrent && stoc2k_0>=20)
   {
   ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,0,0,Red);
   if(ticket>0)
   Print("Day Trading Selling : ", Symbol());
   {
   if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
   }
   return(0);
   }
   return(0);
   }
   
// control of open orders
   for(cnt=0;cnt<total;cnt++)
   {
   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderType()<=OP_SELL &&
   OrderSymbol()==Symbol())
   {
   if(OrderType()==OP_BUY &&
   OrderSymbol()==Symbol())
   {

// long positions
   if(sar1_0 >=Ask && sar1_1<sar1_0 && mom3_0>100 && MacdCurrent<SignalCurrent && stoc2k_0>=70)
      {
      OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
   return(0);
   }

// check for trailing stop
   if(TrailingStop>0) 
   {                 
   if(Bid-OrderOpenPrice()>Point*TrailingStop)
   {
   if(OrderStopLoss()<Bid-Point*TrailingStop)
   {
   OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
   return(0);
   }
   }
   }
   }
else

// short positions
   {
   if(sar1_0<=Ask && sar1_1>sar1_0 && mom3_0<100 && MacdCurrent>SignalCurrent && stoc2k_0<=35)
      {
   OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
   return(0);
   }

// check for trailing stop
   if(TrailingStop>0) 
   {                 
   if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
   {
   if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
   {
   OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
   return(0);
   }
   }
   }
   }
   }
   }
   return(0);
   }
   
//+------------------------------------------------------------------+

Оффлайн Baklaev

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 52
  • +1/-2
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #1 : 30.06.2008 11:58 »
интересный код... если в минутке работает то и бай и селл делает

Оффлайн EndimionАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 44
  • +8/-1
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #2 : 30.06.2008 14:28 »
На часах бая нет. Именно на часах дает не плохие результаты.

Оффлайн Baklaev

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 52
  • +1/-2
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #3 : 30.06.2008 15:09 »
кстати забавная вещь стопы не ставит... либо это я что то перемудрил

Оффлайн Olker

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 49
  • +9/-1
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #4 : 30.06.2008 22:49 »
Подробно не разбирал, но:
1. В коде уровни неверно проставлены. Исправил
2. Стопы действительно не ставит
3. Красиво рисует при тестировании

Все в архиве

Оффлайн EndimionАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 44
  • +8/-1
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #5 : 30.06.2008 23:44 »
Подробно не разбирал, но:
1. В коде уровни неверно проставлены. Исправил
2. Стопы действительно не ставит
3. Красиво рисует при тестировании

Все в архиве

На графике неотображается смайл (грустн).

Оффлайн EndimionАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 44
  • +8/-1
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #6 : 30.06.2008 23:54 »
Подробно не разбирал, но:
1. В коде уровни неверно проставлены. Исправил
2. Стопы действительно не ставит
3. Красиво рисует при тестировании

Все в архиве

На графике неотображается смайл (грустн).
Все норм., были проблемы с настройками.
Спасибо!!!

Оффлайн MOHAx

  • Будущий президент
  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 450
  • +80/-82
  • Скоро займу его место
    • Просмотр профиля
Re: Помогите с кодом советника
« Ответ #7 : 15.07.2008 19:41 »
А почему он открывает только одну сделку и пока она не закроется, другую не открывает? или я просто такого не дождался? :)
Хорошо смеется тот, кто смеется после последнего!

Оффлайн NRG

  • Мыслить Чувствовать Управлять
  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 471
  • +48/-30
    • Просмотр профиля
    • Реал торги
Re: Помогите с кодом советника
« Ответ #8 : 15.07.2008 22:23 »
ЗЛО ВСЁ ЭТО. ВСЕ ЭТИ СОВЕТНИКИ ОПИСАНЫ ПРОГРАММНЫМ КОДОМ, который порой, а чаще не может описать поступки человека!  8-)
Лечим котов в мешке ex4