La estructura MqlTradeRequest debe borrarse antes de utilizar
//+------------------------------------------------------------------+ //| Cempionat2012.mq5 | //| Victor Pavlyuk | //| | //+------------------------------------------------------------------+ #property copyright "Victor Pavljuk" #property version "1.03" input int TakeProfit=538; input int StopLoss=1000; input int TradeTime=13; input int t1=7; input int t2=1; input int delta=70; input double lot=5; bool cantrade=true; double Ask; double Bid; int OpenLong(double volume=5, int slippage=10000, string comment="", int magic=888) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action=TRADE_ACTION_DEAL; my_trade.symbol=Symbol(); my_trade.volume=NormalizeDouble(volume,1); my_trade.price=NormalizeDouble(Ask,_Digits); my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits); my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); my_trade.deviation=slippage; my_trade.type=ORDER_TYPE_BUY; my_trade.type_filling=ORDER_FILLING_RETURN; my_trade.comment=comment; my_trade.magic=magic; ResetLastError(); if(OrderSend(my_trade,my_trade_result)) { Print("Код результата операции - ",my_trade_result.retcode); } else { Print("Код результата операции - ",my_trade_result.retcode); Print("Ошибка открытия ордера = ",GetLastError()); } return(0); } int OpenShort(double volume=5, int slippage=10000, string comment="", int magic=888) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action=TRADE_ACTION_DEAL; my_trade.symbol=Symbol(); my_trade.volume=NormalizeDouble(volume,1); my_trade.price=NormalizeDouble(Ask,_Digits); my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits); my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); my_trade.deviation=slippage; my_trade.type=ORDER_TYPE_SELL; my_trade.type_filling=ORDER_FILLING_RETURN; my_trade.comment=comment; my_trade.magic=magic; ResetLastError(); if(OrderSend(my_trade,my_trade_result)) { Print("Код результата операции - ",my_trade_result.retcode); } else { Print("Код результата операции - ",my_trade_result.retcode); Print("Ошибка открытия ордера = ",GetLastError()); } return(0); } int OnInit() { return(0); } void OnDeinit(const int reason){} void OnTick() { double Open[]; MqlDateTime mqldt; TimeCurrent(mqldt); int len; MqlTick last_tick; SymbolInfoTick(_Symbol,last_tick); Ask=last_tick.ask; Bid=last_tick.bid; ArraySetAsSeries(Open,true); if(t1>=t2)len=t1+1; else len=t2+1; CopyOpen(_Symbol,PERIOD_M30,0,len,Open); if(((mqldt.hour)>TradeTime)) cantrade=true; if(!PositionSelect(_Symbol))// Если еще нет открытой позиции { if((mqldt.hour==TradeTime) && (cantrade)) { if(Open[t1]>(Open[t2]+delta*_Point)) { OpenShort(lot,10,"",888); cantrade=false; return; } if((Open[t1]+delta*_Point)<Open[t2]) { OpenLong(lot,10,"",888); cantrade=false; return; } } } return; } //+------------------------------------------------------------------+Para empezar, sólo para ser claros
Creo que esto es un código para preguntar por qué TP y SL es igual a Asku
Sólo que hay un autor diferente.
EN MI OPINIÓN.
Es posible reescribir la función de apertura por tipo:
void PosOpen(int trade, string symbol) {if (trade==0) return; double Price; ENUM_ORDER_TYPE Type; if (trade==1) {Type= ORDER_TYPE_BUY; Price=SymbolInfoDouble(symbol,SYMBOL_ASK);} else {Type = ORDER_TYPE_SELL; Price=SymbolInfoDouble(symbol,SYMBOL_BID);} mytrade.PositionOpen(symbol,Type,Lot,Price,0,0,"Open"); return; }
Es posible reescribir la función de apertura por tipo:
entonces al menos especifique de qué bibliotecas se toman las funciones.
Durante la prueba, veo mensajes en el registro.
2012.09.21 20:07:11 Core 1 2012.09.18 13:00:00 falló la venta instantánea de 5,00 EURUSD a 1,30657 sl: 1,29657 tp: 1,31195 [Solicitud no válida].
Durante la prueba, veo mensajes en el registro.
2012.09.21 20:07:11 Core 1 2012.09.18 13:00:00 falló la venta instantánea de 5,00 EURUSD a 1,30657 sl: 1,29657 tp: 1,31195 [Solicitud no válida].
entonces al menos especifique de qué bibliotecas se toman las funciones.
#include <Trade\Trade.mqh>
Por cierto, está en la carpeta del terminal por defecto, ¿no? ¿No debería estar unido al EA en el chump?

