Как поселать сигналы с одного робота другому? (Вопрос Чайника) - страница 2

 
Будем разбираться...
 

Обьясните пожалуйста, не могу понять как это работает...

 Пример:

//+-----------ПОСЫЛАЕТ СИГНАЛ------------------------+
int start()
  {
   datetime p;
   datetime z;
   GlobalVariableSet("SIGNAL_1",p);
   GlobalVariableSet("SIGNAL_2",z);
   
   if(High[0]>High[1])
      {
      // КАК ПОСЛАТЬ BUY НА ГЛАВНУЮ ПРОГРАММУ???
      }
   if(Low[0]<Low[1])
      {
      // КАК ПОСЛАТЬ SELL НА ГЛАВНУЮ ПРОГРАММУ???
      }
   return(0);
  }
//+------------------------------------------------------------------+

//+-------------------------ПРИНИМАЕТ СИГНАЛ----------------------------+
int start()
  {
  if((GlobalVariableCheck("SIGNAL_1"))==true&&(GlobalVariableCheck("SIGNAL_2")==true))
      {
      OrderSend("EURUSD",OP_BUY,0.1,Bid,3,0,0,NULL,0,0,Green);
      }
   return(0);
  }
//+------------------------------------------------------------------+

 
SOS
 
//+-----------ПОСЫЛАЕТ СИГНАЛ------------------------+
#include <WinUser32.mqh> //--эта строчка обязательна!

 int start()
  {
   datetime p;
   datetime z;
   GlobalVariableSet("SIGNAL_1",p);
   GlobalVariableSet("SIGNAL_2",z);
   
   if(High[0]>High[1])
      {
       // КАК ПОСЛАТЬ BUY НА ГЛАВНУЮ ПРОГРАММУ???
       //--запускаем скрипт "Принимает сигнал", предварительно
       //--установив для этого скрипта "горячую клавишу" в МТ4, например Alt+Q

       keybd_event(0x12, 0, 0 ,0);
       keybd_event(0x51, 0, 0 ,0);
       keybd_event(0x51, 0, KEYEVENTF_KEYUP,0);
       keybd_event(0x12, 0, KEYEVENTF_KEYUP,0);
       }
   if(Low[0]<Low[1])
      {
      // КАК ПОСЛАТЬ SELL НА ГЛАВНУЮ ПРОГРАММУ???
      //---Хе-хе-хе.....аналогично

       }
   return(0);
  }
//+------------------------------------------------------------------+
 
Кто нибуть.,может подсказать?
 
alehandro :

Обьясните пожалуйста, не могу понять как это работает...

Пример:

 
alehandro :
попробую. если нет глобальных переменных с именами SIGNAL 1 и SIGNAL 2 то они в первом блоке создаются и им присваивается некоторое значение p и z. затем в втором блоке проверяется наличие этих глобальных переменных . в данном случае они есть и функция OrderSend() на каждом тике пытается открыть buy по не правильной цене Bid и в журнале эксперта пишется ошибка 129 - .
 

Вам код надо надо готовый, что ли? Или что понять не можете?

Ну, вот, например....

//--"Посылает сигнал" - это должно быть советником

//--"Принимает сигнал" - это должно быть скриптом

//+-----------ПОСЫЛАЕТ СИГНАЛ------------------------+
#include <WinUser32.mqh> //--эта строчка обязательна!
 int start()
  {
   if(High[0]>High[1])
      {
       // КАК ПОСЛАТЬ BUY НА ГЛАВНУЮ ПРОГРАММУ???
       GlobalVariableSet("SIGNAL_1", 1);
       //--запускаем скрипт "Принимает сигнал", предварительно
       //--установив для этого скрипта "горячую клавишу" в МТ4, например Alt+Q
       keybd_event(0x12, 0, 0 ,0);
       keybd_event(0x51, 0, 0 ,0);
       keybd_event(0x51, 0, KEYEVENTF_KEYUP,0);
       keybd_event(0x12, 0, KEYEVENTF_KEYUP,0);
       }
   if(Low[0]<Low[1])
      {
       // КАК ПОСЛАТЬ SELL НА ГЛАВНУЮ ПРОГРАММУ???
       GlobalVariableSet("SIGNAL_2", 1);
       keybd_event(0x12, 0, 0 ,0);
       keybd_event(0x51, 0, 0 ,0);
       keybd_event(0x51, 0, KEYEVENTF_KEYUP,0);
       keybd_event(0x12, 0, KEYEVENTF_KEYUP,0);
        }
   return(0);
  }
//+------------------------------------------------------------------+

//+-------------------------ПРИНИМАЕТ СИГНАЛ----------------------------+

int start()

{

if(GlobalVariableGet("SIGNAL_1")==1)

{

OrderSend ( "EURUSD",OP_BUY, 0.1,Bid, 3, 0, 0, NULL, 0, 0,Green);

GlobalVariableSet("SIGNAL_1",0);

}

if(GlobalVariableGet("SIGNAL_2")==1)

{

OrderSend("EURUSD",OP_SELL,0.1,Bid,3,0,0,NULL,0,0,Green);

GlobalVariableSet("SIGNAL_2",0);

}

return (0);

}

//+------------------------------------------------------------------+

 
//+------------------------------------------------------------------+
//|                                         RECIEVER TEST SCRIPT.mq4 |
//|                                                     Pavel Silber |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Pavel Silber"
#property link      ""
#include <WinUser32.mqh> //--эта строчка обязательна!
//+-------------------------ПРИНИМАЕТ СИГНАЛ----------------------------+
int start() 

{

if((ObjectsTotal()==0)||(ObjectsTotal()!=0))
{
if(GlobalVariableGet("SIGNAL_1")==1) 
{ 
OrderSend ( "EURUSD",OP_BUY, 0.1,Bid, 3, 0, 0, NULL, 0, 0,Green); 
GlobalVariableSet("SIGNAL_1",0); 

       keybd_event(0x12, 0, 0 ,0);
       keybd_event(0x51, 0, 0 ,0);
       keybd_event(0x51, 0, KEYEVENTF_KEYUP,0);
       keybd_event(0x12, 0, KEYEVENTF_KEYUP,0);

} 
if(GlobalVariableGet("SIGNAL_2")==1) 
{ 
OrderSend("EURUSD",OP_SELL,0.1,Bid,3,0,0,NULL,0,0,Red);
GlobalVariableSet("SIGNAL_2",0); 

       keybd_event(0x12, 0, 0 ,0);
       keybd_event(0x51, 0, 0 ,0);
       keybd_event(0x51, 0, KEYEVENTF_KEYUP,0);
       keybd_event(0x12, 0, KEYEVENTF_KEYUP,0);

}
} 
return (0); 
} 
//+------------------------------------------------------------------+
 

Скажите, пожалуйста, почему скрипт который принимает сигнал все время удаляется программой?

2013.07.16 14:30:16 RECIEVER TEST SCRIPT EURUSD,M5: removed

Код сверху.

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