Le persone aiutano. Cercando di ottenere il prezzo al quale si è aperto uno scambio. All'inizio ho fatto trading attraverso CTrade ma trade.resultprice era uguale a zero. Ho iniziato a fare trading attraverso MqlTrade e result.price mostrava buoni risultati in Strategy Tester, ma era uguale a zero in Live. Ho provato con OnTradeTransaction, ma è troppo lento nel trading live e mostra zero quando l'auto-trading viene fermato. Quali sono i modi per ottenere il prezzo al quale l'operazione di acquisto è andata a buon fine?
mikhail_shmakov: Le persone aiutano. Cercando di ottenere il prezzo al quale si è aperto uno scambio. All'inizio ho fatto trading attraverso CTrade ma trade.resultprice era uguale a zero. Ho iniziato a fare trading attraverso MqlTrade e result.price mostrava buoni risultati in Strategy Tester, ma era uguale a zero in Live. Ho provato con OnTradeTransaction, ma è troppo lento nel trading live mostrando zero e mostra l'ultimo prezzo di scambio quando l'auto-trading viene fermato. Quali sono i modi per ottenere il prezzo al quale è avvenuto l'acquisto?
structMqlTradeTransaction
{
ulong deal; // Тикет сделки ulong order; // Тикет ордера string symbol; // Имя торгового инструмента ENUM_TRADE_TRANSACTION_TYPE type; // Тип торговой транзакции ENUM_ORDER_TYPE order_type; // Тип ордера ENUM_ORDER_STATE order_state; // Состояние ордера ENUM_DEAL_TYPE deal_type; // Тип сделки ENUM_ORDER_TYPE_TIME time_type; // Тип ордера по времени действия datetime time_expiration; // Срок истечения ордера double price; // Цена double price_trigger; // Цена срабатывания стоп-лимитного ордера double price_sl; // Уровень Stop Loss double price_tp; // Уровень Take Profit double volume; // Объем в лотах ulong position; // Тикет позиции ulong position_by; // Тикет встречной позиции
};
Cosa intende per "in scambi molto veloci"? OnTradeTransaction funziona per ogni operazione. Basta separare il tipo di transazione e prendere il prezzo in TRADE_TRANSACTION_DEAL_ADD
Например, при отсылке рыночного ордера на покупку он обрабатывается, для счета создается соответствующий ордер на покупку, происходит исполнение ордера, его удаление из списка открытых, добавление в историю ордеров, далее добавляется соответствующая сделка в историю и создается новая позиция. Все эти действия являются торговыми транзакциями...
//+------------------------------------------------------------------+ //| Получает текущее количество отложенных ордеров с указанным ORDER_MAGIC | //+------------------------------------------------------------------+ int GetOrdersTotalByMagic(longconst magic_number)
{
ulong order_ticket;
int total=0;
//--- пройдем по всем отложенным ордерам for(int i=0;i<OrdersTotal();i++)
if((order_ticket=OrderGetTicket(i))>0)
if(magic_number==OrderGetInteger(ORDER_MAGIC)) total++;
//--- return(total);
}
Ciao colleghi programmatori. Per favore, aiutatemi a modificare questa funzione. La funzione da MQL5 Reference di cui sopra. Come farle calcolare il numero di tutte le posizioni aperte per un dato Magic?
Kolya32: Ciao colleghi programmatori. Per favore, aiutatemi a modificare questa funzione. Ho già introdotto questa funzione in MQL5 Reference. Cosa devo fare per farle calcolare il numero di posizioni aperte per Magic?
Dovremmo almeno cambiare Ordini*** in Posizioni*** e poi controllare.
Alexey Viktorov: Almeno cambia Ordini*** in Posizioni*** ovunque e poi controlla.
Sembra funzionare)) Possiamo aggiungere questa funzione a MQL5)) Anche se probabilmente è troppo presto, la testerò)
//+------------------------------------------------------------------+ //| Получает текущее количество открытых позиций с указанным ORDER_MAGIC | //+------------------------------------------------------------------+ int GetPositionsTotalByMagic(longconst magic_number)
{
ulong position_ticket;
int total=0;
//--- пройдем по всем открытым позициям for(int i=0;i<PositionsTotal();i++)
if((position_ticket=PositionGetTicket(i))>0)
if(magic_number==PositionGetInteger(POSITION_MAGIC)) total++;
//--- return(total);
}
Sembra funzionare)) Potete aggiungere questa funzione al manuale MQL5)) Anche se probabilmente è troppo presto, sto ancora testando)
Se si aggiunge ogni piccola cosa come questa al manuale, il manuale si trasformerà in una discarica. Scusa, non si tratta della qualità delle modifiche che hai fatto.
mikhail_shmakov: Le persone aiutano. Sto cercando di ottenere il prezzo al quale si è aperto uno scambio. All'inizio ho usato CTrade, ma trade.resultprice era uguale a zero. Ho iniziato a fare trading attraverso MqlTrade e result.price mostrava buoni risultati in Strategy Tester, ma era uguale a zero in Live. Ho provato con OnTradeTransaction, ma è troppo lento nel trading live mostrando zero e mostra l'ultimo prezzo di scambio quando l'auto-trading viene fermato. Quali sono i modi per ottenere il prezzo al quale l'operazione di acquisto è andata a buon fine?
OrderSend invia un ordine. Poi dobbiamo aspettare la sua esecuzione e che il commercio corrispondente appaia nella storia.
Per fare tutto questo correttamente, bisogna essere bravi in OnTradeTransaction o scrivere codice piuttosto pesante per OrderSend una volta.
Nel secondo caso, CTrade funzionerà anche come desiderato.
Qual è l'analogo di Digits che restituisce il numero di cifre decimali dopo la virgola che determina la precisione della misurazione del prezzo del simbolo grafico selezionato ?
Qual è l'analogo di Digits che restituisce il numero di cifre decimali dopo la virgola che determina la precisione della misurazione del prezzo del simbolo grafico selezionato ?
Le persone aiutano. Cercando di ottenere il prezzo al quale si è aperto uno scambio. All'inizio ho fatto trading attraverso CTrade ma trade.resultprice era uguale a zero. Ho iniziato a fare trading attraverso MqlTrade e result.price mostrava buoni risultati in Strategy Tester, ma era uguale a zero in Live. Ho provato con OnTradeTransaction, ma è troppo lento nel trading live mostrando zero e mostra l'ultimo prezzo di scambio quando l'auto-trading viene fermato. Quali sono i modi per ottenere il prezzo al quale è avvenuto l'acquisto?
Ciao colleghi programmatori. Per favore, aiutatemi a modificare questa funzione. Ho già introdotto questa funzione in MQL5 Reference. Cosa devo fare per farle calcolare il numero di posizioni aperte per Magic?
Almeno cambia Ordini*** in Posizioni*** ovunque e poi controlla.
Sembra funzionare)) Possiamo aggiungere questa funzione a MQL5)) Anche se probabilmente è troppo presto, la testerò)
Sembra funzionare)) Potete aggiungere questa funzione al manuale MQL5)) Anche se probabilmente è troppo presto, sto ancora testando)
Le persone aiutano. Sto cercando di ottenere il prezzo al quale si è aperto uno scambio. All'inizio ho usato CTrade, ma trade.resultprice era uguale a zero. Ho iniziato a fare trading attraverso MqlTrade e result.price mostrava buoni risultati in Strategy Tester, ma era uguale a zero in Live. Ho provato con OnTradeTransaction, ma è troppo lento nel trading live mostrando zero e mostra l'ultimo prezzo di scambio quando l'auto-trading viene fermato. Quali sono i modi per ottenere il prezzo al quale l'operazione di acquisto è andata a buon fine?
OrderSend invia un ordine. Poi dobbiamo aspettare la sua esecuzione e che il commercio corrispondente appaia nella storia.
Per fare tutto questo correttamente, bisogna essere bravi in OnTradeTransaction o scrivere codice piuttosto pesante per OrderSend una volta.
Nel secondo caso, CTrade funzionerà anche come desiderato.
Qual è l'analogo di Digits che restituisce il numero di cifre decimali dopo la virgola che determina la precisione della misurazione del prezzo del simbolo grafico selezionato ?
Qual è l'analogo di Digits che restituisce il numero di cifre decimali dopo la virgola che determina la precisione della misurazione del prezzo del simbolo grafico selezionato ?
Grazie!