Operar con spreads en Meta Trader - página 159

 

Gracias por la información.

Esto es lo que no puedo entender. Si utilizo la fecha obtenida con MarketInfo(),

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

¿Cómo establecer una condición para prohibir la apertura de posiciones en 3 semanas? Y en consecuencia, si entiendo bien, sería razonable cerrar las posiciones existentes. Esta es la fecha de vencimiento, y cuanto más se acerque a ella, mayor será el riesgo de fuerza mayor.

 
leonid553:

Aquí hay un script que rastrea el spread bid-ask (específicamente para el corretaje).

En algún lugar más arriba, en medio del hilo, está la misma versión, pero como indicador.

Mi script consume una cantidad importante de recursos de la CPU (-schedule), por lo que es mejor ponerlo justo antes de abrir/cerrar, y luego quitarlo inmediatamente.

6NZ0, M1

¿Qué tal si usamos el ejemplo de goldtrader con el código de su script

    //Задаем цены аск и бид тикера
    Ask_Tiker = MarketInfo(_tiker,MODE_ASK);
    Bid_Tiker = MarketInfo(_tiker,MODE_BID);
Como un filtro en un EA. Y no necesitas un guión.
 
Vitya:

Gracias por la información.

Esto es lo que no puedo entender. Si utilizo la fecha obtenida con MarketInfo(),

¿Cómo establecer una condición para prohibir la apertura de posiciones en 3 semanas? Y en consecuencia, si entiendo bien, sería razonable cerrar las posiciones existentes. Esta es la fecha de vencimiento, y cuanto más se acerque a ella, mayor será el riesgo de fuerza mayor.

es posible hacer una conclusión de alerta sobre la proximidad del vencimiento, y en el Asesor Experto es necesario comprobar cada operación con el diferencial máximo permitido
 
Vitya:

Y si se utiliza la construcción que goldtrader sugirió con el código de su script

Lo mismo que el filtro en el Asesor Experto. Y el guión no es necesario.


Bueno, ¡eso es obvio! El script sólo es necesario para las operaciones manuales.

También puede insertar las condiciones de cierre/abertura por ticker en su EA. Sin embargo, hay una dificultad. El trabajo del EA tendrá que ser en bucle (y significa - para sobrecargar el procesador), de lo contrario este filtro será absolutamente inútil para los contratos de baja liquidez.

 

Buenas tardes, mi pregunta va al grano.

El indicador de spread en sus PROPIEDADES permite establecer los nombres de los instrumentos.

cadena externa Symbol_1 = "GCG1";
cadena externa Symbol_2 = "SIF1";

¿Cómo puedo escribir

doble iCustom(

cadena de símbolos, int marco temporal,

- ¿Qué herramienta debo seleccionar, la primera o la segunda? ¿O alguno de ellos?



 
Rita:


no hay manera de aplicarlo aquí

Es necesario incrustar el código en el Asesor Experto y especificar la condición allí

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



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




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

 
Ya veo, gracias.
 
forex-k:

no hay manera de aplicarlo aquí

Es necesario incrustar el código en el Asesor Experto y especificar la condición allí

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



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




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



Gracias de nuevo. También responde a mis preguntas.
 

Información para la reflexión...

MC - YM (4 ^ 9)

 
leonid553:

Información para la reflexión...

MC - YM (4 ^ 9)


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