Торговля спредами в Meta Trader-е - страница 159

 

Спасибо за информацию.

Вот не могу сообразить. Если использовать дату получаемую при помощи MarketInfo(), 

 int exp1 =MarketInfo(Simbol1,MODE_EXPIRATION);
 int exp2 =MarketInfo(Simbol2,MODE_EXPIRATION);

Как задать условие на запрет открытия позиций за 3 недели? Ну и соответственно, если я правильно понимаю, разумно закрывать уже сущиствующие позиции. С датой экспирации лучше не шутить и чем ближе к ней, тем риск форсмажора со стороны ДЦ выше.  

 
leonid553:

Вот скрипт, который отслеживает спред бид-ласт-аск (конкретно для дц броко).

Где-то выше в середине ветки есть такая же  версия, но  в виде индикатора. 

Скрипт у меня потребляет знач. ресурс процессора (-зацикл.), поэтому его лучше ставить непосредственно перед открытием/закрытием, и потом сразу убирать.

6NZ0, M1 

 

А если ипользовать конструкцию, которую предложил goldtrader с кодом из вашего скрипта

    //Задаем цены аск и бид тикера
    Ask_Tiker = MarketInfo(_tiker,MODE_ASK);
    Bid_Tiker = MarketInfo(_tiker,MODE_BID);
Как фильтр в советнике. И скрипт не нужен.
 
Vitya:

Спасибо за информацию.

Вот не могу сообразить. Если использовать дату получаемую при помощи MarketInfo(),

Как задать условие на запрет открытия позиций за 3 недели? Ну и соответственно, если я правильно понимаю, разумно закрывать уже сущиствующие позиции. С датой экспирации лучше не шутить и чем ближе к ней, тем риск форсмажора со стороны ДЦ выше.

можно сделать вывод алерта о приближении экспирации а в советнике нужно каждую сделку программно сверять с максимальнодопустимым спредом
 
Vitya:

А если ипользовать конструкцию, которую предложил goldtrader с кодом из вашего скрипта

Как фильтр в советнике. И скрипт не нужен.


Ну это понятно! Скрипт необходим только для ручной торговли.

В советник тоже можно вставить условия открытия/закрытия  по тикеру. Там правда есть трудность. Придется зациклить работу советника (и значит - излишне загрузить процессор), иначе на малоликвидных контрактах данный фильтр будет абсолютно бесполезен. 

 

Добрый день! Вопрос - как раз в тему.

Индикатор спреда в своих СВОЙСТВАХ предусматривает задать названия инструментов. 

extern string Symbol_1 = "GCG1";
extern string Symbol_2 = "SIF1";

Как мне тогда написать 

double iCustom(

string symbol,  int timeframe,

- какой инструмент задавать - первый или второй? Или любой из этих двух?



 

 
Rita:


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))
{



код советника




}
}
//+------------------------------------------------------------------+

 
Понятно, благодарю.
 
forex-k:

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)

 

 
leonid553:

Информация к размышлению...

MC - YM  (4 ^ 9)

 


=================================

 


Причина обращения: