He empezado a estudiar la programación de MQL5 no hace mucho, he estudiado la documentación y he visto algunos webinars en youtube. He conseguido hacer algunos pasos humildes :) Llevo tres días trabajando en ello :( Me gustaría pedir ayuda a los profesionales.
El concepto general es el siguiente: primero, obtenemos los precios Ask y Bid (utilicé MqlTick y SymbolInfoTick para este propósito), luego miramos si hay una operación abierta o no ( utilicé PositionsTotal para este propósito), si no hay posiciones abiertas, abrimos una posición a los precios Ack o Bid de acuerdo a una determinada condición. Es decir, si teníamos una operación previa de compra y resultó positiva (compramos bajo y cerramos alto), abriremos una nueva posición de compra... Esto es en términos generales :) El problema es que no puedo obtener información sobre cuál fue el tipo de última transacción y, en consecuencia, a qué precio se abrió y a qué precio se cerró...
Aquí está el código que escribí:
//+------------------------------------------------------------------+//| SOVETNIK_01.mq5 |//| Tokarev Sergey |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Tokarev Sergey"#property link"https://www.mql5.com"#property version"1.00"//Мои подключаемые библиотеки#include<Trade\Trade.mqh> //Библиотека для структуры "CTrade", она отвечает за выполнение всех торговых операций#include <Trade\PositionInfo.mqh> //Библиотека для структуры "CPositionInfo" она выдаёт информацию по всем нашим позициям//переменные для подключаемых классов и структур опишем тут
CTrade Trade; //Значение структуры "CTrade" поместим в переменную Trade
CPositionInfo PositionInfo; //Значение структуры "CPositionInfo" поместим в переменную PositionInfoMqlTick last_tick; //В переменной last_tick будут храниться цены последнего пришедшего тика, для этого используем структуру "MqlTick"MqlTradeRequest request;
MqlTradeResult result;
//глобальные переменныеdouble SL; //Переменная необходимая для преобразования размера StopLoss в зависимости от типа брокераdouble TP; //Переменная необходимая для преобразования размера TakeProfit в зависимости от типа брокераdouble Ask; //Переменная в которой будем хранить значения цены спросаdouble Bid; //Переменная в которой будем хранить значение цены предложенияint MagicNumber=123456; //Зададим MagicNumber для идентификации своих ордеровint N; //В переменную N мы занесём кол-во открытых позиций int Lot; //Укажем размер нашего лота//+------------------------------------------------------------------+//| Инструкции которые срабатывают один раз при запуске эксперта |//+------------------------------------------------------------------+intOnInit()
{
Trade.SetExpertMagicNumber(MagicNumber); //Занесём наш номер в переменную Trade
Lot=1; //Установим размер нашего лотаreturn(0);
}
//+------------------------------------------------------------------+//| Инструкции которые срабатывают один раз при остановке (закрытии) эксперта |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Инструкции которые срабатывают при каждом новом тике цен |//+------------------------------------------------------------------+voidOnTick()
{
SymbolInfoTick(_Symbol,last_tick); //Заполняем переменную last_tick последними ценами текущего символа, для этого используем "SymbolInfoTick"//Обновляем переменные Ask и Bid для дальнейшего использования
Ask=last_tick.ask;
Bid=last_tick.bid;
Print("Цена ПРОДАЖИ = ",Ask);
Print("Цена ПОКУПКИ = ",Bid);
//Определим существует ли открытая позиция или нет
N=PositionsTotal();
Print("Кол-во открытых позиций: ",N);
if(N==0)
{
//Если позиции нет то определим какая сделка была крайнейHistorySelect(0,TimeCurrent()); //Загружаем историю наших сделокulong last_deal_ticket; //Объявим переменную для тикета последней сделкиulong deals=HistoryOrdersTotal(); //Обяъвим переменную "deals" куда выгрузим количество наших сделок в целом из истории
last_deal_ticket=HistoryDealGetTicket((int)deals-1); //получим тикет крайней сделкиPrint("Ticket крайней сделки: ",last_deal_ticket);
long deal_type=HistoryDealGetInteger(last_deal_ticket,DEAL_TYPE); //Тут получить должны тип крайней сделки из историиPrint ("Тип крайней ",deal_type);
//Если была на продажу то покупаемif (deal_type==BUY)
{
//Открываем наш ордер на покупку
Trade.Buy(Lot,Symbol(),Ask,SL,TP);
Print("Мы купили по цене: ",Ask);
}
Necesito obtener del campo de entrada de la ventana del EA el plazo seleccionado por el usuario en la lista desplegable. ¡Cómo utilizarlo en la función, estoy luchando con él por segundo día consecutivo, por favor, aconséjeme)!
¿Puede usted por favor aconsejar cómo obtener información sobre las operaciones abiertas y cerradas en el código MQL EA (qué precio se abrió, lo que eran el TP y SL)? al menos para el último 1.
¿Y hay alguna función o biblioteca incorporada que devuelva un array con n últimos valores de media móvil(preferiblemente ponderada o exponencial)?
¿Puede usted por favor aconsejar cómo obtener información sobre las operaciones abiertas y cerradas en el código MQL EA (qué precio se abrió, lo que eran el TP y SL)? al menos para el último 1.
¿Y hay alguna función o biblioteca incorporada que devuelva un array con n últimos valores de media móvil(preferiblemente ponderada o exponencial)?
Por favor, especifique siempre a qué versión de MQL4 o MQL5 se refiere su pregunta.
Buenos días a todos.
He empezado a estudiar la programación de MQL5 no hace mucho, he estudiado la documentación y he visto algunos webinars en youtube. He conseguido hacer algunos pasos humildes :) Llevo tres días trabajando en ello :( Me gustaría pedir ayuda a los profesionales.
El concepto general es el siguiente: primero, obtenemos los precios Ask y Bid (utilicé MqlTick y SymbolInfoTick para este propósito), luego miramos si hay una operación abierta o no ( utilicé PositionsTotal para este propósito), si no hay posiciones abiertas, abrimos una posición a los precios Ack o Bid de acuerdo a una determinada condición. Es decir, si teníamos una operación previa de compra y resultó positiva (compramos bajo y cerramos alto), abriremos una nueva posición de compra... Esto es en términos generales :) El problema es que no puedo obtener información sobre cuál fue el tipo de última transacción y, en consecuencia, a qué precio se abrió y a qué precio se cerró...
Aquí está el código que escribí:
Gracias de antemano por su ayuda :)
Hace tiempo que me alejé de los libros de papel, así como de los libros piratas en formato electrónico. Me acostumbré a ello.
No se puede vivir con belleza.
Tengo recién llegados que me preguntan qué leer y no recuerdo lo que tengo.
¡Buenos días a todos!
Necesito obtener del campo de entrada de la ventana del EA el plazo seleccionado por el usuario en la lista desplegable. ¡Cómo utilizarlo en la función, estoy luchando con él por segundo día consecutivo, por favor, aconséjeme)!
Código:
input enum timeFrame {
Hora_1 = 60,
Hora_4 = 240,
Día_1 = 1440,
¡Semana_1 = 10080!
};
iADX(currencySelect, ¡Así se instalan los datos seleccionados!, ADXparam, PRICE_CLOSE, MODE_MINUSDI,2)
Gracias.
Insertar el código correctamente en el foro
Aquí hay un script de ejemplo, aplicando su enumeración:
Insertar el código correctamente en el foro
Aquí hay un ejemplo de script, usando su listado:
Gracias.
Y más, por favor dime, ¿hay una construcción en MQ4 como un array asociativo con claves de texto, por ejemplo: Array["¡Aquí está la clave!"]?
Gracias.
Además, ¿podría decirme si MQ4 tiene una construcción como array asociativo con claves de texto, por ejemplo: Array["¡Aquí está la clave!"]?
En tu ejemplo, las claves son números, y yo me refería a usar cadenas como claves.
¡Hola!
¿Puede usted por favor aconsejar cómo obtener información sobre las operaciones abiertas y cerradas en el código MQL EA (qué precio se abrió, lo que eran el TP y SL)? al menos para el último 1.
¿Y hay alguna función o biblioteca incorporada que devuelva un array con n últimos valores de media móvil(preferiblemente ponderada o exponencial)?
¡Hola!
¿Puede usted por favor aconsejar cómo obtener información sobre las operaciones abiertas y cerradas en el código MQL EA (qué precio se abrió, lo que eran el TP y SL)? al menos para el último 1.
¿Y hay alguna función o biblioteca incorporada que devuelva un array con n últimos valores de media móvil(preferiblemente ponderada o exponencial)?