EA N7S_AO_772012 - página 40

 
Vovanych >> :

1. Puse N7S_AO_772012_M1 en C:\N-Archivos de Programa\N-MetaTrader - Alpari\N-Expertos. ¿Lo he hecho correctamente?

2. iCus_N7S_TSM_forExp lo puse en C:Archivos de programa\MetaTrader - Alpari\experts\indicators. ¿Lo he hecho bien?

¿Tengo que realizar algunos ajustes en el terminal para que el N7S_AO_772012_M1 funcione con el indicador iCus_N7S_TSM_forExp? En caso afirmativo, ¿cuáles?

4. ¿Qué cambios hay que hacer en N7S_AO_772012_M1 o N7S_AO_772012_L9_2 para que funcione correctamente en el terminal SystemForex, es decir, con cuatro signos?

Es inútil que explique lo de las pérdidas y los stops. Tienes que meterme en el texto de la progamación de EA y mostrarme lo que hay que arreglar ahí. Es decir, sería capaz de entender que tal o cual línea de la EA debería ser sustituida por tal o cual otra.

La respuesta es .

1.Derecho

2) Correcto.

3. Al configurar los parámetros del Asesor Experto, seleccione Indctr=2

4. "No sirve de nada explicarme todavía lo de los alces y las paradas" Es mi opinión que tampoco sirve de nada explicar el resto. Por ahora.

 
gorby777 писал(а) >>

Respuesta

1. Correcto.

2) Correcto.

3.Seleccione Indctr=2 al configurar los parámetros de EA

4. "Es inútil que explique lo de los lotes y las paradas por ahora" Mi opinión es que es inútil explicar el resto también. Adiós.

Gracias mate))))

Ni siquiera esperaba que nadie respondiera.

En cuanto al cuarto punto, se trataba de saber en qué parte del texto del programa había que hacer correcciones.

Se adjunta el texto:


//Sh N7S_AO_772012_9.mq4 v.77.2012 Sh//
/Cazador de Sh por beneficio Sh//
//Sh Balashiha S&N@yandex.ru ///
//Versión SH 31 de enero de 2009 ///

/Versión L2 con una clara separación de Compra y Venta
#property copyright "Copyright © 2007, Shooter777"
#enlace de propiedad "S7N@mail.ru"

#include <WinUser32.mqh>
#include <stderror.mqh>
#include <stdlib.mqh>
//------------------------------------------------------------------//
int HM_ALL = 18; //
int Comercio = 1; //
//------------------------------------------------------------------//
extern bool Trd_Up_X = true; int HM_Up_X = 1; // ////
//------------------------------------------------------------------//
//externa
doble tpx = 5;
extern double slx = 500; extern int px = 10;
extern int x1 = 0;extern int x2 = 0;extern int x3 = 0;extern int x4 = 0;int tx = 0;
//------------------------------------------------------------------//
extern bool Trd_Dn_Y = true; int HM_Dn_Y = 1; ////
//------------------------------------------------------------------//
//externa
double tpy = 5; extern double sly = 500;extern int py = 10;
extern int y1 = 0;extern int y2 = 0;extern int y3 = 0;extern int y4 = 0; int ty = 0;
//------------------------------------------------------------------//
extern string Text0="BTS F=1";
extern int F = 1; extern int pz = 10;
extern int z1 = 0; extern int z2 = 0; extern int z3 = 0; extern int z4 = 0; extern int tz = 0;
//------------------------------------------------------------------//
//------------------------------------------------------------------//
extern string Text1="Neyro G=4"; extern int G = 4; extern string Text2="XXXXXXXXXXX";
//externa
extern double tpX = 5; extern double slX = 500;extern int pX = 10;
extern int X1 = 0;extern int X2 = 0;extern int X3 = 0;extern int X4 = 0;extern int tX = 0;
//------------------------------------------------------------------//
cadena externa Text3="AAAA AAAA";
//externa
double tpY = 5; extern double slY = 500;extern int pY = 10;
extern int Y1 = 0; extern int Y2 = 0; extern int Y3 = 0; extern int Y4 = 0; int tY = 0;
//------------------------------------------------------------------//
extern string Text4="ZZZZZZZZZZZZZ";extern int pZ = 10;
extern int Z1 = 0;extern int Z2 = 0;extern int Z3 = 0;extern int Z4 = 0;extern int tZ = 0;
//------------------------------------------------------------------//
//------------------------------------------------------------------//
extern double lots = 0.1;
inttern externo Indctr = 1;
//------------------------------------------------------------------//
bool TrBlnc = true; int StrtBlnc = 2500; int DBlnc = 2000; int UBlnc = 3500;
//------------------------------------------------------------------//
int mn;int mnx1 = 772012055;int mny1 = 772012155;int mnX1 = 772012011;int mnY1 = 772012111;
static int prvtm = 0;static double sl = 10;static double tp = 10;

bool cm15=false; bool cmH1=false; bool cmH4=false;
int MMH1 ;int MN ;
static int bu,sll;
static bool Flg=false;
static bool FlqB=true; static bool FlqS=true;
int i;int ticket = -1;int total;int spread;
datetime LFB;
double prcptx1=0,prcpty1=0,prcptX1=0,prcptY1=0,prcptZ1=0;
static double Delta_G12,iCusAO_1,iCusAO_2,iCusTSM_1,iCusTSM_2,Dlt_AO12,Dlt_TSM12;
//+------------------------------------------------------------------+
//| función de init de expertos |
//+------------------------------------------------------------------+
int init(){MMH1 = Hour( );LFB = iTime(Symbol(), 0, 0); H1();
Delta_G12 = G12( ); if ( IsOptimization( ) ) TrBlnc = false;if ( IsTesting( ) ) TrBlnc = false;
if (VSR () !=0) {Flg=false;} Si no, {Flg=true;}
cmmnt();}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{ si ( x1==0&x2==0&&x3==0&x4==0&y1==0&&y2==0&y3==0&&y4==0)return (0);
if (!Flg){if (VSR () ==0) {Flg=true; return (0);}}
total = OrdersTotal();//spread = MarketInfo(Symbol(), MODE_SPREAD);
int iTm = iTime(Symbol(), 0, 0);if(LFB == iTm) return(0); LFB = iTime(Symbol(), 0, 0);
int MMM15 = MathMod(Minuto( ), 15);
if(cm15) {if(MMM15 == 0 ) {cm15 =false; }} if(MMM15 !=0){cm15=true;}
if(Hour( ) != MMH1) {MMH1 = Hour( ); H1( );}
int MMH4 = MathMod(Hora( ), 4);
if(cmH4) {if(MMH4 == 0 ) {cmH4 =false;
Delta_G12 = G12();
FlqB = true ;FlqS = true ;
}}
if(MMH4 !=0){cmH4=true ; }
trl();
startM5();
cmmnt();}

doble G12() {switch(Indctr)
{caso 0:
iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2);
iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2);
Dlt_AO12 = iCusAO_1 -iCusAO_2; Dlt_TSM12 = iCusTSM_1-iCusTSM_2;
if ( Dlt_AO12>=0 && Dlt_TSM12 <=0) return (0);
if ( Dlt_AO12<=0 && Dlt_TSM12 >=0) return (0);
return(Dlt_AO12);
caso 1:
iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2);
Dlt_AO12 = iCusAO_1 -iCusAO_2; return(Dlt_AO12);
caso 2:
iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2);
Dlt_AO12 = iCusTSM_1-iCusTSM_2; return(Dlt_AO12);
caso 3:
iCusAO_1 = iMA(NULL,60,12,0,MODE_EMA,PRICE_CLOSE,1)-iMA(NULL,60,26,0,MODE_EMA,PRICE_CLOSE,1);
iCusAO_2 = iMA(NULL,60,12,0,MODE_EMA,PRICE_CLOSE,2)-iMA(NULL,60,26,0,MODE_EMA,PRICE_CLOSE,2);
Dlt_AO12 = iCusAO_1 -iCusAO_2; return(Dlt_AO12);}}
//+--------------------------------------------------------------------------------------+
double iCusTSM (int pr, int shft)
{ return (iCustom(NULL, 240, "iCus_N7S_TSM_forExp",pr,1,shft)); }
//+--------------------------------------------------------------------------------------+
doble BTS() {
if ((prcptrnz1() > 0 || F==0))//& bu<HM_Up_X)
{si (prcptx1 > 0 && Delta_G12>0) {sl = slx; tp = tpx*slx; mn= mnx1; return (1);}}
if ((prcptrnz1() < 0 | F==0))//& sll<HM_Dn_Y)
{si (prcpty1 > 0 && Delta_G12<0) {sl = sly; tp = tpy*sly; mn= mny1 ;return (-1);}}
return (0);}
//+--------------------------------------------------------------------------------------+
double prcptrnAC(int q1,int q2,int q3,int q4,int pr,int at)
{doble qw = (q1-50)+((q2-50)*iA_C(pr)+(q3-50)*iA_C(2*pr)+(q4-50)*iA_C(3*pr))/iA_C(1);
si (MathAbs(qw)>at) return(qw);si no, return(0);}
//+--------------------------------------------------------------------------------------+
double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));}
//+--------------------------------------------------------------------------------------+
void BuSll ( int pl, int OrdTp, int mgnmb) // pl-fuente 0-activo 1-cerrado // OrdTp=tipo de orden 1-mercado(0y1) 3-LIMIT(2y3) 5-STOP(4y5)
{ switch(pl)
{caso 0: bu=0; sll=0; int ChTpBu,ChTpSll; // Imprimir (" OrdTp ",OrdTp); // contar las órdenes de mercado de B&S
switch(OrdTp)
{caso 1: ChTpBu=OP_BUY; ChTpSll=OP_SELL; break;
caso 3: ChTpBu=OP_BUYSTOP; ChTpSll =OP_SELLSTOP; break;
caso 5: ChTpBu=OP_BUYLIMIT;ChTpSll =OP_SELLLIMIT; break;}
for(int i=0;i<TotalPedidos();i++)
{OrderSelect(i, SELECT_BY_POS, MODE_TRADES); int OMN=OrderMagicNumber();
if(OrderSymbol() != Symbol()){continuar;}
if(OrderType()==ChTpBu &&(OMN>=mgnmb && OMN<=mgnmb+99)){ bu++;}
if(OrderType()==ChTpSll &&(OMN>=mgnmb+100 && OMN<=mgnmb+199)){sll++;}
}break;
caso 1: int pstv=0, ngtv=0; // análisis del historial seleccionado
Print ("Recuento de pedidos en el historial"); break;}}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double prcptrnz1() {double qz =(z1-50)*(Close[1]-Open[pz])+(z2-50)*(Open[pz]-Open[pz*2])
+(z3-50)*(Open[pz*2]-Open[pz*3])+(z4-50)*(Open[pz*3]-Open[pz*4]);return(qz);}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double prcptrnZ1() {double qZ =(Z1-50)*(Close[1]-Open[pZ])+(Z2-50)*(Open[pZ]-Open[pZ*2])
+(Z3-50)*(Open[pZ*2]-Open[pZ*3])+(Z4-50)*(Open[pZ*3]-Open[pZ*4]);return(qZ);}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void trl(){
total= OrdersTotal(); spread = MarketInfo(Symbol(), MODE_SPREAD);
for( i = total-1; i >= 0; i--)
{ OrderSelect(i, SELECT_BY_POS, MODE_TRADES); MN=OrderMagicNumber();
if(OrderSymbol() == Symbol() && MN>= 772012000 && MN<=772012199)
{ si (MN==772012055) {sl = slx; tp = tpx*slx; mn= mnx1;}
if (MN==772012155) {sl = sly; tp = tpy*sly; mn= mny1;}
si (MN==772012011) {sl = slX; tp = tpX*slX; mn= mnX1;}
if (MN==772012111) {sl = slY; tp = tpY*slY; mn= mnY1;}

int prevticket = OrderTicket();if(OrderType() = OP_BUY)
{si(FLG(0)) { OrderClose(prevticket,OrderLots( ),Bid,slppg(),Black);}
if(Bid > (OrderStopLoss() + (sl * 2 + spread) * Point)
{ if(VSR()< 0) { OrderClose(prevticket,OrderLots( ),Bid,slppg(),Black);}
else { OrderModify(OrderTicket(),OrderOpenPrice(),Bid - sl * Point,0, 0, Blue);}}}
si no {si(FLG(0)) { OrderClose(prevticket,OrderLots( ),Ask,slppg(),Blue);}}
if(Ask < (OrderStopLoss() - (sl * 2 + spread) * Point)
{si(VSR() > 0)
{ OrderClose(prevticket,OrderLots( ),Ask,slppg(),Blue);}
else{ OrderModify(OrderTicket(),OrderOpenPrice(),Ask + sl * Point,0,0,Blue);}}}
}}}

double VSR() { prcptZ1 = prcptrnZ1();
if(G==4){ if(prcptZ1>0){if(prcptX1>0 && Delta_G12>0){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);}}
else {if(prcptY1>0 && Delta_G12<0){sl = slY; tp = tpY*slY; mn= mnY1;return ( -1);}}
return(BTS());}
if(G==3){ if(prcptY1>0 && Delta_G12<0){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);}
si no {regresar (BTS());}}
if(G==2){ if(prcptX1>0 && Delta_G12>0){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);}
si no {regresar(BTS();}}
if(G==9){ if(prcptX1>0 && Delta_G12>0 && bu <HM_Up_X){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);}
if(prcptY1>0 && Delta_G12<0 && sll<HM_Dn_Y){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);}
return (BTS());}
return (BTS());}
void H1() { prcptx1 = prcptrnAC(x1,x2,x3,x4,px,tx) ;
prcpty1 = prcptrnAC(y1,y2,y3,y4,py,ty) ;
prcptX1 = prcptrnAC(X1,X2,X3,X4,pX,tX) ;
prcptY1 = prcptrnAC(Y1,Y2,Y3,Y4,pY,tY) ;
//si (¡Símbolo()!="GBPJPY" |Símbolo()!="USDCHF"){ FlqB = true ;FlqS = true ; }
BuSll (0,1,772012000);
}

//+------------------------------------------------------------------+
void startM5() {ticket = -1 ; RefreshRates();
if (total < HM_ALL) { BuSll (0,1,772012000); cmmnt();
si( FLG(1))
{si (Trd_Up_X && VSR() > 0 && bu <HM_Up_X && FlqB) {
if (MOS( 0, lotes, sl, tp, WindowExpertName(), mn)>=1) {FlqB=false;}}
if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y && FlqS) {
if (MOS( 1, lotes, sl, tp, WindowExpertName(), mn)>=1) {FlqS=false;}}
}}}
//+------------------------------------------------------------------+
bool FLG (int cs )
{ int AE = AccountEquity( ) ;
switch(cs)
{caso 0: if((DayOfWeek( ) == 5 && Hour( ) >=22) || (TrBlnc && (AE > UBlnc))
devolver (true);si no, devolver (false);

caso 1: if (DayOfWeek( ) == 1 && Hour( ) <14) {
string dttm = StringConcatenate (Year(),".",Month(),".",Day());
datetime smtm=StrToTime(dttm);
bool Gp;
int shft = iBarShift(NULL,0,smtm);
double iOpn = iOpen (NULL,0,shft); double iCls = iClose (NULL,0,shft+1);
double dOC = MathAbs ((iOpn - iCls)/(Punto*10)) ;
si (dOC>20) Gp = true ;
//string var1=TimeToStr(smtm,TIME_DATE|TIME_SECONDS;)
}
if((TrBlnc && ((AE > UBlnc)||(AE < DBlnc))
|| ((DayOfWeek( ) == 1 && Hour( ) <2) || (DayOfWeek( ) == 5 && Hour( ) >=18))
|| ((DayOfWeek( ) == 1 && Hour( ) <14) && Gp))
devolver (false);si no, devolver (true);
}
}
//+------------------------------------------------------------------+
int MOS(int Op_,double Vl,double StLs, double TkPt,string cmnt,int mgc)
{ bool OrSd = false;
if(!(Op_==0 ||Op_==1)){Print ("¡Error!! ¡Orden no establecida! ¡Tipo incorrecto!");return (-1);}
si no {OrSd = true;}
datetime Begin=TimeCurrent();
int err,rslt; double prc; color clr;
interruptor (Op_)
{caso 0: prc=Precio; clr=Verde; StLs= Oferta - StLs * Punto; TkPt=Oferta + TkPt * Punto ;break;
caso 1: prc=Bid; clr=Red; StLs= Ask + StLs * Point; TkPt=Ask - TkPt * Point ;break;}
si( OrSd )
{rslt= OrderSend(Symbol(),Op_,Vl,prc,slppg(),StLs,TkPt,cmnt,mgc,0,clr);
si (rslt==-1)
{err=GetLastError(); Print("¡¡¡Error al establecer la orden!!(",err,") ");
if(!IsTesting())
{while(!(( rslt>0 || TimeCurrent()-Begin>20))
{Sleep(1000); RefreshRates();
rslt= OrderSend(Symbol(),Op_,Vl,prc,slppg(),StLs,TkPt,cmnt,mgc,0,clr); }}}}
return(rslt);}
//+------------------------------------------------------------------+
int slppg()
{ int sprd =2*MarketInfo(Symbol(),MODE_SPREAD);return ( sprd );}

void cmmnt(){ si ( !IsOptimization( ){
Comentario("Comprar ",bu," Vender ",sll," símbolo ",Symbol(),
"\n Delta_G12 ",Delta_G12,
"\N x ",prcptx1," y ",prcpty1," z ",prcptrnz1(),
"\n X ",prcptX1," Y ",prcptY1," Z ",prcptrnZ1(),
"\N - VSR ",VSR (),
"\n Flg ",Flg," FlqBS ",FlqB," @ ",FlqS,
"\n FLU ",FLG(1)," FLD ",FLG(0) );}}

¿Puede marcar en rojo lo que hay que corregir y en azul lo que hay que corregir?

 
El autor ya ha respondido a una pregunta similar en algún lugar más arriba.
 
Vovanych писал(а) >>

¿Puede marcar en rojo lo que hay que corregir y en azul lo que hay que corregir?

Tengo que comprobarlo, pero no creo que haya que cambiar nada. Los cambios se refieren a los archivos del set de instalación. El deslizamiento de autoselección que he insertado. Preguntemos a los de 4 dígitos.

 
SHOOTER777 писал(а) >>

Tendré que comprobarlo, pero no creo que haya que cambiar nada. Los cambios se refieren a los archivos del set de instalación. He insertado el deslizamiento de muestreo automático. Preguntemos a los que siguen con 4 dígitos.

Gracias, sólo tengo dos conjuntos de sus archivos de configuración, para cinco caracteres, y para cuatro.

Pero aún así preguntaré a la gente.

 
Hoy he probado mis otros EAs de principios de año, incluyendo los de indicador. En las últimas dos semanas ninguno de ellos dio resultados positivos. También optimicé el M1 usando diferentes métodos, pero todo lo que intenté fue perder la última semana. Creo que la semana pasada fue difícil para muchas estrategias.
 

¡¡¡Gente!!! Que están sentados en cuatro dígitos entre comillas.

¿Alguien ha hecho alguna corrección al EA N7S_AO_772012_M1 (o a las versiones anteriores) para que funcione en terminales de cuatro dígitos?

¿Todo funciona correctamente en los terminales de cuatro dígitos?

 
SHOOTER777 >> :
Hoy he probado mis otros EAs de principios de año, incluyendo los de indicador. En las últimas dos semanas ninguno de ellos ha mostrado resultados positivos. También optimicé el M1 usando diferentes métodos y la última semana fue desventajosa de todos modos. Creo que la última semana fue difícil para muchas estrategias.

Resulté estar en el plus. Así que es una mala señal para mi configuración. ((

 

Al optimizar el Asesor Experto N7S_AO_772012_M1 con un indicador y en el segundo caso con dos indicadores, el segundo indicador iCus_N7S_TSM_forExp reveló la siguiente relación:

En el primer caso, el beneficio máximo en las diferentes etapas de optimización es mayor que en el segundo caso en un 30-100%.

En el primer caso, el número de operaciones con beneficio máximo en las diferentes etapas es aproximadamente el doble que en el segundo.

En general, el número de acuerdos es muy bajo.

¿Quién sabe qué parámetros del Asesor Experto deberían cambiarse y en qué dirección para aumentar el número de operaciones durante la optimización?

 

Vovanic, incluso se rió. )

Estamos todos aquí para averiguar colectivamente: qué parámetros, en qué dirección y en qué momento cambiar para ganar dinero )))