Ho iniziato a studiare la programmazione MQL5 non molto tempo fa, ho studiato la documentazione e ho guardato alcuni webinar su youtube. Sono riuscito a fare alcuni passi umili :) Ci sto lavorando da tre giorni :( Vorrei chiedere aiuto ai professionisti.
Il concetto generale è il seguente: prima otteniamo i prezzi Ask e Bid (ho usato MqlTick e SymbolInfoTick per questo scopo), poi guardiamo se c'è un accordo aperto o no (ho usato PositionsTotal per questo scopo), se non ci sono posizioni aperte, apriamo una posizione ai prezzi Ack o Bid secondo una certa condizione. Vale a dire, se abbiamo avuto un trade precedente per comprare e si è rivelato positivo (abbiamo comprato basso e chiuso alto), apriremo una nuova posizione per comprare... Questo è in termini generali :) Il problema è che non posso ottenere informazioni su quale sia stato il tipo di ultima transazione e di conseguenza a quale prezzo si è aperta e a quale prezzo si è chiusa...
Ecco il codice che ho scritto:
//+------------------------------------------------------------------+//| 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);
}
Ho bisogno di ottenere dal campo di input nella finestra EA il timeframe selezionato dall'utente dall'elenco a discesa. Come faccio a incollarlo nella funzione, ci sto lottando per il secondo giorno di fila, per favore ditemelo)!
Puoi per favore consigliare come ottenere informazioni sui trade aperti e chiusi nel codice MQL EA (quale prezzo è stato aperto, quali erano il TP e lo SL)? almeno per l'ultimo 1.
E c'è qualche funzione o libreria integrata che restituisce un array con n ultimi valori di media mobile(preferibilmente ponderata o esponenziale)?
Puoi per favore consigliare come ottenere informazioni sui trade aperti e chiusi nel codice MQL EA (quale prezzo è stato aperto, quali erano il TP e lo SL)? almeno per l'ultimo 1.
E c'è qualche funzione o libreria integrata che restituisce un array con n ultimi valori di media mobile(preferibilmente ponderata o esponenziale)?
Si prega di specificare sempre per quale versione di MQL4 o MQL5 è la vostra domanda.
Buona giornata a tutti.
Ho iniziato a studiare la programmazione MQL5 non molto tempo fa, ho studiato la documentazione e ho guardato alcuni webinar su youtube. Sono riuscito a fare alcuni passi umili :) Ci sto lavorando da tre giorni :( Vorrei chiedere aiuto ai professionisti.
Il concetto generale è il seguente: prima otteniamo i prezzi Ask e Bid (ho usato MqlTick e SymbolInfoTick per questo scopo), poi guardiamo se c'è un accordo aperto o no (ho usato PositionsTotal per questo scopo), se non ci sono posizioni aperte, apriamo una posizione ai prezzi Ack o Bid secondo una certa condizione. Vale a dire, se abbiamo avuto un trade precedente per comprare e si è rivelato positivo (abbiamo comprato basso e chiuso alto), apriremo una nuova posizione per comprare... Questo è in termini generali :) Il problema è che non posso ottenere informazioni su quale sia stato il tipo di ultima transazione e di conseguenza a quale prezzo si è aperta e a quale prezzo si è chiusa...
Ecco il codice che ho scritto:
Grazie in anticipo per il vostro aiuto :)
Mi sono allontanato dai libri di carta molto tempo fa, così come dai libri pirata in forma elettronica. Mi ci sono abituato.
Non si può vivere in modo bello.
Ho dei nuovi arrivati che mi chiedono cosa leggere e io non ricordo cosa ho.
Buona giornata a tutti!
Ho bisogno di ottenere dal campo di input nella finestra EA il timeframe selezionato dall'utente dall'elenco a discesa. Come faccio a incollarlo nella funzione, ci sto lottando per il secondo giorno di fila, per favore ditemelo)!
Codice:
input enum timeFrame {
Ora_1 = 60,
Ora_4 = 240,
Giorno_1 = 1440,
Settimana_1 = 10080!
};
iADX(currencySelect, THIS IS HOW TO INSTALL SELECTED DATA!, ADXparam, PRICE_CLOSE, MODE_MINUSDI,2)
Grazie!
Inserire correttamente il codice nel forum
Ecco un esempio di script che applica la vostra enumerazione:
Inserire correttamente il codice nel forum
Ecco uno script di esempio, che applica il tuo elenco:
Grazie!
E ancora, per favore ditemi, c'è una costruzione in MQ4 come array associativo con chiavi di testo, per esempio: Array["Ecco la chiave!"]?
Grazie!
Inoltre, potreste dirmi se MQ4 ha una costruzione come array associativo con chiavi di testo, per esempio: Array["Ecco la chiave!"]?
Nel tuo esempio, le chiavi sono numeri, e io intendevo usare stringhe come chiavi.
Ciao!
Puoi per favore consigliare come ottenere informazioni sui trade aperti e chiusi nel codice MQL EA (quale prezzo è stato aperto, quali erano il TP e lo SL)? almeno per l'ultimo 1.
E c'è qualche funzione o libreria integrata che restituisce un array con n ultimi valori di media mobile(preferibilmente ponderata o esponenziale)?
Ciao!
Puoi per favore consigliare come ottenere informazioni sui trade aperti e chiusi nel codice MQL EA (quale prezzo è stato aperto, quali erano il TP e lo SL)? almeno per l'ultimo 1.
E c'è qualche funzione o libreria integrata che restituisce un array con n ultimi valori di media mobile(preferibilmente ponderata o esponenziale)?