Publi |
hola, tengo un ActFX convertido (desde un archivo Mql), la conversión se realizó sin errores, pero el código ACtFx no está abriendo ningún pedido y no tengo el archivo MQL... ¿alguien puede ayudar a convertir de nuevo este código Actfx convertido? al código MQL..
Aquí está EA que se convirtió con éxito, pero no hubo transacciones en absoluto.
Proporcione el archivo MQL a continuación.
Aquí está el código para EA KK002:
utiliza 'LibMQL4.actlib';
const NombreEstrategia = 'TSD v12.3.mq4';
const copyright_1 = 'Copyright © 2009,
http://www.forex-tsd.com';
const enlace_2 = '
http://www.forex-tsd.com';
var MagicNumber: Variante = 10001;
var Lotes: Real = 1.0;
var TakeProfit: Variante = 100;
var TrailingStop: Variante = 60;
var Deslizamiento: Variante = 5;
var UseTimeLimit: Booleano = verdadero;
var UseAutomaticMM: Booleano = verdadero;
var Riesgo: Real = 1,5;
var _: String = '¿Permite múltiples operaciones por barra?';
var OneTradePerBar: Booleano = falso;
var __: String = 'Configuración para el cierre de posiciones del viernes';
var CloseOnFriday: Booleano = falso;
var FridayCloseHour: Variante = 21;
var FridayCloseMinute: Variante = 59;
var MinutoInicio1: Real = 0;
var FinMinuto1: Real = 0;
var MinutoInicio2: Real = 0;
var EndMinute2: Real = 0;
var MinutoInicio3: Real = 0;
var FinMinuto3: Real = 0;
var MinutoInicio4: Real = 0;
var EndMinute4: Real = 0;
var MinutoInicio5: Real = 0;
var EndMinute5: Real = 0;
var MinutoInicio6: Real = 0;
var EndMinute6: Real = 0;
var MinutoInicio7: Real = 0;
var EndMinute7: Real = 0;
var Precio Abierto: Real = 0;
var PrecioNuevo: Real = 0;
var nuevabarra: Real = 0;
función OnNewCandle : Variante;
var pipMultiplicador: Real;
var i: Entero;
var símbolo encontrado: booleano;
var dentro del límite de tiempo: booleano;
var TradesThisSymbol: Variante;
var OsMAAnterior: Real;
var OsMAPrevious2: Real;
var Fuerza: Real;
var ForcePos: booleano;
var ForceNeg: booleano;
var OsMADirección: Real;
var tp: Real;
var ts: Real;
var sl: Real;
var ticket: Variante;
comenzar
si ((Dígitos = 3) o (Dígitos = 5)) entonces
pipMultiplicador := 10
más pipMultiplier := 1;
si (CloseOnFriday) y (TimeDayOfWeek (TimeCurrent ()) = 5) entonces
comenzar
if (TimeHour (TimeCurrent ()) gt; FridayCloseHour) o ((TimeHour (TimeCurrent ()) = FridayCloseHour) and (TimeMinute (TimeCurrent ()) gt;= FridayCloseMinute)) entonces
comenzar
para i := PedidosTotal () - 1
hasta 0 empezar
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (SímboloPedido () lt;gt; Símbolo ()) entonces
continuar;
if (NúmeroMágicoPedido () lt;gt; NúmeroMágico) entonces
continuar;
si (TipoPedido () = OP_BUYSTOP) entonces
comenzar
OrderDelete (OrderTicket (), CLR_NONE);
continuar;
fin;
si (TipoPedido() = OP_SELLSTOP) entonces
comenzar
OrderDelete (OrderTicket (), CLR_NONE);
continuar;
fin;
si (TipoPedido () = OP_BUY) entonces
comenzar
OrderClose (OrderTicket (), OrderLots (), Ask, 0, CLR_NONE);
continuar;
fin;
si (TipoPedido () = OP_SELL) entonces
comenzar
OrderClose (OrderTicket (), OrderLots (), Bid, 0, CLR_NONE);
continuar;
fin;
fin;
Resultado := (0);
Salida;
fin;
fin;
símbolo encontrado := (falso);
si (checkSymbol ('USDCHF')) entonces
comenzar
establecerMinutos (0, 1, 8, 9, 16, 17, 24, 25, 32, 33, 40, 41, 48, 49);
símbolo encontrado := verdadero;
fin;
si (checkSymbol ('GBPUSD')) entonces
comenzar
establecerMinutos (2, 3, 10, 11, 18, 19, 26, 27, 34, 35, 42, 43, 50, 51);
símbolo encontrado := verdadero;
fin;
si (símbolo de verificación ('USDJPY')) entonces
comenzar
establecerMinutos (4, 5, 12, 13, 20, 21, 28, 29, 36, 37, 44, 45, 52, 53);
símbolo encontrado := verdadero;
fin;
si (símbolo de verificación ('EURUSD')) entonces
comenzar
establecerMinutos (6, 7, 14, 15, 22, 23, 30, 31, 38, 39, 46, 47, 54, 59);
símbolo encontrado := verdadero;
fin;
si (no símbolo encontrado) entonces
comenzar
Resultado := (0);
Salida;
fin;
si UseTimeLimit entonces
withinTimeLimit := (((Minute () gt;= StartMinute1) and (Minute () lt;= EndMinute1)) or ((Minute () gt;= StartMinute2) and (Minute () lt;= EndMinute2)) o (( Minuto () gt;= Minuto de inicio3) y (Minuto () lt;= Minuto de finalización3)) o ((Minuto () gt;= Minuto de inicio4) y (Minuto () lt;= Minuto de finalización4)) o ((Minuto () gt;= StartMinute5) y (Minute () lt;= EndMinute5)) o ((Minute () gt;= StartMinute6) y (Minute () lt;= EndMinute6)) o ((Minute () gt;= StartMinute7) y (Minuto ( ) lt;= MinutoFinal7)))
más dentro deTimeLimit := true;
si (no dentro del límite de tiempo) entonces
comenzar
Resultado := (0);
Salida;
fin;
CambiaEsteSímbolo := (0);
comenzar
para i := PedidosTotal () - 1
hasta 0 empezar
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (NúmeroMágicoPedido () lt;gt; NúmeroMágico) entonces
continuar;
if (SímboloPedido () lt;gt; Símbolo ()) entonces
continuar;
Inc (TradesThisSymbol);
fin;
fin;
OsMAPrevious := (iOsMA (NULL, PERIOD_W1, 12, 26, 9, PRICE_CLOSE, 1));
OsMAPrevious2 := (iOsMA (NULL, PERIOD_W1, 12, 26, 9, PRICE_CLOSE, 2));
Forzar := (iForce (NULL, PERIOD_D1, 2, MODE_EMA, PRICE_CLOSE, 1));
ForcePos := (Forzar gt; 0);
ForceNeg := (Forzar lt; 0);
si OsMAAnterior gt; OsMAPrevious2 luego
DirecciónOsMA := (1);
si OsMAAnterior lt; OsMAPrevious2 luego
DirecciónOsMA := - 1;
si (OsMAPrevious = OsMAPrevious2) entonces
DirecciónOsMA := 0;
if (not IsTesting ()) o ((IsTesting ()) y (IsVisualMode ())) entonces
Comentario ('TSD para MT4 ver beta 0.3 - NO USAR CON DINERO REAL TODAVÍA', '', '', 'Weekly OsMAPrevious = ', OsMAPrevious, '', 'Weekly OsMAPrevious2 = ', OsMAPrevious2, '', 'Weekly OsMADirection = ', OsMADirection, '', '', 'Fuerza diaria = ', Fuerza, '', 'Es fuerza diaria alcista = ', ForcePos, '', 'Es fuerza diaria bajista = ', ForceNeg, '', '' , 'Total de pedidos = ', OrdersTotal (), '', 'Comercia este símbolo (', Símbolo (), ') = ', TradesThisSymbol, '', '', 'La hora de la nueva barra es ', MQLTimeToStr (nueva barra), '', '', 'Máxima diaria[1] = ', Máxima (1), '', 'Máxima diaria[2] = ', Máxima (2), '', 'Mínima diaria[1] = ', Mínima (1), '', 'Mínimo diario[2] = ', Mínimo (2), '', '', 'Precio de venta actual 16 pips = ', (Ask (16 * Point * pipMultiplier)), ' ', 'Precio de oferta actual - 16 pips = ', Oferta - (16 * Punto * pipMultiplier));
tp := (NormalizeDouble ((TakeProfit * Point * pipMultiplier), Digits));
ts := (NormalizeDouble ((TrailingStop * Point * pipMultiplier), Digits));
if (nueva barra lt; gt; iTime (NULL, 0, 0)) entonces
comenzar
nuevabarra := iTime (NULL, 0, 0);
if (TradesThisSymbol lt; 1) y (canOpenTrade (Period ())) entonces
comenzar
Frecuencias de actualización ();
si (OsMADirection = 1) y (ForceNeg) entonces
comenzar
sl := (Bajo (1) - 1.0 * Punto * pipMultiplier);
PriceOpen := Alto (1) 1.0 * Punto * pipMultiplier;
si precio abierto gt; (Preguntar 16.0 * Punto * pipMultiplier) luego
comenzar
OrderSend (Símbolo (), OP_BUYSTOP, (PriceOpen - sl), PriceOpen, Slippage, sl, PriceOpen tp, 'Orden de entrada de compra colocada en ' TimeCurrent (), MagicNumber, 0, Green);
Resultado := (0);
Salida;
fin
más empezar
NewPrice := Ask 16.0 * Point * pipMultiplier;
OrderSend (Símbolo (), OP_BUYSTOP, (NewPrice - sl), NewPrice, Slippage, sl, NewPrice tp, 'Orden de entrada de compra colocada en ' TimeCurrent (), MagicNumber, 0, Green);
Resultado := (0);
Salida;
fin;
fin;
si (OsMADirection = - 1) y (ForcePos) entonces
comenzar
sl := Alto (1) 1.0 * Punto * pipMultiplier;
PriceOpen := Bajo (1) - 1.0 * Punto * pipMultiplier;
si PrecioAbrir lt; (Oferta - 16.0 * Punto * pipMultiplier) luego
comenzar
OrderSend (Símbolo (), OP_SELLSTOP, (sl - PriceOpen), PriceOpen, Slippage, sl, PriceOpen - tp, 'Vender orden de entrada colocada en ' TimeCurrent (), MagicNumber, 0, Green);
Resultado := (0);
Salida;
fin
más empezar
NuevoPrecio := Oferta - 16 * Punto * pipMultiplier;
ticket := (OrderSend (Symbol (), OP_SELLSTOP, (sl - NewPrice), NewPrice, Slippage, sl, NewPrice - tp, 'Vender pedido de entrada colocado en ' TimeCurrent (), MagicNumber, 0, Green));
Resultado := (0);
Salida;
fin;
fin;
fin;
si intercambia este símbolo gt; 0 entonces
comenzar
comenzar
para i := PedidosTotal () - 1
hasta 0 empezar
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (SímboloPedido () lt;gt; Símbolo ()) entonces
continuar;
if (NúmeroMágicoPedido () lt;gt; NúmeroMágico) entonces
continuar;
Frecuencias de actualización ();
si (TipoPedido () = OP_BUYSTOP) entonces
comenzar
si (OsMADirection = - 1) entonces
comenzar
OrderDelete (OrderTicket ());
Resultado := (0);
Salida;
fin;
si ((Alto (1) lt; Alto (2))) entonces
if (High (1) gt; (Ask 16.0 * Point * pipMultiplier)) entonces
comenzar
OrderModify (OrderTicket (), (Alto (1) 1.0 * Punto * pipMultiplier), Bajo (1) - 1.0 * Punto * pipMultiplier, OrderTakeProfit (), 0, Cian);
Resultado := (0);
Salida;
fin
más empezar
OrderModify (OrderTicket (), (Ask 16.0 * Point * pipMultiplier), Low (1) - 1.0 * Point * pipMultiplier, OrderTakeProfit (), 0, Cyan);
Resultado := (0);
Salida;
fin;
fin;
si (TipoPedido() = OP_SELLSTOP) entonces
comenzar
si (OsMADirection = 1) entonces
comenzar
OrderDelete (OrderTicket ());
Resultado := (0);
Salida;
fin;
si ((Bajo (1) gt; Bajo (2))) entonces
if (Low (1) lt; (Bid - 16.0 * Point * pipMultiplier)) entonces
comenzar
OrderModify (OrderTicket (), (Bajo (1) - 1.0 * Punto * pipMultiplier), Alto (1) 1.0 * Punto * pipMultiplier, OrderTakeProfit (), 0, Cian);
Resultado := (0);
Salida;
fin
más empezar
OrderModify (OrderTicket (), (Bid - 16.0 * Point * pipMultiplier), High (1) 1.0 * Point * pipMultiplier, OrderTakeProfit (), 0, Cyan);
Resultado := (0);
Salida;
fin;
fin;
fin;
fin;
fin;
fin;
si intercambia este símbolo gt; 0 entonces
comenzar
comenzar
para i := PedidosTotal () - 1
hasta 0 empezar
si (OrderSelect (i, SELECT_BY_POS, MODE_TRADES) = falso) entonces
romper;
if (SímboloPedido () lt;gt; Símbolo ()) entonces
continuar;
if (NúmeroMágicoPedido () lt;gt; NúmeroMágico) entonces
continuar;
Frecuencias de actualización ();
si (TipoPedido () = OP_BUY) entonces
comenzar
si Pregunta - OrderOpenPrice () gt; (t) entonces
comenzar
si OrderStopLoss () lt; (Preguntar - ts) entonces
comenzar
OrderModify (OrderTicket (), OrderOpenPrice (), (Ask - ts), Ask tp, 0, Cyan);
Resultado := (0);
Salida;
fin;
fin;
fin;
si (TipoPedido () = OP_SELL) entonces
comenzar
si OrderOpenPrice () - Oferta gt; (t) entonces
comenzar
si OrderStopLoss () gt; (Oferta ts) entonces
comenzar
OrderModify (OrderTicket (), OrderOpenPrice (), (Bid ts), Bid - tp, 0, Cyan);
Resultado := (0);
Salida;
fin;
fin;
fin;
fin;
fin;
fin;
Resultado := (0);
Salida;
fin;
función getLots (rango: Real) : Real;
var paso: Real;
var minLote: Real;
var maxLot: Real;
var lotes: Real;
comenzar
Frecuencias de actualización ();
paso := (MarketInfo (Símbolo (), MODE_LOTSTEP));
minLot := (MarketInfo (Símbolo (), MODE_MINLOT));
maxLot := (MarketInfo (Símbolo (), MODE_MAXLOT));
muchos := (Muchos);
si UseAutomaticMM entonces
si Riesgo gt; 0 entonces
lotes := AccountFreeMargin () * (Riesgo100.0)(rango * MarketInfo (Símbolo (), MODE_TICKVALUE)Punto);
Resultado := (MathMax (MathMin (lots, maxLot), minLot));
Salida;
fin;
función canOpenTrade (timeFrame : Variant) : Boolean;
var periodCount: Variante;
var tiempo de inicio: entero;
var hora de finalización: entero;
var i: Entero;
comenzar
cuentaperiodo := (0);
startTime := (iTime (Símbolo (), timeFrame, iBarShift (Símbolo (), timeFrame, iTime (NULL, 0, 0))));
hora de finalización: = (hora de inicio marco de tiempo * 60 - 1);
si (no OneTradePerBar) entonces
para i := OrdersHistoryTotal () - 1
hasta 0 empezar
si (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) = falso) entonces
romper;
if (NúmeroMágicoPedido () lt;gt; NúmeroMágico) entonces
continuar;
if (SímboloPedido () lt;gt; Símbolo ()) entonces
continuar;
if (OrderOpenTime () lt; startTime) o (OrderOpenTime () gt; endTime) entonces
continuar;
Inc (recuento de periodos);
fin;
Resultado := (periodCount = 0);
Salida;
fin;
función checkSymbol (compareToWhat : String) : Boolean;
comenzar
Resultado := (StringFind (Símbolo (), compareToWhat) gt; - 1);
Salida;
fin;
procedimiento setMinutes (sminuto1 : Variante; eminuto1 : Variante; sminuto2 : Variante; eminuto2 : Variante; sminuto3 : Variante; eminuto3 : Variante; sminuto4 : Variante; eminuto4 : Variante; sminuto5 : Variante; eminuto5 : Variante; sminuto6 : Variante; eminuto6 : Variante ; sminute7 : Variante; eminute7 : Variante);
var Resultado: Variante;
comenzar
MinutoInicio1 := sminuto1;
EndMinute1 := eminuto1;
MinutoInicio2 := sminuto2;
EndMinute2 := eminuto2;
MinutoInicio3 := sminuto3;
EndMinute3 := eminuto3;
MinutoInicio4 := sminuto4;
EndMinute4 := eminuto4;
MinutoInicio5 := sminuto5;
EndMinute5 := eminuto5;
MinutoInicio6 := sminuto6;
EndMinute6 := eminute6;
MinutoInicio7 := sminuto7;
EndMinute7 := eminute7;
fin;
procedimiento OnCreate;
comenzar
Configuración.AddAccount(@Cuenta, 'Cuenta', '30');
Settings.AddCandleHistory(@Historial, 'Historial de velas', 'EURUSD', CI_15_Minutes, 100);
History.OnNewCandleEvent := @OnNewCandle;
Configuración.AddInteger(@MagicNumber, 'MagicNumber', MagicNumber);
Settings.AddFloat(@Lots, 'Lots', Lots);
Configuración.AddInteger(@TakeProfit, 'TakeProfit', TakeProfit);
Configuración.AddInteger(@TrailingStop, 'TrailingStop', TrailingStop);
Configuración.AddInteger(@Slippage, 'Deslizamiento', Deslizamiento);
Configuración.AddCheckbox(@UseTimeLimit, 'UseTimeLimit', UseTimeLimit);
Configuración.AddCheckbox(@UseAutomaticMM, 'UseAutomaticMM', UseAutomaticMM);
Configuración.AddFloat(@Risk, 'Riesgo', Riesgo);
Configuración.AddString(@_, '_', _);
Configuración.AddCheckbox(@OneTradePerBar, 'OneTradePerBar', OneTradePerBar);
Configuración.AddString(@__, '__', __);
Settings.AddCheckbox(@CloseOnFriday, 'CloseOnFriday', CloseOnFriday);
Settings.AddInteger(@FridayCloseHour, 'FridayCloseHour', FridayCloseHour);
Settings.AddInteger(@FridayCloseMinute, 'FridayCloseMinute', FridayCloseMinute);
fin;
1 Adjunto(s) Su publicación está en el foro equivocado... De todos modos, tal vez este sea el archivo que está buscando. No sé nada al respecto, pero un minuto en google me trae a este archivo:
https://www.forosforex.com/attachmen...391947640393.3
Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español.
Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.