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

 
¡Hola de nuevo! Ayuda con esta trivialidad para ti, porque no puedo entenderlo....

Quiero hacer lo siguiente:

Cuando abra la primera operación al precio, por ejemplo, 1,23455, quiero que la segunda operación se abra cuando el precio llegue a 1,23415

Código PHP:
double positionTPask=NormalizeDouble(Ask*Point,Digits);
double lastTPask1=NormalizeDouble(Ask-40*Point,Digits);

if (
RSI0<RSIDownLevel&&RSIDownLevel<=RSI1){
TP=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1)¡Print(GetLastError());

if (
positionTPask1>lastTPask1){
if (
takeprofit!=0)TPm=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,TPm,NULL,Magic)==-1) Print(GetLastError());
}}

Y abro 2 pedidos a un precio a la vez...
¿Es esto correcto? Compruébalo...
 

sviter-pro:
Здраствуйте еще раз! Помогите с этой банальностью для вас, ато я разобраться не могу....

Хочу сделать следующее! 

Когда открывается первая сделка по цене к примеру 1.23455, то хочу что бы вторая сделка открывалась когда цена пойдет на 1.23415

double positionTPask = NormalizeDouble(Ask * Point, Digits);
double lastTPask1 = NormalizeDouble(Ask - 40 * Point, Digits);

if (RSI0 < RSIDownLevel && RSIDownLevel <= RSI1){
      TP  = NormalizeDouble(Ask + takeprofit * Point,Digits); 
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1) Print(GetLastError());
      
   if (positionTPask1 > lastTPask1){
      if (takeprofit!=0) TPm  = NormalizeDouble(Ask + takeprofit * Point, Digits); 
      if (OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), slippage, 0, TPm, NULL, Magic)==-1) Print(GetLastError());
      }}  
Y tengo 2 pedidos abiertos a la vez al mismo precio...

¿Está bien hecho? ¿Mirarías esto...

En la primera línea, vi una cosa extraña. No busqué más.

¿Para qué es esto?

double positionTPask = NormalizeDouble(Ask * Point, Digits);

En una calculadora, multiplique Ask por Point

Tengo una muy buena idea de cómo pegar correctamente el código.

 
sviter-pro:
¡Hola de nuevo! Ayuda con esta trivialidad para ti, porque no puedo entenderlo....

¡Quiero hacer lo siguiente!

Cuando mi primera orden se abre en 1.23455, quiero que mi segunda orden se abra cuando el precio se vaya a 1.23415

Código PHP:
double positionTPask=NormalizeDouble(Ask*Point,Digits);
double lastTPask1=NormalizeDouble(Ask-40*Point,Digits);

if (
RSI0<RSIDownLevel&&RSIDownLevel<=RSI1){
TP=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1)¡Print(GetLastError());

if (
positionTPask1>lastTPask1){
if (
takeprofit!=0)TPm=NormalizeDouble(Ask+takeprofit*Point,Digits);
if (
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,0,TPm,NULL,Magic)==-1) Print(GetLastError());
}}

Abrí 2 pedidos a un precio ...
¿Es esto correcto? Por favor, compruebe...
No se debe bailar desde el Ask-40*Punto, sino desde el precio de apertura de 1 posición-40*Punto.
 

No he trabajado mucho con indicadores, así que puede ser una pregunta sencilla, ¿cómo desactivo la visualización del buffer gráfico enla ventana de Datos? Quiero eliminar el buffer 3 y 4, aquí está el código:

#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Black
#property  indicator_color2 Yellow
#property  indicator_color3 Black
#property  indicator_color4 Black

//---- input parameters
input int RSIPeriod=14;
input int Levl=50;
input ENUM_TIMEFRAMES TF=PERIOD_CURRENT;
//---- buffers
double RSIBuffer[];
double MABuffer[];
double PosBuffer[];
double NegBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(4);
   SetIndexBuffer(0,RSIBuffer);
   SetIndexBuffer(1,MABuffer);
   SetIndexBuffer(2,PosBuffer);
   SetIndexBuffer(3,NegBuffer);
   
//---- indicator line
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
//----
//---- name for DataWindow and indicator subwindow label
   short_name="RSI("+IntegerToString(RSIPeriod,0,' ')+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
   SetIndexLabel(1,"Levl"+"_"+IntegerToString(Levl,0,' ')+" Price");
   SetIndexLabel(2,"U");
   SetIndexLabel(3,"D");
   

   return(0);
  }

Esto es RSI modificado - los buffers son necesarios allí, porque el cálculo se basa en datos pasados y no quiero cambiar el tamaño del buffer cada vez (si no es gráfico) y añadir nuevos datos allí, por lo que los buffers gráficos son convenientes para mis propósitos.

 
Alekseu Fedotov:
No debe bailar desde el Ask-40*Point, sino desde el precio de apertura1posición-40*Point.

Así que lee el precio de apertura y baila....

 
Aleksey Vyazmikin:

No he trabajado mucho con indicadores, así que puede ser una pregunta sencilla, ¿cómo desactivo la visualización del buffer gráfico enla ventana de Datos? Quiero eliminar el buffer 3 y 4, aquí está el código:

Este es un RSI modificado - los búferes son necesarios allí, porque el cálculo se basa en datos pasados y no quiero cambiar el tamaño del búfer cada vez (si no es gráfico) y añadir nuevos datos allí, por lo que los búferes gráficos son convenientes para mis propósitos.


No sé si te he entendido bien.

Pruébalo así:#property indicator_buffers 2

#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_color1 Black
#property  indicator_color2 Yellow
 
Alexander Voronkov:

No sé si lo he entendido bien.

Pruébalo así:#property indicator_buffers 2


Parece que tienes razón. Y por la bondad de mi corazón, pensé que había que declarar si se utilizaba un buffer gráfico para los cálculos.

Gracias.
 
Aleksey Vyazmikin: ¿cómo desactivar la visualización del buffer gráfico enla ventana de datos? Quiero eliminar el buffer 3 y 4, aquí está el código:

para desactivar la visualización en la ventana de datos, haga lo siguiente

SetIndexLabel(2,NULL);  // Запрет в окно Данные буфера 3
SetIndexLabel(3,NULL);  // Запрет в окно Данные буфера 4
 
STARIJ:

Para desactivar la salida en la ventana de datos, haga lo siguiente


Gracias. ¿Permitirá este movimiento ver los buffers prohibidos en los datos de la ventana a través de iCustom?

 
Aleksey Vyazmikin: Gracias. Este movimiento le permitirá ver los búferes que no pueden salir en la ventana de datos a través de iCustom?

iCustom le permite ver sólo lo que está en la ventana de datos. El penúltimo parámetro de la función es exactamente el número del buffer visible en la ventana de datos

Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа...