[Помогите написать советник, я новичок в MQL и плохо все понимаю. Буду очень признателен. Советник на основании RSI. ] Советник - страница 2

 
PAVEL10: Я первый раз на форуме, и не знаю вашего устава...

Даже не зная устава, можно соообразить, что панель с кнопочками над полем сообщения не просто так там торчит и, значит, что-то да умеет:


 
Лично фантазировал код
for(int i=OrdersTotal();i>0;i--){ // откроем цикл пирибора ордеров
 OrderSelect(i-1,SELECT_BY_POS );           
 //Alert ("OrderType( )", OrderType( ));
 if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==1000){   //если ордер на этом инструменте
if(OrderType( )==OP_BUYSTOP){X++;}
if(OrderType( )==OP_BUY){X++;}}}                          //сосчитаем сколько всего ордиров бай и байстоп
X=X-dolivka;  // Alert ("X+++", X," dolivka ",dolivka);
if (X<=0  ){//Alert ("Price", Price);                         //если таких ордиров нет тогда ставим отложенник. Ордеров также может быть при желании больше чем 
//один,на виличину доливки.Доливка само может меняться по ходу торговли.
                 // Alert ("X", X);

   tiket= OrderSend( Symbol(), OP_BUYSTOP,  volume*A, Price +otstup*Point,Point * 3, R1, Price+takeprofit*Point+otstup*Point, "OP_BUYSTOP", 1000,  expiration, Red); 
 int Error=GetLastError( ); // Alert ("OP_BUYSTOP", GetLastError( )); 
    }M=0;
   if (Error !=0 ) { Print ( " Error  OP_BUYSTOP " ,Error," Symbol ",Symbol(), " tiket ",tiket," volume*A ",volume*A," Price +otstup*Point ",Price +otstup*Point," Price+takeprofit*Point+otstup*Point ",Price+takeprofit*Point+otstup*Point, 
  " Ask ", Ask , " Bid " , Bid );
   Error=0;}
 
PAVEL10:

Я первый раз на форуме, и не знаю вашего устава...

Почему советник работает только в бай и только на тестере?

Его надо включить потому что.
 
paukas И как его включить? Dimka-novitsek, хороший код...
 
PAVEL10:
paukas И как его включить? Dimka-novitsek, хороший код...


Советы, как и код бывают разные

Лучший советчик - Вы сами

Учите матчасть

 
Ок!
 

Спасибо!! его включить? Да вы что? На вкладне новигатор жмете советники, раскрывается список. Перетягиваете нужный советник на график! Если рожа не улыбается, жмете левой мышью на нее, появляется окно советники, там в правой части окна вкладка в ней разрешить советнику торговать. Щас сам проверю. Да, да- жметелевой мышью по инструменту, второе слово сверху советники, свойство, разришить советнику торгоать. Главное, что б он улыбался!!!

Я про включить вчира ведь и не дочитал..

 

Да он улыбается только не работает... На тестере работает, а так нет.

Вот код

extern double StopLoss =500; 
 extern double TakeProfit =50; 

 bool Work=true; // Эксперт будет работать.



 //+------------------------------------------------------------------+
 //| expert initialization function |
 //+------------------------------------------------------------------+
 int init()
 {
 //----

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

 //----
 return(0);
 }
 //+------------------------------------------------------------------+
 //| expert start function |
 //+------------------------------------------------------------------+
 int start()
 {

 // if(!IsTradeAllowed()) 
 if(IsTradeAllowed()) Print("Trade allowed");

 if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

 if ( iRSI( NULL , 0, 5, PRICE_CLOSE,0)<30) 

 {
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point); 
 return;

 } 
 if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)
 if ( iRSI( NULL , 0, 5, PRICE_CLOSE,0)>70)
 {
 OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss* Point,Bid-TakeProfit*Point);
 return(0);

 } 

 return(0);
 }
 

Pavel10,

1. OrderSelect (0, ....) выберет первый попавшийся ордер. Он может оказаться вовсе по другому инструменту

2. Замените

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point); 

на

OrderSend(Symbol(),OP_BUY,0.1,Ask,3, NormalizeDouble (Bid-StopLoss*Point, Digits), NormalizeDouble (Ask+TakeProfit*Point, Digits)); 

3. В некотрых ДЦ нельзя при открытии ордеров сразу задавать TP и SL. В этом случае надо открыть ордер с нулевыми значениями TP и SL, а потом уже модифицировать эти значения (OrderModify (...))

4. Посмотрите лог. Что там пишется?

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