Ayuda a la codificación - página 477

 

Hola maestro codificador,

Estoy tratando de escribir un indicador PPO_alt que es el gráfico 1 en las imágenes a y b, pero no es el gráfico correctamente en el modo de tiempo real

asi que trate de modificar el PPO original (diagrama 2) pero todavia no es correcto. Por favor, eche un vistazo y podría arreglar ambos.

Gracias de antemano.

PS. Por favor, haga más preguntas si no está claro para usted.

Archivos adjuntos:
ppo_mod.rar  80 kb
 
download38:
Hola maestro codificador,

Estoy tratando de escribir un indicador PPO_alt que es el gráfico 1 en las imágenes a y b, pero no se traza correctamente en el modo de tiempo real

así que trato de modificar el PPO original (diagrama 2), pero todavía no está correctamente también. Por favor, eche un vistazo y podría arreglar ambos.

Gracias de antemano.

PS. Por favor, haz más preguntas si no te queda claro.

¿Por qué haces exactamente lo mismo en dos bucles?

 

Hola Mladen

necesito ayuda

no consigo una cotización en vivo por favor ayuda

//+------------------------------------------------------------------+

//| función de inicialización de expertos ||

//+------------------------------------------------------------------+

#property ventana_del_gráfico

double ExtMapBuffer1[];

extern int RSI_periode = 14;

extern int RSI_level = 50;

extern color BuyColor = clrLime;

extern color SellColor = clrRed;

extern int horizontal = 20

extern int vertical = 50

extern int shift = 1;

extern double porcentaje = 0,25

extern string fontmode = "Arial";

extern int fontsize = 10;

extern color fontcolor = clrSkyBlue;

extern int columnspacing = 100;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de desinicialización experta ||.

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectsDeleteAll();

ObjectDelete("INFO");

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de inicio de experto ||

//+------------------------------------------------------------------+

int inicio()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};

cadena símbolo;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

string infolabel;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};

string font = "Terminal";

int barras_contadas=IndicadorContado();

int symlimit = ArraySize(symlist2);

int timelimit = ArraySize(info2);

for(int i=0;i<symlimit;i++)

{

símbolo = symlist2;

Display("symlabel" + símbolo + i, horizontal,vertical);

ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);

Display("sym" + símbolo + i, horizontal,vertical +((i+1)*18));

ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Yellow);

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j];

Display("infolabel" + j, horizontal+((j+1)*100),vertical);

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink);

Display("infolabel2" + symbol + ((j+1)*columnspacing), horizontal+((j+1)*100),vertical +((i+1)*18));

ObjectSetText("infolabel2" +symbol+ ((j+1)*columnspacing), infolabel , fontsize, font, fontcolor);

}

}

//----

return(0);

}

void Display(string name, int x, int y)

{

ObjectCreate(nombre, OBJ_LABEL, 0, 0, 0);

ObjectSet(name, OBJPROP_CORNER, 0);

ObjectSet(name, OBJPROP_XDISTANCE, x);

ObjectSet(name, OBJPROP_YDISTANCE, y);

ObjectSet(nombre, OBJPROP_BACK, FALSE);

}

 
nbtrading:
¿Por qué haces exactamente lo mismo en dos bucles?

Oh, sólo quiero trazar una línea con puntos para que sea fácil de ver.

La línea importante es la multihigh con la que tengo problemas.

Gracias por preguntar.

 

Algoritmo de "cierre de compra" y "cierre de venta".

Hola Pro-Coders,

Me pregunto si alguien podría revisar el algoritmo "Cerrar COMPRA" y "Cerrar VENTA".

El EA no está abriendo una nueva posición después de que el stop loss o el cambio de tendencia haya tenido lugar.

El sistema sólo cierra la posición, la siguiente posición se abrirá cuando se produzca un nuevo cambio de tendencia, lo que conlleva una pérdida de oportunidad.

(Por favor, vea la captura de pantalla).

void CheckForClose()

{

RefreshRates();

double cl_diCustom0 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,0,bar);

double cl_diCustom1 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

double cl_diCustom2 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

double cl_diCustom3 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar+1);

double cl_diMA3 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar);

double cl_diMA4 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar+1);

for(int i=0;i<Total de órdenes(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

//+------------+

//| Cerrar COMPRA

//+------------+

if(cl_diCustom0!=cl_diCustom1) // Comprobar tendencia

{

if(OrderType()==OP_BUY)

{

if(cl_diCustom0<cl_diCustom1 && cl_diCustom2=cl_diMA4)

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Cerrar orden de compra - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Oferta: ",MarketInfo(s_symbol,MODE_BID)," Lotes: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

romper;

} // mod

}

}

//+-------------+

//| Cerrar VENDER |

//+-------------+

if(cl_diCustom0!=cl_diCustom1)

{

if(OrderType()==OP_SELL)

{

if(cl_diCustom0>cl_diCustom1 && cl_diCustom2>cl_diMA3 && cl_diCustom3<=cl_diMA4)

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == false)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Cerrar orden de venta - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) Alert(ErrAlert);

ErrLog=StringConcatenate("Venta: ",MarketInfo(s_símbolo,MODE_ASK)," Lotes: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

romper;

} // mod

}

}

}

}

Archivos adjuntos:
 
tfi_markets:
Hola Pro-Coders,

Me pregunto si alguien podría revisar el algoritmo de "Cierre de compra" y "Cierre de venta".

El EA no está abriendo una nueva posición después de la pérdida de la parada o el cambio de tendencia ha tenido lugar.

El sistema sólo cierra la posición, la siguiente posición se abrirá cuando se produzca un nuevo cambio de tendencia, lo que conduce a la pérdida de oportunidades.

(Por favor, vea la captura de pantalla).

Cambie esto :

for(int i=0;i<OrdersTotal(); i++)

por esto

for(int i=Total de Pedidos()-1;i>=0 ; i--)

 
mladen:
Háganos saber lo que pasó Tal vez sólo un problema de una construcción específica metatrader (Yo uso la construcción 788 actualmente)

mina construir 765

Pruchik proporcionó esta versión aquí,

https://www.mql5.com/en/forum/173588

pero necesita un script extra para eliminar las líneas del indicador Gann sq9 si se cambia dejando líneas en el gráfico.

 

necesito ayuda para este problema de información en pantalla......

vegadigitalco:
Hola Mladen y todos los senior Codder

necesito ayuda para este problema de información en pantalla......

no consigo una cotización en vivo, por favor, ayuda

//+------------------------------------------------------------------+

//| función de inicialización de expertos ||

//+------------------------------------------------------------------+

#property indicator_chart_window

double ExtMapBuffer1[];

extern int RSI_periode = 14;

extern int RSI_level = 50;

extern color BuyColor = clrLime;

extern color SellColor = clrRed;

extern int horizontal = 20

extern int vertical = 50

extern int shift = 1;

extern double porcentaje = 0,25

extern string fontmode = "Arial";

extern int fontsize = 10;

extern color fontcolor = clrSkyBlue;

extern int columnspacing = 100;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de desinicialización experta ||.

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectsDeleteAll();

ObjectDelete("INFO");

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de inicio de experto ||

//+------------------------------------------------------------------+

int inicio()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};

cadena símbolo;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

string infolabel;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};

string font = "Terminal";

int barras_contadas=IndicadorContado();

int symlimit = ArraySize(symlist2);

int timelimit = ArraySize(info2);

for(int i=0;i<symlimit;i++)

{

símbolo = symlist2;

Display("symlabel" + símbolo + i, horizontal,vertical);

ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);

Display("sym" + símbolo + i, horizontal,vertical +((i+1)*18));

ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Yellow);

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j];

Display("infolabel" + j, horizontal+((j+1)*100),vertical);

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink);

Display("infolabel2" + symbol + ((j+1)*columnspacing), horizontal+((j+1)*100),vertical +((i+1)*18));

ObjectSetText("infolabel2" +symbol+ ((j+1)*columnspacing), infolabel , fontsize, font, fontcolor);

}

}

//----

return(0);

}

void Display(string name, int x, int y)

{

ObjectCreate(nombre, OBJ_LABEL, 0, 0, 0);

ObjectSet(name, OBJPROP_CORNER, 0);

ObjectSet(name, OBJPROP_XDISTANCE, x);

ObjectSet(name, OBJPROP_YDISTANCE, y);

ObjectSet(nombre, OBJPROP_BACK, FALSE);

}
 

Hola chicos tengo una pequeña petición.. he estado intentando escribir una función que lea de un archivo de texto y devuelva sus valores en un array de cadenas.. el archivo de texto está formado por varias líneas cada una de ellas es un nombre de par excepto la primera línea que es el número total de pares

Por ejemplo

7

CADJPY

CHFJPY

EURJPY

GBPJPY

NZDJPY

USDJPY

AUDJPY

He encontrado en el sitio web de metaquotes el siguiente código pero estoy atascado... me gustaría crear una matriz de cadenas y después de leer la primera línea en el texto redimensionarla a este valor y luego llenarla con el nombre de los pares... ¿puede alguien ayudarme por favor?

int handle, NL,i,pos[];

string str,word;

handle=FileOpen("test.txt",FILE_READ);//try to open file

if(handle==-1)return(0);// if not exist

if(FileSize(handle)==0){FileClose(handle); return(0); } //if empty

while(!FileIsEnding(handle))//read file to the end by paragraph. if you have only one string, omit it

{

str=FileReadString(handle);//read one paragraph to the string variable

if(str!="")//if string not empty

{

NL=0;

for(i=0;i<StringLen(str);i++)

{

if(StringGetChar(str,i)==10)// look for newline (Charcode:10) only

{

NL++;//yes, we found one more newline

ArrayResize(pos,NL);//increase array

pos[NL-1]=i;//write the number of newline position to array

}

}//now we have array with numbers of positions of all newline

for(i=0;i<=NL;i++)//start to read elements of string

{

if(i==0) word=StringSubstr(str,0,pos[0]);//the first element of string (in this case is the number 7)

else word=StringSubstr(str,pos+1,pos-pos-1);

}

}

}

FileClose(handle); //close file

return(0);

 
download38:
Hola maestro codificador,

Estoy tratando de escribir un indicador PPO_alt que es el gráfico 1 en las imágenes a y b, pero no se traza correctamente en el modo de tiempo real

así que trato de modificar el PPO original (gráfico 2), pero todavía no está correctamente también. Por favor, eche un vistazo y podría arreglar ambos.

Gracias de antemano.

PS. Por favor, haz más preguntas si no te queda claro.

¿Alguien podría explicar la diferencia entre for(i=0; i=0; i--) y cuando los usamos?

Gracias de antemano.