- www.mql5.com

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
¿Puede alguien ayudar, por favor? No sé dónde está el error.
código:
//+------------------------------------------------------------------+
//| Cempionat2012.mq5 ||
//| Victor Pavlyuk...
//| |
//+------------------------------------------------------------------+
#property copyright "Victor Pavljuk"
#versión de la propiedad "1.03"
input int TakeProfit=538;
input int StopLoss=1000;
input int Tiempo de comercio=13;
input int t1=7;
input int t2=1;
input int delta=70;
entrada doble lote=5;
bool cantrade=true;
Doble pregunta;
doble oferta;
int OpenLong(double volume=5,
int deslizamiento=10000,
string comment="",
int magic=888)
{
MqlTradeRequest mi_comercio;
MqlTradeResult mi_comercio_resultado;
mi_comercio.acción=TRADE_ACTION_DEAL;
mi_operación.símbolo=Símbolo();
mi_comercio.volumen=NormalizarDoble(volumen,1);
mi_comercio.precio=NormalizarDoble(Pregunta,_Dígitos);
mi_operación.sl=NormalizarDoble(Ask-StopLoss*_Punto,_Dígitos);
mi_comercio.tp=NormalizarDoble(Pregunta+TomaDeBeneficio*_Punto,_Dígitos);
mi_comercio.desviación=desviación;
mi_comercio.tipo=ORDEN_TIPO_BUY;
mi_comercio.tipo_de_relleno=ORDEN_DE_relleno_de_relleno;
mi_comercio.comentario=comentario;
mi_comercio.magia=magia;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
Print("código de resultado de la transacción - ",mi_resultado_comercial.retcode)
}
si no
{
Print("Código de resultado de la operación - ",mi_resultado_comercial.retcode);
Print("Error de apertura de pedido = ",GetLastError());
}
return(0);
}
int OpenShort(double volume=5,
int deslizamiento=10000,
string comment="",
int magic=888)
{
MqlTradeRequest mi_comercio;
MqlTradeResult mi_comercio_resultado;
mi_comercio.acción=TRADE_ACTION_DEAL;
mi_operación.símbolo=Símbolo();
mi_comercio.volumen=NormalizarDoble(volumen,1);
mi_comercio.precio=NormalizarDoble(Pregunta,_Dígitos);
mi_operación.sl=NormalizarDoble(Ask-StopLoss*_Punto,_Dígitos);
mi_comercio.tp=NormalizarDoble(Pregunta+TomaDeBeneficio*_Punto,_Dígitos);
mi_comercio.desviación=desviación;
mi_comercio.tipo=ORDEN_TIPO_VENTA;
mi_comercio.tipo_de_relleno=ORDEN_DE_relleno_de_relleno;
mi_comercio.comentario=comentario;
mi_comercio.magia=magia;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
Print("código de resultado de la transacción - ",mi_resultado_comercial.retcode)
}
si no
{
Print("Código de resultado de la operación - ",mi_resultado_comercial.retcode);
Print("Error de apertura de pedido = ",GetLastError());
}
return(0);
}
int OnInit()
{
return(0);
}
void OnDeinit(const int reason){}
void OnTick()
{
doble Open[];
MqlDateTime mqldt;
TimeCurrent(mqldt);
int len;
MqlTick last_tick;
SymbolInfoTick(_Símbolo,last_tick);
Ask=último_tick.ask;
Bid=último_tick.bid;
ArraySetAsSeries(Open,true);
si(t1>=t2)len=t1+1;
Si no, len=t2+1;
CopyOpen(_Símbolo,PERIOD_M30,0,len,Open);
if(((mqldt.hour)>TradeTime))
if(!PositionSelect(_Symbol))// si no hay ninguna posición abierta todavía
{
if((mqldt.hour==TradeTime) && (cantrade))
{
if(Open[t1]>(Open[t2]+delta*_Point))
{
OpenShort(lote,10,",888);
cantrade=false;
volver;
}
if((Open[t1]+delta*_Point)<Open[t2])
{
OpenLong(lot,10,"",888);
{ return; }((Open[t1]+delta*_Point)=false;
volver;
}
}
}
volver;
}
//+------------------------------------------------------------------+