MT5 capisce chiaramente quando lo stoploss è attivato e quando il takeprofit è attivato. // Questo può essere visto dai commenti degli ordini ed è chiaro dalla gestione della piattaforma stessa.
Ecco perché abbiamo la richiesta (costantemente). - Vorremmo che il flag appropriato apparisse in OnTradeTransaction quando si attiva lo SL o il TP.
Ma se questo è impossibile (anche teoricamente) a causa della mancanza di un'architettura vincolante adeguata, è meglio dire solo che l'architettura della piattaforma non ci permette di mettere un flag nell'ordine che viene inviato a questa azione per confermare se era un SL o un TP.
Anche se per voi non esiste la parola "niente è impossibile". Voi siete meta-citazioni :)
struct MqlTradeTransaction
{
ulong deal; // Тикет сделкиulong order; // Тикет ордераstring symbol; // Имя торгового инструментаENUM_TRADE_TRANSACTION_TYPE type; // Тип торговой транзакцииENUM_TRADE_ACTION action, // Тип события, по какой причине выставлен ордер
ENUM_ORDER_TYPE order_type; // Тип ордераENUM_ORDER_STATE order_state; // Состояние ордераENUM_DEAL_TYPE deal_type; // Тип сделкиENUM_ORDER_TYPE_TIME type_time; // Тип ордера по времени действияdatetime time_expiration; // Срок истечения ордераdouble price; // Цена double price_trigger; // Цена срабатывания стоп-лимитного ордераdouble price_sl; // Уровень Stop Lossdouble price_tp; // Уровень Take Profitdouble volume; // Объем в лотах
};
i motivi dell'ordine, rispettivamente SL attivato TP attivato Uscire da una posizione con Stop Out
e altri, se ce ne sono // anche se questo potrebbe essere tutto ciò di cui abbiamo bisogno
MT5 capisce chiaramente quando lo Stop Loss è attivato e quando il Take Profit è attivato. // Questo può essere visto nei commenti dell'ordine e nella piattaforma stessa.
Questo è il punto: non capisce e non dovrebbe capire.
Tutto passa attraverso le code di esecuzione, gli ordini sono divisi in semplici BUY/SELL, con gateway per i fornitori di liquidità e le borse. Non si può dire come verrà eseguito (anche parzialmente) nella realtà. E se improvvisamente proclamiamo che garantiamo lo stop alle bandiere, domani papaklass ci accuserà con giusta rabbia che "non ha funzionato per me!".
Questo è il punto: in realtà non lo fa e non dovrebbe farlo.
Tutto scorre in code di esecuzione, gli ordini sono divisi in semplici BUY/SELL, e attraverso i gateway ai fornitori di liquidità e alle borse.
Sì, si sta dividendo.
Ma questa azione di divisione richiede un'azione abbastanza specifica - per attivare Stop Loss/StackProfit. E queste azioni sono processate dal server di MT , non dal terminale client.
Anche se l'attivazione degli stop non avviene in MT, il risultato è comunque la creazione di un vero ordine o evento per MT5.
Mi rendo conto che non posso entrare nelle viscere del server MT5, ma tu assicurati ancora una volta. È possibile notificare l'azione in base alla quale viene effettuato l'ordine?
Una volta che il server (o il gateway) attiva uno stoploop/stackprofit/stopout, etc., la risposta è di piazzare comunque un ordine. // Non succede niente senza un ordine!
E qui, su questo ordine e mettere la bandiera appropriata - il motivo di questo ordine o evento.
Ma l'azione per questa divisione è abbastanza specifica - attivare stoploop/stackprofit. E questa azione viene elaborata dal server MT , non dal terminale client.
La risposta è semplice: non c'è garanzia di flagging al 100%.
Perché ci sono molte fonti e iniziatori di attivazione, e non è l'unico server di trading.
La risposta è semplice: non c'è garanzia di flagging al 100%.
Perché ci sono così tante fonti e inneschi, e questo non è assolutamente l'unico server commerciale.
L'attivazione di uno stop loss è davvero gestita da diversi server di trading?
Mi è sembrato che un solo server di trading sia sufficiente per questo scopo.
Per l'attivazione, si crea un ordine e si notifica alla piattaforma la sua creazione. // da un gateway esterno Poi si versa. e appaiono i mestieri. È comprensibile che l'ordine non possa essere evaso, e il resto sarà ritirato. Ma al momento della creazione di questo ordine possiamo aggiungere alla transazione un flag che dice che si tratta di un ordine stop loss. La cosa più importante è l'evento stesso che questo è un ordine per uno stop loss.
O in MT ci possono essere scambi senza un ordine se lo stop loss è gestito dal gateway?
Ma tu lo sai bene, non voglio discutere. è un punto molto sottile.
Noi, da parte nostra, pensiamo alla comunicazione indipendente tra agenti senza un terminale. Per esempio, uno degli agenti può generare dati iniziali e inviarli agli altri tramite fordcast.
Senza il coinvolgimento del terminale, questo è buono.
Chi genererà i dati per questo "uno degli agenti"? Uno script o un indicatore sarà in grado di farlo?
A cosa serve la comunicazione tra agenti, illuminate i non addetti ai lavori se potete.
Ho già scritto uno script per testare le capacità di calcolo matematico, ma mancano alcune funzioni)
// все данные расчетов агентов складываются в массив структурstruct MqlCloud
{
enum STATUS {wait,ready,error,free};
STATUS status; // статус выполнения задачи - выполнена, выполняется, ошибка выполненияdouble input_data[]; // массив входных данныхdouble out_data[]; // массив выходных данных
};
long id=AccountInfoInteger(ACCOUNT_LOGIN);
double in_data[100];
MqlCloud result[10000];
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---
CloudInit(id,"myprog.ex5"); // id - это кто будет платить за Cloud, myprog.ex5 - программа которая будет выполнять расчеты
CloudData("file.dat"); // file.dat - файл с неизменными данными для расчетаfor(uint i=0; i<10000; i++)
{
//// формируем массив входных данных для расчетаfor(int n=0; n<ArraySize(in_data); n++) in_data[n]=MathRand()/SHORT_MAX;
//
CloudCalculat(i,in_data); // здесь i - номер задачи, input_data - массив переменных входных данных
}
// выводим максимальный результатdouble max_result=0.0;
for(uint i=0; i<10000; i++)
{
if(result[i].status!=ready)
{
i--;
Sleep(1000);
continue;
}
max_result=MathMax(max_result,result[i].out_data[0]);
}
Print("Max result = ",ArrayMaximum(result[0].out_data));
}
//+------------------------------------------------------------------+void OnCloudPass(uint num_mission)
{
// анализируем результат выполнения задачи по ее номеру, если нужноdouble s=result[num_mission].out_data[0];
}
//+------------------------------------------------------------------+void CloudInit(long ID, string programm_name) {}
void CloudData(string file_dat) {}
void CloudCalculat(uint num_mission, double & idata[]) {}
Il fatto è questo, Renat.
MT5 capisce chiaramente quando lo stoploss è attivato e quando il takeprofit è attivato. // Questo può essere visto dai commenti degli ordini ed è chiaro dalla gestione della piattaforma stessa.
Ecco perché abbiamo la richiesta (costantemente). - Vorremmo che il flag appropriato apparisse in OnTradeTransaction quando si attiva lo SL o il TP.
Ma se questo è impossibile (anche teoricamente) a causa della mancanza di un'architettura vincolante adeguata, è meglio dire solo che l'architettura della piattaforma non ci permette di mettere un flag nell'ordine che viene inviato a questa azione per confermare se era un SL o un TP.
Anche se per voi non esiste la parola "niente è impossibile". Voi siete meta-citazioni :)
In altre parole, guardando la struttura della transazione https://www.mql5.com/ru/docs/constants/structures/mqltradetransaction
Aggiungerei un campo TRADE_ACTION
i motivi dell'ordine, rispettivamenteSL attivato
TP attivato
Uscire da una posizione con Stop Out
e altri, se ce ne sono // anche se questo potrebbe essere tutto ciò di cui abbiamo bisogno
C'è un punto qui, Renat.
MT5 capisce chiaramente quando lo Stop Loss è attivato e quando il Take Profit è attivato. // Questo può essere visto nei commenti dell'ordine e nella piattaforma stessa.
Questo è il punto: non capisce e non dovrebbe capire.
Tutto passa attraverso le code di esecuzione, gli ordini sono divisi in semplici BUY/SELL, con gateway per i fornitori di liquidità e le borse. Non si può dire come verrà eseguito (anche parzialmente) nella realtà. E se improvvisamente proclamiamo che garantiamo lo stop alle bandiere, domani papaklass ci accuserà con giusta rabbia che "non ha funzionato per me!".
Questo è il punto: in realtà non lo fa e non dovrebbe farlo.
Tutto scorre in code di esecuzione, gli ordini sono divisi in semplici BUY/SELL, e attraverso i gateway ai fornitori di liquidità e alle borse.
Sì, si sta dividendo.
Ma questa azione di divisione richiede un'azione abbastanza specifica - per attivare Stop Loss/StackProfit. E queste azioni sono processate dal server di MT , non dal terminale client.
Anche se l'attivazione degli stop non avviene in MT, il risultato è comunque la creazione di un vero ordine o evento per MT5.
Mi rendo conto che non posso entrare nelle viscere del server MT5, ma tu assicurati ancora una volta. È possibile notificare l'azione in base alla quale viene effettuato l'ordine?
Una volta che il server (o il gateway) attiva uno stoploop/stackprofit/stopout, etc., la risposta è di piazzare comunque un ordine. // Non succede niente senza un ordine!
E qui, su questo ordine e mettere la bandiera appropriata - il motivo di questo ordine o evento.
Forse si sarebbe dovuto introdurre una nuova struttura, solo per TradeTransaction?
Non è così nuovo :) è molto completo.
Mancano solo due campi
- identificatore di posizione
- motivo dell'ordine
Sì, si divide.
Ma l'azione per questa divisione è abbastanza specifica - attivare stoploop/stackprofit. E questa azione viene elaborata dal server MT , non dal terminale client.
La risposta è semplice: non c'è garanzia di flagging al 100%.
Perché ci sono molte fonti e iniziatori di attivazione, e non è l'unico server di trading.
La risposta è semplice: non c'è garanzia di flagging al 100%.
Perché ci sono così tante fonti e inneschi, e questo non è assolutamente l'unico server commerciale.
L'attivazione di uno stop loss è davvero gestita da diversi server di trading?
Mi è sembrato che un solo server di trading sia sufficiente per questo scopo.
O in MT ci possono essere scambi senza un ordine se lo stop loss è gestito dal gateway?Per l'attivazione, si crea un ordine e si notifica alla piattaforma la sua creazione. // da un gateway esterno
Poi si versa. e appaiono i mestieri.
È comprensibile che l'ordine non possa essere evaso, e il resto sarà ritirato.
Ma al momento della creazione di questo ordine possiamo aggiungere alla transazione un flag che dice che si tratta di un ordine stop loss.
La cosa più importante è l'evento stesso che questo è un ordine per uno stop loss.
Ma tu lo sai bene, non voglio discutere. è un punto molto sottile.
papaklass:
E chi sta facendo tutto il discorso?
Sicuramente tu.
Stai cercando di trollare, qual è il punto?
Comportati bene.
Noi, da parte nostra, pensiamo alla comunicazione indipendente tra agenti senza un terminale. Per esempio, uno degli agenti può generare dati iniziali e inviarli agli altri tramite fordcast.
Senza il coinvolgimento del terminale, questo è buono.
Chi genererà i dati per questo "uno degli agenti"? Uno script o un indicatore sarà in grado di farlo?
A cosa serve la comunicazione tra agenti, illuminate i non addetti ai lavori se potete.
Ho già scritto uno script per testare le capacità di calcolo matematico, ma mancano alcune funzioni)