Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
блин,смотри,есть евро\доллар и фунт долар.Мне нужно чтобы советник открывал по ним 2 сделки одновременно,по евро\доллару покупка,по фунту продажа,при этом ставится тэйк 10п и стоп 20п
блин,смотри,есть евро\доллар и фунт долар.Мне нужно чтобы советник открывал по ним 2 сделки одновременно,по евро\доллару покупка,по фунту продажа,при этом ставится тэйк 10п и стоп 20п
Вы советник запустили? Что получилось? И слова подбирайте, пожалуйста.
извините,не хотел никак оскорбить
извините,не хотел никак оскорбить
пока нет
пока нет
Версия 1.002: открываем две позиции, пока без стопов:
Версия 1.003 - две позиции, с уровнями Take Profit и Stop Loss:
//| CtradeTest.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.003"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//---
input string first="EURUSD";
input ushort InpTakeProfit_1 =10; // Take Profit Symbol #1 (in pips)
input ushort InpStopLoss_1 =20; // Stop Loss Symbol #1 (in pips)
input string second="GBPUSD";
input ushort InpTakeProfit_2 =10; // Take Profit Symbol #2 (in pips)
input ushort InpStopLoss_2 =20; // Stop Loss Symbol #2 (in pips)
//---
ulong m_magic=15489; // magic number
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
CSymbolInfo m_symbol_1; // symbol info object for symbol "first"
CSymbolInfo m_symbol_2; // symbol info object for symbol "second"
double ExtTakeProfit_1 =0.0;
double ExtStopLoss_1 =0.0;
double ExtTakeProfit_2 =0.0;
double ExtStopLoss_2 =0.0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
m_symbol_1.Name(first);
m_symbol_1.Refresh();
m_symbol_2.Name(second);
m_symbol_2.Refresh();
if(!RefreshRates())
{
Print("Error RefreshRates.",
m_symbol_1.Name()," Bid=",DoubleToString(m_symbol_1.Bid(),Digits()),
m_symbol_1.Name()," Ask=",DoubleToString(m_symbol_1.Ask(),Digits()),
m_symbol_2.Name()," Bid=",DoubleToString(m_symbol_2.Bid(),Digits()),
m_symbol_2.Name()," Ask=",DoubleToString(m_symbol_2.Ask(),Digits()));
return(INIT_FAILED);
}
m_trade.SetExpertMagicNumber(m_magic);
//--- tuning for 3 or 5 digits
int digits_adjust=1;
if(m_symbol_1.Digits()==3 || m_symbol_1.Digits()==5)
digits_adjust=10;
ExtTakeProfit_1 = InpTakeProfit_1 * digits_adjust * m_symbol_1.Point();
ExtStopLoss_1 = InpStopLoss_1 * digits_adjust * m_symbol_1.Point();
digits_adjust=1;
if(m_symbol_2.Digits()==3 || m_symbol_2.Digits()==5)
digits_adjust=10;
ExtTakeProfit_2 =InpTakeProfit_2 * digits_adjust*m_symbol_2.Point();
ExtStopLoss_2 =InpStopLoss_2 * digits_adjust*m_symbol_2.Point();
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(!RefreshRates())
return;
//--- count positions
int total=0;
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
if(m_position.SelectByIndex(i))
if((m_position.Symbol()==m_symbol_1.Name() || m_position.Symbol()==m_symbol_2.Name()) &&
m_position.Magic()==m_magic)
total++;
if(total==0)
{
m_trade.Buy(0.01,m_symbol_1.Name(),m_symbol_1.Ask(),
m_symbol_1.Bid()-ExtStopLoss_1,
m_symbol_1.Bid()+ExtTakeProfit_1);
m_trade.Sell(0.01,m_symbol_2.Name(),m_symbol_2.Bid(),
m_symbol_2.Ask()+ExtStopLoss_2,
m_symbol_2.Ask()-ExtTakeProfit_2);
}
double bid_1=m_symbol_1.Bid();
double bid_2=m_symbol_2.Bid();
Comment(first," Bid: ",DoubleToString(bid_1,m_symbol_1.Digits()),"\n",
second," Bid: ",DoubleToString(bid_2,m_symbol_2.Digits()));
}
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data |
//+------------------------------------------------------------------+
bool RefreshRates()
{
//--- refresh rates
if(!m_symbol_1.RefreshRates() || !m_symbol_2.RefreshRates())
return(false);
//--- protection against the return value of "zero"
if(m_symbol_1.Ask()==0 || m_symbol_1.Bid()==0 || m_symbol_2.Ask()==0 || m_symbol_2.Bid()==0)
return(false);
//---
return(true);
}
//+------------------------------------------------------------------+
df
Версия 1.003 - две позиции, с уровнями Take Profit и Stop Loss:
//| CtradeTest.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.003"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//---
input string first="EURUSD";
input ushort InpTakeProfit_1 =10; // Take Profit Symbol #1 (in pips)
input ushort InpStopLoss_1 =20; // Stop Loss Symbol #1 (in pips)
input string second="GBPUSD";
input ushort InpTakeProfit_2 =10; // Take Profit Symbol #2 (in pips)
input ushort InpStopLoss_2 =20; // Stop Loss Symbol #2 (in pips)
//---
ulong m_magic=15489; // magic number
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
CSymbolInfo m_symbol_1; // symbol info object for symbol "first"
CSymbolInfo m_symbol_2; // symbol info object for symbol "second"
double ExtTakeProfit_1 =0.0;
double ExtStopLoss_1 =0.0;
double ExtTakeProfit_2 =0.0;
double ExtStopLoss_2 =0.0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
m_symbol_1.Name(first);
m_symbol_1.Refresh();
m_symbol_2.Name(second);
m_symbol_2.Refresh();
if(!RefreshRates())
{
Print("Error RefreshRates.",
m_symbol_1.Name()," Bid=",DoubleToString(m_symbol_1.Bid(),Digits()),
m_symbol_1.Name()," Ask=",DoubleToString(m_symbol_1.Ask(),Digits()),
m_symbol_2.Name()," Bid=",DoubleToString(m_symbol_2.Bid(),Digits()),
m_symbol_2.Name()," Ask=",DoubleToString(m_symbol_2.Ask(),Digits()));
return(INIT_FAILED);
}
m_trade.SetExpertMagicNumber(m_magic);
//--- tuning for 3 or 5 digits
int digits_adjust=1;
if(m_symbol_1.Digits()==3 || m_symbol_1.Digits()==5)
digits_adjust=10;
ExtTakeProfit_1 = InpTakeProfit_1 * digits_adjust * m_symbol_1.Point();
ExtStopLoss_1 = InpStopLoss_1 * digits_adjust * m_symbol_1.Point();
digits_adjust=1;
if(m_symbol_2.Digits()==3 || m_symbol_2.Digits()==5)
digits_adjust=10;
ExtTakeProfit_2 =InpTakeProfit_2 * digits_adjust*m_symbol_2.Point();
ExtStopLoss_2 =InpStopLoss_2 * digits_adjust*m_symbol_2.Point();
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(!RefreshRates())
return;
//--- count positions
int total=0;
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
if(m_position.SelectByIndex(i))
if((m_position.Symbol()==m_symbol_1.Name() || m_position.Symbol()==m_symbol_2.Name()) &&
m_position.Magic()==m_magic)
total++;
if(total==0)
{
m_trade.Buy(0.01,m_symbol_1.Name(),m_symbol_1.Ask(),
m_symbol_1.Bid()-ExtStopLoss_1,
m_symbol_1.Bid()+ExtTakeProfit_1);
m_trade.Sell(0.01,m_symbol_2.Name(),m_symbol_2.Bid(),
m_symbol_2.Ask()+ExtStopLoss_2,
m_symbol_2.Ask()-ExtTakeProfit_2);
}
double bid_1=m_symbol_1.Bid();
double bid_2=m_symbol_2.Bid();
Comment(first," Bid: ",DoubleToString(bid_1,m_symbol_1.Digits()),"\n",
second," Bid: ",DoubleToString(bid_2,m_symbol_2.Digits()));
}
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data |
//+------------------------------------------------------------------+
bool RefreshRates()
{
//--- refresh rates
if(!m_symbol_1.RefreshRates() || !m_symbol_2.RefreshRates())
return(false);
//--- protection against the return value of "zero"
if(m_symbol_1.Ask()==0 || m_symbol_1.Bid()==0 || m_symbol_2.Ask()==0 || m_symbol_2.Bid()==0)
return(false);
//---
return(true);
}
//+------------------------------------------------------------------+
df