Author: Copyright 2014, papaklass.
Orders Execution
It automatically opens orders when conditions are reached
0 Views
0 Downloads
0 Favorites
TestMajor
//+------------------------------------------------------------------+
//|                                                    TestMajor.mq4 |
//|                                       Copyright 2013, papaklass. |
//|                           http://www.mql4.com/ru/users/papaklass |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, papaklass."
#property link      "http://www.mql4.com/ru/users/papaklass"
#property strict
#property show_inputs

extern int     DIR  = OP_BUY; //0 - OP_BUY, 1 - OP_SELL
extern double  RISK = 0.05;   //ïðîöåíò îò áàëàíñà (AccountBalance * RISK)

   
//èíñòðóìåíòû ïî êîòîðûì îòêðûâàþòñÿ ïîçèöèè
string sy[6] = {"AUDUSD", "EURUSD", "GBPUSD", "USDCHF", "USDJPY", "USDCAD"};

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int a;
   
   //öèêë îòêðûòèÿ ïîçèöèé
   for(int i = 0; i < 6; i++){
      ResetLastError();
      
      //îáúÿâëåíèå ëîêàëüíûõ ïåðåìåííûõ è ïîëó÷åíèå ðûíî÷íîãî îêðóæåíèÿ ïî ñèìâîëó
      double vl      = AccountBalance() * RISK / MarketInfo( sy[i], MODE_MARGINREQUIRED );
      double price   = Dbl_If(DIR == OP_BUY, MarketInfo( sy[i], MODE_ASK ), MarketInfo( sy[i], MODE_BID ));
      
      //íîðìàëèçóåì îáúåì îòêðûâàåìîé ïîçèöèè
      vl = NormalLot(vl, i);
      
      Print(sy[i],"   vl = ",vl,"   price = ",price);
      
      a = OrderSend(sy[i], DIR, vl, price, 3, 0, 0, "", 12345, 0, Green);
      
      if(a < 0)Print("Îøèáêà ïðè îòêðûòèè îðäåðà ïî ñèìâîëó ", sy[i],"   err = ",GetLastError());
   }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

double Dbl_If(bool Condition, double value1, double value2){
   if(Condition)return(value1);
   else         return(value2);
}
//+------------------------------------------------------------------+

//âîçâðàùàåò íîðìàëèçîâàííûé ëîò
double NormalLot( double lot, int nmb ){
   int    k = 0;
   double minLot  = MarketInfo( sy[nmb], MODE_MINLOT );
   double maxLot  = MarketInfo( sy[nmb], MODE_MAXLOT );
   double step    = MarketInfo( sy[nmb], MODE_LOTSTEP );
   if( step <= 0.001 ){ k=3; }else{
   if( step <= 0.01  ){ k=2; }else{
   if( step <= 0.1   ){ k=1; } } }
   if( maxLot != 0 ){
      return( NormalDbl( MathMin( maxLot, MathMax( minLot, lot ) ), nmb, k ) );
   }else{
      return( NormalDbl( MathMax( minLot, lot ), nmb, k ) );
   }
   return( -1 );
}//----------------------------------------------------------------------------+
//âîçâðàùàåò íîðìàëèçîâàííîå çíà÷åíèå òèïà Double â ñëó÷àå óñïåõà
//è -1 â îáðàòíîì ñëó÷àå
double NormalDbl( double d, int nmb, int n = -1 ){
   int dgt = (int)MarketInfo( sy[nmb], MODE_DIGITS );
   if( n <  0 ){ return( NormalizeDouble( d, dgt ) ); }
   if( n >= 0 ){ return( NormalizeDouble( d, n ) ); }
   return( -1 );
}//----------------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---