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;