Aquí está parte del código del script para Metatrader5:
#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//---- показывать входные параметры#property script_show_inputs//---#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
CTrade m_trade; // trading object
CSymbolInfo m_symbol; // symbol info object//+------------------------------------------------------------------+//| Enum Stop or Limit |//+------------------------------------------------------------------+enum ENUM_STOP_OR_LIMIT
{
stop=0, // Buy stop and Sell stop
limit=1// Buy limit and Sell limit
};
//--- input parametersinputushort InpUpGap = 15; // Gap for pending orders UP from the current price (in points)inputushort InpUpStep = 30; // Step between orders UP (in points)inputushort InpDownGap = 15; // Gap for pending orders DOWN from the current price (in points)inputushort InpDownStep = 30; // Step between orders DOWN (in points)input ENUM_STOP_OR_LIMIT InpPending = stop; // Type of pending ordersinputuchar InpUpQuantity = 1; // UP quantity ordersinputuchar InpDownQuantity = 1; // DOWN quantity ordersinputdouble InpLots = 0.01; // Lotsinputushort InpStopLoss = 50; // Stop Loss (in points)inputushort InpTakeProfit = 50; // Take Profit (in points)//---ulong m_slippage=30; // slippagedouble ExtUpGap=0.0;
double ExtUpStep=0.0;
double ExtDownGap=0.0;
double ExtDownStep=0.0;
double ExtStopLoss=0.0;
double ExtTakeProfit=0.0;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---if(InpLots<=0.0)
{
Print("The \"Lots\" can't be smaller or equal to zero");
return;
}
//---if(!m_symbol.Name(Symbol())) // sets symbol namereturn;
if(!RefreshRates())
return;
string err_text="";
if(!CheckVolumeValue(InpLots,err_text))
{
Print(err_text);
return;
}
//---if(IsFillingTypeAllowed(SYMBOL_FILLING_FOK))
m_trade.SetTypeFilling(ORDER_FILLING_FOK);
elseif(IsFillingTypeAllowed(SYMBOL_FILLING_IOC))
m_trade.SetTypeFilling(ORDER_FILLING_IOC);
else
m_trade.SetTypeFilling(ORDER_FILLING_RETURN);
//---
m_trade.SetDeviationInPoints(m_slippage);
m_trade.SetAsyncMode(true);
//---
ExtUpGap = m_symbol.Point() * InpUpGap;
ExtUpStep = m_symbol.Point() * InpUpStep;
ExtDownGap = m_symbol.Point() * InpDownGap;
ExtDownStep = m_symbol.Point() * InpDownStep;
ExtStopLoss = m_symbol.Point() * InpStopLoss;
ExtTakeProfit = m_symbol.Point() * InpTakeProfit;
//--- start workdouble start_price_ask=m_symbol.Ask()-ExtUpGap;
double start_price_bid=m_symbol.Bid()+ExtDownGap;
//--- set pending ordersfor(int i=0; i<InpUpQuantity; i++)
{
double price_ask = start_price_ask+i*ExtUpStep;
double price_bid = start_price_bid+i*ExtUpStep;
if(InpPending==stop)
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit;
m_trade.BuyStop(InpLots,m_symbol.NormalizePrice(price_ask),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
else
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit;
m_trade.SellLimit(InpLots,m_symbol.NormalizePrice(price_bid),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
}
for(int i=0; i<InpDownQuantity; i++)
{
double price_ask = start_price_ask-i*ExtDownStep;
double price_bid = start_price_bid-i*ExtDownStep;
if(InpPending==limit)
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit;
m_trade.BuyLimit(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_ask),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
else
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit;
m_trade.SellStop(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_bid),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
}
}
Se supone que el script debe establecer órdenes limitadas pendientes a una determinada distancia de la oferta y la demanda, o bien órdenes stop. Las órdenespendientes de límite se establecen sin problemas pero las de stop no. Por favor, no sé por qué las órdenes pendientes de Sell Stop y Buy Stop no están establecidas.
¿primero tienes que encontrar todos los textos y usar esta función para calcular a partir de ellos?
No lo conozco a fondo, ya que estoy aprendiendo el lenguaje mql4 recientemente. Puedes encontrar todo en la ayuda. ¿Necesitas todo el texto del objeto o un trozo?
Yevhenii Levchenko: No lo conozco a fondo, ya que yo mismo soy un reciente aprendiz del lenguaje mql4. Toda la ayuda está ahí. ¿Necesitas todo el texto del objeto o una parte?
¡Buenos días a todos!
Aquí está parte del código del script para Metatrader5:
Se supone que el script debe establecer órdenes limitadas pendientes a una determinada distancia de la oferta y la demanda, o bien órdenes stop. Las órdenespendientes de límite se establecen sin problemas pero las de stop no. Por favor, no sé por qué las órdenes pendientes de Sell Stop y Buy Stop no están establecidas.
Atentamente, Vladimir.
Hola chicos. Hecho de escribir un lote junto a una orden abierta. ¿Puedes decirme cómo tomar el último texto y esta lista?
¿primero tienes que encontrar todos los textos y usar esta función para calcular a partir de ellos?
¿primero tienes que encontrar todos los textos y usar esta función para calcular a partir de ellos?
No lo conozco a fondo, ya que yo mismo soy un reciente aprendiz del lenguaje mql4. Toda la ayuda está ahí. ¿Necesitas todo el texto del objeto o una parte?
Necesito lo que se escribió la última vez
Hola chicos. Hecho de escribir un lote junto a una orden abierta. ¿Puedes decirme cómo tomar el último texto y esta lista?
¿De qué lista?
Y por favor, utilice el estilizador en el editor (Ctrl+<):
¿Qué hay que sacar de dónde?
¿De qué lista?
Y por favor, utilice el estilizador en el editor (Ctrl+<):
¿De dónde lo saco?
Esta función escribe un número en cada pedido o más exactamente un lote*100.
Ahora necesitamos una función inversa que muestre cuál fue el último número