IDT_library





//+------------------------------------------------------------------+
//|                       IDT_library.mq4                          |
//|                      Copyright © 2007, Globus                    |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Globus"
#property library
#include <stdlib.mqh>
#include <WinUser32.mqh>
/*
int init()
  {
   Print("Init function defined as feature sample");
  }
int deinit()
  {
   Print("Deinit function defined as feature sample too");
  }
*/

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|      cteni globalni promene typu double                             |
//+------------------------------------------------------------------+
double glob(string promena)
  {
   if(GlobalVariableCheck(promena))return(GlobalVariableGet(promena));
   else Print("Promena ",promena," neexistuje. Nutno spustit IDT_variables!");
   return(0);
  }
  
//+------------------------------------------------------------------+
//| script "intraday trading - buy limit"                            |
//+------------------------------------------------------------------+

int buy_limit(string text,int magic)
  {
 
  PlaySound("Tick.wav");
  RefreshRates();
  double PRICE=Ask-glob("skip");
  double LOTS=AccountBalance()* glob("maxrisk") *0.1 / glob("lost");
  double WITHIN=TimeCurrent()+glob("expiration")*60;  
  double sum=OrdersTotal();
  double change=0;
  
  Print ("Count of ticket ",sum);
 
  while (sum>0)
    {
    OrderSelect(sum-1,SELECT_BY_POS);
    Print (OrderTicket ());
    Print (OrderType ());
    
      if (OrderType()==2)
       {
        OrderModify( OrderTicket(), PRICE, Bid-glob("lost")*Point, Ask+glob("profit")*Point-glob("skip"), WITHIN, MidnightBlue);
        change++;    
       }
 
     sum--;
    
    }
      
  Print ("Count of changes ",change);
  if (change==0) 
  {    
 
  Print ("Buy limit at price ",PRICE);
  int ticket=OrderSend( Symbol(), OP_BUYLIMIT, LOTS, PRICE, 0, Bid-glob("lost")*Point, Ask+glob("profit")*Point-glob("skip"), text, magic,WITHIN,Blue);
   }
   
  Print("ticket : ",ticket); 
  if(ticket>1 && ticket<150)
     {
      int error=GetLastError();
      Print("Error = ",ErrorDescription(error));
      PlaySound("alert2.wav");
     }
  else PlaySound("Ok.wav"); 
  return(0);   
 
  }
//+------------------------------------------------------------------+
//| script "intraday trading - buy order"                            |
//+------------------------------------------------------------------+
int buy_order()
  {
  PlaySound("Tick.wav");
  RefreshRates();
  double PRICE=Ask;
  double LOTS=AccountBalance()* glob("maxrisk") *0.1 / glob("lost");
  
  int ticket=OrderSend( Symbol(),OP_BUY,LOTS,Ask,0,Bid-glob("lost")*Point, Ask+glob("profit")*Point,"buy order",3,0,PaleGreen);
 
  Print("ticket : ",ticket); 
  if(ticket>1 && ticket<150)
     {
      int error=GetLastError();
      Print("Error = ",ErrorDescription(error));
      PlaySound("alert2.wav");
     }
  else PlaySound("Ok.wav");      
  return(0);   
 
  }
//+------------------------------------------------------------------+
//| script "intraday trading - sell limit"                            |
//+------------------------------------------------------------------+
int sell_limit(string text,int magic)
  {
  PlaySound("Tick.wav");
  RefreshRates();
  double PRICE=Bid+glob("skip");
  double LOTS=AccountBalance()* glob("maxrisk") *0.1 / glob("lost");
  double WITHIN=TimeCurrent()+glob("expiration")*60;  
  double sum=OrdersTotal();
  double change=0;
  
  Print ("Count of ticket ",sum);
 
  while (sum>0)
    {
    OrderSelect(sum-1,SELECT_BY_POS);
    Print (OrderTicket ());
    Print (OrderType ());
    
      if (OrderType()==3)
       {
        OrderModify( OrderTicket(), PRICE, Ask+glob("lost")*Point, Bid-glob("profit")*Point+glob("skip"), WITHIN, Crimson);
        change++;    
       }
 
     sum--;
    
    }
      
  Print ("Count of changes ",change);
  if (change==0) 
  {    
 
  Print ("Sell limit at price ",PRICE);
  int ticket=OrderSend( Symbol(), OP_SELLLIMIT, LOTS, PRICE, 0, Ask+glob("lost")*Point, Bid-glob("profit")*Point+glob("skip"), text, magic,WITHIN,Red);
  }   
  
  Print("ticket : ",ticket); 
  if(ticket>1 && ticket<150)
     {
      int error=GetLastError();
      Print("Error = ",ErrorDescription(error));
      PlaySound("alert2.wav");
     }
  else PlaySound("Ok.wav");      
  return(0);
  }
  
//+------------------------------------------------------------------+
//| script "intraday trading - sell order"                            |
//+------------------------------------------------------------------+
int sell_order()
  {
  PlaySound("Tick.wav");
  RefreshRates();
  double PRICE=Bid;
  double LOTS=AccountBalance()* glob("maxrisk") *0.1 / glob("lost");
  
  int ticket=OrderSend( Symbol(),OP_SELL,LOTS,Bid,0,Ask+glob("lost")*Point, Bid-glob("profit")*Point,"sell order",3,0,DeepPink);
   
  Print("ticket : ",ticket); 
  if(ticket>1 && ticket<150)
     {
      int error=GetLastError();
      Print("Error = ",ErrorDescription(error));
      PlaySound("alert2.wav");
     }
  else PlaySound("Ok.wav");      
  return(0);   
 
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                       IDT_variables.mq4                          |
//|                      Copyright © 2004, Globus                    |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| script "nastaveni globalnich promenych"                            |
//+------------------------------------------------------------------+
int variables(int predvolba)
  {
  PlaySound("Tick.wav");
 
  // promene
  int change=0;
  int lasttickscale=MathAbs(iHighest(NULL,PERIOD_M1,MODE_HIGH,1,0)-iLowest(NULL,PERIOD_M1,MODE_LOW,1,0)); //rozsah posledniho ticku
  int tenminutes=MathAbs(iHighest(NULL,PERIOD_M1,MODE_HIGH,10,0)-iLowest(NULL,PERIOD_M1,MODE_LOW,10,0));  //rozsah poslednich deseti ticku
  int fifteenminutes=MathAbs(iHighest(NULL,PERIOD_M1,MODE_HIGH,15,0)-iLowest(NULL,PERIOD_M1,MODE_LOW,15,0));  //rozsah poslednich deseti ticku
  int profit=3;       //profit do plusu
  int lost=13;        //akceptovane ztraty
  int expiration=60;  //doba v minutach do vyprseni cekajiciho prikazu
  double maxrisk=0.02;  //maximalni riziko na dany obchod v procentech uctu
  double skip=0.0003;   //nakup nebo prodej lisici se o dany pocet bodu
  
  //podminky
  if (predvolba!=change) change=predvolba;
  if (Volume[1]>20 && change==0 && lasttickscale>4) change=1;  //splaseny trh
  if (change==0 && tenminutes>4) change=2;  //trendovy trh
  if (change==0 && tenminutes<5) change=3;  //pohyb do strany
  
  //hodnoty
  switch (change)
   {
      case 1:
         profit=10;       //profit do plusu
         lost=4;        //akceptovane ztraty
         expiration=10;  //doba v minutach do vyprseni cekajiciho prikazu
         maxrisk=0.02;  //maximalni riziko na dany obchod v procentech uctu
         skip=0.0006;   //nakup nebo prodej lisici se o dany pocet bodu  
         
         break;
         
      case 2:
         profit=4;       //profit do plusu
         lost=MathRound(fifteenminutes*0.8);        //akceptovane ztraty
         expiration=15;  //doba v minutach do vyprseni cekajiciho prikazu
         maxrisk=0.02;  //maximalni riziko na dany obchod v procentech uctu
         skip=0.0004;   //nakup nebo prodej lisici se o dany pocet bodu   
         
         if (lost>13 || lost<4) lost=12; 
         break;
         
      case 3:
         profit=2;       //profit do plusu
         lost=MathRound(tenminutes);        //akceptovane ztraty
         expiration=60;  //doba v minutach do vyprseni cekajiciho prikazu
         maxrisk=0.02;  //maximalni riziko na dany obchod v procentech uctu
         skip=0.0003;   //nakup nebo prodej lisici se o dany pocet bodu   
         
         if (lost>13 || lost<4) lost=8; 
         break;
         
      case 4: //automat
         profit=1;       //profit do plusu - automat
         lost=MathRound(tenminutes);        //akceptovane ztraty
         expiration=10;  //doba v minutach do vyprseni cekajiciho prikazu
         maxrisk=0.02;  //maximalni riziko na dany obchod v procentech uctu
         skip=0.0002;   //nakup nebo prodej lisici se o dany pocet bodu   
         
         if (lost>13 || lost<4) lost=8; 
         break;
         
      default:
         profit=3;       //profit do plusu
         lost=13;        //akceptovane ztraty
         expiration=60;  //doba v minutach do vyprseni cekajiciho prikazu
         maxrisk=0.02;  //maximalni riziko na dany obchod v procentech uctu
         skip=0.0002;   //nakup nebo prodej lisici se o dany pocet bodu   
         break;
   }
  Print("Change : ",change," 10/minut : ",tenminutes," 15/minut : ",fifteenminutes);
  GlobalVariableSet("pattern",change);
  GlobalVariableSet("profit",profit);
  GlobalVariableSet("profit",profit);
  GlobalVariableSet("lost",lost);
  GlobalVariableSet("expiration",expiration);
  GlobalVariableSet("maxrisk",maxrisk);
  GlobalVariableSet("skip",skip);

  PlaySound("Ok.wav");      
  return(change);   
 
  }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains tick volumes of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached

Other Features:

It plays sound alerts