Тех.возможность - страница 2

 
Вобщем есть варианты буду работать.
 
stsmotor:
Вобщем есть варианты буду работать.

Для примера: этот советник открывается в две стороны (одновременно открываем позицию Buy и Sell), выставляет Stop Loss, Take Profit и потом ничего не делает

//+------------------------------------------------------------------+
//|                                        Stop Loss Take Profit.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
CTrade         m_trade;                     // trading object
CSymbolInfo    m_symbol;                    // symbol info object
//--- input parameters
input ushort   InpStopLoss    = 30;         // Stop Loss (in pips)
input ushort   InpTakeProfit  = 90;         // Take Profit (in pips)
//---
double         ExtStopLoss;
double         ExtTakeProfit;
bool           FirstStart;
ENUM_ACCOUNT_MARGIN_MODE m_margin_mode;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetMarginMode();
   if(!IsHedging())
     {
      Print("Hedging only!");
      return(INIT_FAILED);
     }

   m_symbol.Name(Symbol());                  // sets symbol name
   m_symbol.Refresh();                       // refreshes the symbol data
   if(!RefreshRates())
     {
      Print("Error RefreshRates. Bid=",DoubleToString(m_symbol.Bid(),Digits()),
            ", Ask=",DoubleToString(m_symbol.Ask(),Digits()));
      return(INIT_FAILED);
     }
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(m_symbol.Digits()==3 || m_symbol.Digits()==5)
      digits_adjust=10;

   ExtStopLoss    = InpStopLoss   * digits_adjust * m_symbol.Point();
   ExtTakeProfit  = InpTakeProfit * digits_adjust * m_symbol.Point();

   FirstStart=true;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(FirstStart)
     {
      if(!RefreshRates())
         return;

      m_trade.Buy(m_symbol.LotsMin(),Symbol(),m_symbol.Ask(),
                  m_symbol.Bid()-ExtStopLoss,
                  m_symbol.Ask()+ExtTakeProfit);

      m_trade.Sell(m_symbol.LotsMin(),Symbol(),m_symbol.Bid(),
                   m_symbol.Ask()+ExtStopLoss,
                   m_symbol.Bid()-ExtTakeProfit);

      FirstStart=false;
     }
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
      return(false);
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetMarginMode(void)
  {
   m_margin_mode=(ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsHedging(void)
  {
   return(m_margin_mode==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
  }
//+------------------------------------------------------------------+


 

Файлы:
Причина обращения: