Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1937

 
VIREDS #:
Buen tiempo a todos los usuarios de mql4. Tenemos una función que cierra la parte de la orden más perdedora de una serie por puntos porcentuales a expensas de las posiciones rentables en cualquier dirección. Necesitamos ayuda para finalizar esta función. Es decir, necesitamos cerrar parcialmente todas las órdenes restantes de la serie (debido a posiciones rentables de cualquier dirección) en lugar de la más larga. Gracias de antemano.
Llevounos 2 meses luchandocon esta función. Hay muchos matices. Especialmente esta línea
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap();//ПРОФИТ ОДНОГО ОРДЕРА

Cuando hay muchas órdenes en la parrilla, da una pérdida total al cerrar, aunque debería cerrar todas a cero. Acabé eliminando por completo las comisiones y los canjes

double spreadLoss =(MarketInfo(_Symbol,MODE_TICKVALUE)* MarketInfo(_Symbol,MODE_SPREAD));
 
Y luego en la función se puede multiplicar por lote/paso de lote para cada orden, pero yo sólo hice un multiplicador
 
Y antes de OrderClose() se olvidaron (!)
 
Buenas tardes. ¿Podría aconsejar cómo pagar los servicios de MQL4 debido a la situación actual?
 

Buenas tardes a todos. Tengo un indicador que dibuja una flecha en el gráfico cuando aparece una señal. Resulta que todas estas flechas se colocan en la historia en el gráfico y se puede evaluar el potencial de las señales.

gráfico con flechas indicadoras.

He intentado adjuntar una alerta que señale la aparición de una señal. Encontré una función en el indicador que dibuja flechas cuando aparece una señal.

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


He añadido una línea al final de esta función para generar la alerta. He resaltado la línea añadida con color ;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

La Alerta funciona y todo es normal en el probador. Pero cuando arranco el terminal y si hay un indicador en el gráfico, da tantos pitidos y mensajes como flechas había en el historialJ ¿Qué debo hacer y cómo debo hacer para que la alerta se dé sólo cuando se recibe la última señal cuando el terminal está encendido, y las flechas del historial están en silencio?
 
DanilaMactep #:

Buenas tardes a todos. Tengo un indicador que dibuja una flecha en el gráfico cuando aparece una señal. Resulta que todas estas flechas se colocan en la historia en el gráfico y se puede evaluar el potencial de las señales.

He intentado adjuntar una alerta que señale la aparición de una señal. Encontré una función en el indicador que dibuja flechas cuando aparece una señal.


He añadido una línea al final de esta función para generar la alerta. He resaltado la línea añadida con color ;-)

La Alerta funciona y todo es normal en el probador. Pero cuando arranco el terminal y si hay un indicador en el gráfico genera tantas señales de audio y mensajes como flechas había en el historialJ ¿Qué debo hacer y cómo debo hacer para que la Alerta sea sólo en la última señal cuando el terminal está encendido, y las flechas en el historial estaban en silencio?
Para alertar sólo en la primera barra o en la barra cero.
 

Colegas - cuestión de organización:

El espacio libre en el disco C de mi ordenador, donde pruebo y optimizo las exposiciones en MT4 y MT 5 se volvió escaso... como de 220 que quedan 30 GB en mi ordenador...

Sospecho que el espacio está ocupado por los registros de los robots que funcionan antes o que se están probando, así como la historia de los diferentes símbolos en diferentes terminales y MT4 y MT5 - Estoy interesado:

Como se puede borrar el historial de símbolos (ticks por símbolo) y los registros en las diferentes carpetas en las que se encuentran los terminales (no son muchas en total unas 5).

Algo así como antes en MT 4 era un archivo mágico clear.bat.

En general, necesita opción(es) para limpiar el espacio bajo la historia de los personajes (sus ticks) y los registros en diferentes carpetas. Todos los accesos directos en el escritorio son para MT4 y MT5. Algo así como.

en general para limpiar el espacio en disco de las pruebas pasadas (historial de ticks de los símbolos) y de las operaciones (sus registros).

Al menos donde leer cómo limpiar y qué carpetas eliminar y MT4 y MT5 - donde se encuentran...

Sps.

 

¿Puedes darme una pista?

El Asesor Experto a través de iCustom utiliza un indicador, pero en cada tick hay tales errores en el registro.

¿Se puede arreglar sin editar el indicador? Y si es así, ¿cómo?

 
ALEKSANDR SOKOLOV cada tick hay tales errores en el registro.

¿Se puede arreglar sin editar el indicador? Y si es así, ¿cómo?

Si el indicador, ejecutado por separado del Asesor Experto, no produce tales registros, entonces compruebe si los parámetros del indicador se especifican correctamente cuando se llama a iCustom() en el Asesor Experto.

 
Roman Shiredchenko carpetas en las que se encuentran los terminales (no son muchas en total unas 5).

Algo así como antes en MT 4 era un archivo mágico clear.bat.

En general, necesita opción(es) para limpiar el espacio bajo la historia de los personajes (sus ticks) y los registros en diferentes carpetas. Todos los accesos directos en el escritorio son para MT4 y MT5. Algo así como.

en general para limpiar el espacio en disco de las pruebas pasadas (historial de ticks de los símbolos) y de las operaciones (sus registros).

Al menos donde leer cómo limpiar y qué carpetas eliminar y MT4 y MT5 - donde se encuentran...

Gracias.

Cuántos años tiene el ordenador y cuándo se han limpiado los registros del sistema en las carpetas locales, carpetas temporales y carpetas de servicio de intel o de otros fabricantes. En un ordenador de 10 años con sólo un navegador y una oficina sacó casi 100 gigas con el sikliner de debajo del admin. En mi carpeta de Intel encontré 25gb.

Ticks en la carpeta de historiales. Allí también por ejemplo de binans todos los caracteres era 25 gb. Y los registros en la carpeta compartida y mcl comprobar. Si derribas los troncos, no afecta a nada. Pero si se quitan las garrapatas, es posible que haya que esperar a que se carguen las correctas.

Razón de la queja: