Piazzare un ordine di compravendita per l'esecuzione in condizioni specificate (ordine pendente)
Esempio dell'operazione TRADE_ACTION_PENDING per piazzare un ordine in sospeso:
#property description"Example of placing pending orders"#property script_show_inputs#define EXPERT_MAGIC 123456// MagicNumber of the expertinputENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT; // order type//+------------------------------------------------------------------+//| Placing pending orders |//+------------------------------------------------------------------+voidOnStart()
{
//--- declare and initialize the trade request and result of trade requestMqlTradeRequest request={0};
MqlTradeResult result={0};
//--- parameters to place a pending order
request.action =TRADE_ACTION_PENDING; // type of trade operation
request.symbol =Symbol(); // symbol
request.volume =0.1; // volume of 0.1 lot
request.deviation=2; // allowed deviation from the price
request.magic =EXPERT_MAGIC; // MagicNumber of the orderint offset = 50; // offset from the current price to place the order, in pointsdouble price; // order triggering pricedouble point=SymbolInfoDouble(_Symbol,SYMBOL_POINT); // value of pointint digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); // number of decimal places (precision)//--- checking the type of operationif(orderType==ORDER_TYPE_BUY_LIMIT)
{
request.type =ORDER_TYPE_BUY_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_LIMIT)
{
request.type =ORDER_TYPE_SELL_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_BUY_STOP)
{
request.type =ORDER_TYPE_BUY_STOP; // order type
price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price=NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_STOP)
{
request.type =ORDER_TYPE_SELL_STOP; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseAlert("This example is only for placing pending orders"); // if not pending order is selected//--- send the requestif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // if unable to send the request, output the error code//--- information about the operationPrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//+------------------------------------------------------------------+
Artyom Trishkin: Vladimir, non puoi scriverlo in russo?
Non si può. Perché ho citato per intero il riferimento. Altrimenti, è un azzardo: tutti hanno un "biglietto" e alcuni hanno "biglietti". Ecco perché le funzioni, l'aiuto e le citazioni dell'aiuto sono in inglese.
Non si può. Perché ho citato per intero il riferimento. Altrimenti, è un azzardo: tutti hanno un "biglietto" e alcuni hanno "biglietti". Pertanto, le funzioni, il riferimento e le citazioni nel riferimento sono in inglese.
E hanno "biglietti" solo perché iniziano a tradurre con google :)
Nell'aiuto ufficiale russo, ci sono dei "biglietti".
Ciao a tutti! Penso che la domanda sia principalmente per i professionisti (come risulta). È passata una settimana con una sola domanda sul codice.
Per esempio - sappiamo che la candela M5 contiene 5 candele M1 (per esempio, 00:00, 00:01, 00:02, 00:03 e 00:04). Inoltre considereremo solo questa congiunzione - cioè eseguiamo l'indicatore su M1 e vogliamo vedere le letture dell'indicatore da M5.
Cioè, per visualizzare correttamente i dati del TF centrale su quello inferiore, dovrei fare un ciclo di tutte le 5 barre del TF inferiore man mano che appaiono. Cioè la prima barra appare 00:00, poi 00:01 ecc. fino a 00:04 e dopo appare la successiva. Significa che il ciclo dovrebbe essere da 0 a 4 - questo è il massimo, mentre i vuoti nella storia non sono considerati. Il problema è che ottengo il ciclo da 0 a 5, e non ho abbastanza logica per arrivare a 4! Credetemi, sto lottando con questo da una settimana e sto davvero chiedendo il vostro aiuto. Qui sotto c'è un codice molto troncato dove il ciclo va a 5 invece che a 4. Voglio che sia 4!!!!!
#property copyright""#property link""#property version""#property indicator_chart_window//+----------------------------------------------+//| Входные параметры индикатора |//+----------------------------------------------+inputENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, // количество истории в барах на текущем тикеconstint prev_calculated,// количество истории в барах на предыдущем тикеconstdatetime &time[],
constdouble &open[],
constdouble& high[], // ценовой массив максимумов цены для расчёта индикатораconstdouble& low[], // ценовой массив минимумов цены для расчёта индикатораconstdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime IndTime[1];
//--- объявления локальных переменныхint limit,bar;
//--- индексация элементов в массивах как в таймсерияхArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баровif(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
{
limit=100; // стартовый номер для расчёта всех баров
LastCountBar=limit;
}
else
limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров//--- основной цикл расчёта индикатораfor(bar=limit; bar>=0; bar--)
{
//--- копируем вновь появившиеся данные в массив IndTimeif(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
return(0);
if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
{
LastCountBar=bar;
//--- Далее проводим вычисления индикатора МТФ ...............Print(bar," ",IndTime[0]);
//---
}
}
return(rates_total);
}
//+------------------------------------------------------------------+
Ho la libreria di cui sopra. Voglio aggiungere una casella di modifica con un'etichetta all'interno di questa lista. Puoi dirmi come posso farlo? Ho provato, ma non funziona.
La domanda è questa. Posso aprire 2 (o più) grafici al tocco di un pulsante in modo che siano posizionati verticalmente, occupando equamente tutto il monitor?
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
ENUM_TRADE_REQUEST_ACTIONS
Identificatore
Descrizione
AFFARE_AZIONE_COMMERCIALE
Piazzare un ordine di compravendita per un'esecuzione immediata con i parametri specificati (ordine di mercato)
AZIONE_COMMERCIALE_IN SOSPESO
Piazzare un ordine di compravendita per l'esecuzione in condizioni specificate (ordine pendente)
Esempio dell'operazione TRADE_ACTION_PENDING per piazzare un ordine in sospeso:
ENUM_TRADE_REQUEST_ACTIONS
Identificatore
Descrizione
AFFARE_AZIONE_COMMERCIALE
Piazzare un ordine di compravendita per un'esecuzione immediata con i parametri specificati (ordine di mercato)
AZIONE_COMMERCIALE_IN SOSPESO
Piazzare un ordine di compravendita per l'esecuzione in condizioni specificate (ordine pendente)
Grazie!
Esempio dell'operazione TRADE_ACTION_PENDING per piazzare un ordine in sospeso:
Vladimir, non puoi scriverlo in russo?
Non si può. Perché ho citato per intero il riferimento. Altrimenti, è un azzardo: tutti hanno un "biglietto" e alcuni hanno "biglietti". Ecco perché le funzioni, l'aiuto e le citazioni dell'aiuto sono in inglese.
Non si può. Perché ho citato per intero il riferimento. Altrimenti, è un azzardo: tutti hanno un "biglietto" e alcuni hanno "biglietti". Pertanto, le funzioni, il riferimento e le citazioni nel riferimento sono in inglese.
Ciao a tutti! Penso che la domanda sia principalmente per i professionisti (come risulta). È passata una settimana con una sola domanda sul codice.
Per esempio - sappiamo che la candela M5 contiene 5 candele M1 (per esempio, 00:00, 00:01, 00:02, 00:03 e 00:04). Inoltre considereremo solo questa congiunzione - cioè eseguiamo l'indicatore su M1 e vogliamo vedere le letture dell'indicatore da M5.
Cioè, per visualizzare correttamente i dati del TF centrale su quello inferiore, dovrei fare un ciclo di tutte le 5 barre del TF inferiore man mano che appaiono. Cioè la prima barra appare 00:00, poi 00:01 ecc. fino a 00:04 e dopo appare la successiva. Significa che il ciclo dovrebbe essere da 0 a 4 - questo è il massimo, mentre i vuoti nella storia non sono considerati. Il problema è che ottengo il ciclo da 0 a 5, e non ho abbastanza logica per arrivare a 4! Credetemi, sto lottando con questo da una settimana e sto davvero chiedendo il vostro aiuto. Qui sotto c'è un codice molto troncato dove il ciclo va a 5 invece che a 4. Voglio che sia 4!!!!!
Come si aggiunge una finestra di modifica della vista elenco?
https://www.mql5.com/en/docs/standardlibrary/controls/clistview
Ho la libreria di cui sopra. Voglio aggiungere una casella di modifica con un'etichetta all'interno di questa lista. Puoi dirmi come posso farlo? Ho provato, ma non funziona.
E hanno "biglietti" solo perché iniziano a tradurre con google :)
OK, lo confesso: mi ha preso. Ha risposto rapidamente e non ha cambiato la lingua dell'aiuto 😎
Ricevuto ;)