Вопрос: можно ли заставить эксперта нажимать определенную кнопку в определенный момент?

 

Вопрос: можно ли заставить эксперта нажимать определенную кнопку в определенный момент?
например - при срабатывании сигнала нажимаем кнопку "Q"
Немогу отыскать самостоятельно ответ на этот вопрос, помомогите кто знает...заранее благодарен.

 
Interception Вам поможет.
 
Rosh:
Interception Вам поможет.

Спасиба но ответ для себя я ненашол....возможно Вы непоняли вопрос.
Мне нужно чтоб Q нажимал эксперт
 
Действительно, наверно не так понял. Просто хотел показать, что есть способы программной эмуляции нажатия клавиатуры через импорт функций из стандартных библиотек. По-моему, в теме про визуализацию тестирования это проходило.
 

в таком виде код не читабельный, если хотите что-бы вам помогли вставте код через кнопку "MQL"

 
G1youK:
Прошу прощение за мою неопытность но мне непонятно...как вставить через "MQL"
Если кому несложно обьясните?

'Как вставлять код MQL-4 в пост'
 
2 solandr спасибо.

Вобщем я нашол вот этот индикатор:
#property copyright "Copyright © 2007, lukas1"
#property link      "http://www.alpari-idc.ru/"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 Green
//---- input parameters
extern int SSP       = 6;     //период линейного разворота индикатора
extern int CountBars = 2250;  //расчетный период 
extern int SkyCh     = 13;    //чувствительность к пробою канала 
//Должна быть в диапазоне 0-50. 0 - нет стрелок. Больше 50 - перерегулирование
int    i;
double high, low, smin, smax;
double val1[];      // буфер для бай
double val2[];      // буфер для селл
double Sky_BufferH[];
double Sky_BufferL[];
bool   uptrend, old;
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()  
  {
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 233);        // стрелка для бай
   SetIndexBuffer(0, val1);      // индекс буфера для бай
   SetIndexDrawBegin(0, 2*SSP);
 
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 234);        // стрелка для селл
   SetIndexBuffer(1, val2);      // индекс буфера для селл
   SetIndexDrawBegin(1, 2*SSP);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(2, Sky_BufferH);
   SetIndexLabel(2, "High");
   SetIndexDrawBegin(2, 2*SSP);
 
   SetIndexStyle(3, DRAW_LINE);
   SetIndexBuffer(3, Sky_BufferL);
   SetIndexLabel(3, "Low");
   SetIndexDrawBegin(3, 2*SSP);
//---- 
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Calculation of SilverTrend lines
//+------------------------------------------------------------------+
int start()
  {   
   int counted_bars = IndicatorCounted();
//---- последний посчитанный бар будет пересчитан
   if(counted_bars > 0) counted_bars--;
//----
   if(Bars <= SSP + 1)        return(0);
//---- initial zero
   uptrend       =false;
   old           =false;
   GlobalVariableSet("goSELL", 0); // задали существование и обнулили goSELL=0
   GlobalVariableSet("goBUY", 0);  // задали существование и обнулили goBUY =0
//----
   for(i = CountBars - SSP; i >= 0; i--) // уменьш значение shift на 1 за проход;
     { 
       high = High[iHighest(Symbol(),0,MODE_HIGH,SSP,i)]; 
       low = Low[iLowest(Symbol(),0,MODE_LOW,SSP,i)]; 
       smax = high - (high - low)*SkyCh / 100; // smax ниже high с учетом коэфф.SkyCh
       smin = low + (high - low)*SkyCh / 100;  // smin выше low с учетом коэфф.SkyCh
        val1[i] = 0;  
       val2[i] = 0;
       if(Close[i] < smin && i!=0 )    // выключено мерцание стрелок (i!=0)
       {
       uptrend = false;
       }
        if(Close[i] > smax && i!=0 )    // выключено мерцание стрелок (i!=0)    
        {
        uptrend = true;       
       }       
       if(uptrend != old && uptrend == false)
         {
           val2[i] = high; // если условия выполнены то рисуем val1
           if(i == 0)                       GlobalVariableSet("goBUY",1);
           
         }
       if(uptrend != old && uptrend == true ) 
         {
           val1[i] = low; // если условия выполнены то рисуем val2
           if(i == 0)                GlobalVariableSet("goSELL",1);
         }
       old=uptrend;
       Sky_BufferH[i]=high - (high - low)*SkyCh / 100;
       Sky_BufferL[i]=low +  (high - low)*SkyCh / 100;
     }
   return(0);
  }
//+------------------------------------------------------------------+
Я хотел бы чтоб при срабатывании индикатора (стрелочка вверх или вниз) включался вот это скрипт:

#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"
 
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start() {
  double Lots;
  int    op;
  for (int i=OrdersTotal()-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol()) {
        op=OrderType();
        if (op==OP_BUY) {
          Lots=OrderLots();
          OrderClose(OrderTicket(),OrderLots(),Bid,7,CLR_NONE);
          OrderSend(Symbol(),OP_SELL,Lots,Bid,7,0,0,"Reverse",0,0,CLR_NONE);
        }
        if (op==OP_SELL) {
          Lots=OrderLots();
          OrderClose(OrderTicket(),OrderLots(),Ask,7,CLR_NONE);
          OrderSend(Symbol(),OP_BUY,Lots,Ask,7,0,0,"Reverse",0,0,CLR_NONE);
        }
      }
    }
  }
}
//+------------------------------------------------------------------+

Прошу всех кто откликнется необсуждать советника т.к это мне нужно для примера и личного понимания.
Зарание примного благодарен.
 

предлагаю устроить чемпионат советников по Quake.

 
BabyBear:

предлагаю устроить чемпионат советников по Quake.

простите?
 
Тут пример как нажимать кнопки
http://www.metatrader4.com/ru/forum/7556/
 
G1youK писал (а):

Я хотел бы чтоб при срабатывании индикатора (стрелочка вверх или вниз) включался вот это скрипт:
Этот скрипт элементарно превращается в функцию или процедуру MQL4 и вставляется в нужном месте эксперта после проверки выполнения необходимого условия срабатывания.

Если Вам нужно, чтобы эксперт нажимал кнопки для запуска скрипта, то это сложный обходной путь. Лучше и проще сделать так, как написано выше.
Причина обращения: