Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вобщем есть варианты буду работать.
Для примера: этот советник открывается в две стороны (одновременно открываем позицию 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);
}
//+------------------------------------------------------------------+