Торговля спредами в Meta Trader-е - страница 159
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за информацию.
Вот не могу сообразить. Если использовать дату получаемую при помощи MarketInfo(),
Как задать условие на запрет открытия позиций за 3 недели? Ну и соответственно, если я правильно понимаю, разумно закрывать уже сущиствующие позиции. С датой экспирации лучше не шутить и чем ближе к ней, тем риск форсмажора со стороны ДЦ выше.
Вот скрипт, который отслеживает спред бид-ласт-аск (конкретно для дц броко).
Где-то выше в середине ветки есть такая же версия, но в виде индикатора.
Скрипт у меня потребляет знач. ресурс процессора (-зацикл.), поэтому его лучше ставить непосредственно перед открытием/закрытием, и потом сразу убирать.
6NZ0, M1
А если ипользовать конструкцию, которую предложил goldtrader с кодом из вашего скрипта
//Задаем цены аск и бид тикера Ask_Tiker = MarketInfo(_tiker,MODE_ASK); Bid_Tiker = MarketInfo(_tiker,MODE_BID);
Как фильтр в советнике. И скрипт не нужен.Спасибо за информацию.
Вот не могу сообразить. Если использовать дату получаемую при помощи MarketInfo(),
Как задать условие на запрет открытия позиций за 3 недели? Ну и соответственно, если я правильно понимаю, разумно закрывать уже сущиствующие позиции. С датой экспирации лучше не шутить и чем ближе к ней, тем риск форсмажора со стороны ДЦ выше.
А если ипользовать конструкцию, которую предложил goldtrader с кодом из вашего скрипта
Как фильтр в советнике. И скрипт не нужен.Ну это понятно! Скрипт необходим только для ручной торговли.
В советник тоже можно вставить условия открытия/закрытия по тикеру. Там правда есть трудность. Придется зациклить работу советника (и значит - излишне загрузить процессор), иначе на малоликвидных контрактах данный фильтр будет абсолютно бесполезен.
Добрый день! Вопрос - как раз в тему.
Индикатор спреда в своих СВОЙСТВАХ предусматривает задать названия инструментов.
extern string Symbol_1 = "GCG1";
extern string Symbol_2 = "SIF1";
Как мне тогда написать
string symbol, int timeframe,
- какой инструмент задавать - первый или второй? Или любой из этих двух?
icustom тут никак не применишь
нужно встроить код в советник и там уже прописать условие
//----
extern string Simbol1 = "ESZ0"; extern double k1 =1;
extern string Simbol2 = "NQZ0"; extern double k2 =1;
extern double lot =1;
//----
extern double maxSpred =30;
extern int MinTimeExp =1800000;
int exp1,exp2,v1,v2;
//+------------------------------------------------------------------+
double StoimPunkt(string B){return(MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT)));}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
double sred(int typ,string B)
{double j;RefreshRates();
if(typ==0)j=((MarketInfo(B+"#I",MODE_ASK)-MarketInfo(B,MODE_BID))/MarketInfo(B,MODE_POINT))*StoimPunkt(B);
if(typ==1)j=((MarketInfo(B,MODE_BID)-MarketInfo(B+"#I",MODE_BID))/MarketInfo(B,MODE_POINT))*StoimPunkt(B);
if(j<0)j=0;return(j);}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
int start()
{
exp1 =MarketInfo(Simbol1,MODE_EXPIRATION);
exp2 =MarketInfo(Simbol2,MODE_EXPIRATION);
v1 =MarketInfo(Simbol1,MODE_TRADEALLOWED);
v2 =MarketInfo(Simbol2,MODE_TRADEALLOWED);
if((sred(0,Simbol1)*lot*k1+sred(1,Simbol1)*lot*k1<maxSpred)&&(sred(0,Simbol2)*lot*k2+sred(1,Simbol2)*lot*k2<maxSpred)&&
(TimeCurrent()+MinTimeExp<exp1)&&(TimeCurrent()+MinTimeExp<exp2)&&(v1 ==1)&&(v2 ==1))
{
код советника
}
}
//+------------------------------------------------------------------+
icustom тут никак не применишь
нужно встроить код в советник и там уже прописать условие
//----
extern string Simbol1 = "ESZ0"; extern double k1 =1;
extern string Simbol2 = "NQZ0"; extern double k2 =1;
extern double lot =1;
//----
extern double maxSpred =30;
extern int MinTimeExp =1800000;
int exp1,exp2,v1,v2;
//+------------------------------------------------------------------+
double StoimPunkt(string B){return(MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT)));}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
double sred(int typ,string B)
{double j;RefreshRates();
if(typ==0)j=((MarketInfo(B+"#I",MODE_ASK)-MarketInfo(B,MODE_BID))/MarketInfo(B,MODE_POINT))*StoimPunkt(B);
if(typ==1)j=((MarketInfo(B,MODE_BID)-MarketInfo(B+"#I",MODE_BID))/MarketInfo(B,MODE_POINT))*StoimPunkt(B);
if(j<0)j}0;return(j);}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
int start()
{
exp1 =MarketInfo(Simbol1,MODE_EXPIRATION);
exp2 =MarketInfo(Simbol2,MODE_EXPIRATION);
v1 =MarketInfo(Simbol1,MODE_TRADEALLOWED);
v2 =MarketInfo(Simbol2,MODE_TRADEALLOWED);
if((sred(0,Simbol1)*lot*k1+sred(1,Simbol1)*lot*k1<maxSpred)&&(sred(0,Simbol2)*lot*k2+sred(1,Simbol2)*lot*k2<maxSpred)&&
(TimeCurrent()+MinTimeExp<exp1)&&(TimeCurrent()+MinTimeExp<exp2)&&(v1 ==1)&&(v2 ==1))
{
код советника
}
}
//+------------------------------------------------------------------+
Ещё раз спасибо. Тут есть ответ и на мои вопросы.
Информация к размышлению...
MC - YM (4 ^ 9)
Информация к размышлению...
MC - YM (4 ^ 9)
=================================