Domanda su mql5 - come lavoro con i trigger stopLoss e takeProfit?
Mando un ordine, lo modifico, viene eseguito e scompare. Non sono in grado di cambiare sl o tp dopo perché OrderSelect non ha nessun ordine trovato. Poi viene attivato un trigger e viene creato un nuovo ordine che implementa automaticamente StopLoss / TakeProfit.
Forux: Domanda su mql5 - Come posso lavorare con i trigger stopLoss e takeProfit?
Mando l'ordine, lo modifico, viene eseguito e scompare. Allora non c'è possibilità di cambiare sl, tp - OrderSelect apparirà con un errore L'ordine non è stato trovato. Poi viene attivato un trigger e viene creato un nuovo ordine che esegue automaticamente uno StopLoss / TakeProfit.
L'ideologia di mql5 è che dopo l'attivazione dell'ordine, viene aperta (modificata, chiusa) una posizione per il simbolo selezionato. Quindi dopo l'attivazione dell'ordine (se non ha portato alla chiusura della posizione), dovremmo lavorare con la posizione. Per esempio, usando PositionSelect(). E per cambiare i livelli di stopLoss e takeProfit, la posizione ha la sua variante di richiesta di trade.
Yedelkin: L'ideologia mql5 consiste nell'aprire (cambiare, chiudere) una posizione per il simbolo selezionato dopo l'attivazione dell'ordine. Quindi dopo l'attivazione dell'ordine (se non ha portato alla chiusura della posizione) dovremmo lavorare con la posizione. Per esempio, usando PositionSelect(). E per cambiare i livelli di stopLoss e takeProfit, la posizione ha la sua variante di richiesta di trade.
Allora perché stopLoss non chiude la posizione?
2013.01.1610:33:50 Core 12010.05.0300:01:21 order performed sell 0.10 at 1.33260 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:01:21 deal performed [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:01:21 deal #3 sell 0.10 EURUSD at 1.33260 done (based on order #3)2013.01.1610:33:50 Core 12010.05.0300:01:21 stop loss triggered buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:00:02 Cant select order 2 error 47542013.01.1610:33:50 Core 12010.05.0300:00:00 position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360]
2013.01.1610:33:50 Core 12010.05.0300:00:00 === add order === 22013.01.1610:33:50 Core 12010.05.0300:00:00 order performed buy 0.10 at 1.33310 [#2 buy 0.10 EURUSD at 1.33310]2013.01.1610:33:50 Core 12010.05.0300:00:00 deal performed [#2 buy 0.10 EURUSD at 1.33310]2013.01.1610:33:50 Core 12010.05.0300:00:00 deal #2 buy 0.10 EURUSD at 1.33310 done (based on order #2)2013.01.1610:33:50 Core 12010.05.0300:00:00 exchange buy 0.10 EURUSD at 1.33310 (1.33290 / 1.33310 / 1.33290)
Inoltre, il suo volume è sempre uguale a 0,10 lotti, anche dopo aver raggiunto unostop loss.
E aggiornate le informazioni sulla posizione, come prescritto nel Manuale di Riferimento, prima di usare nuovamente PositionGetDouble(POSITION_VOLUME)?
Forux: Se ho capito bene cosa si intendeva allora sì, facendo quanto segue:
Sì, è di questo che stavo parlando. Cioè, usando una tale costruzione per 10 secondi si ottiene ancora un volume non nullo della posizione Sl-chiusa? In questo caso, non ne ho ancora idea :(
if(PositionSelect(_Symbol))
Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME));
else
Print("Сведения о позиции не обнаружены");
2013.01.1612:47:49 Core 1 disconnected
2013.01.1612:47:45 Core 12010.05.0300:01:30 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:28 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:26 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:24 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:22 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:21 order performed sell 0.10 at 1.33260 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:01:21 deal performed [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:01:21 deal #3 sell 0.10 EURUSD at 1.33260 done (based on order #3)2013.01.1612:47:45 Core 12010.05.0300:01:21 stop loss triggered buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:00:11 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:09 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:06 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:04 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:02 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:00 position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360]
2013.01.1612:47:45 Core 12010.05.0300:00:00 === add order === 22013.01.1612:47:45 Core 12010.05.0300:00:00 order performed buy 0.10 at 1.33310 [#2 buy 0.10 EURUSD at 1.33310]2013.01.1612:47:45 Core 12010.05.0300:00:00 deal performed [#2 buy 0.10 EURUSD at 1.33310]2013.01.1612:47:45 Core 12010.05.0300:00:00 deal #2 buy 0.10 EURUSD at 1.33310 done (based on order #2)2013.01.1612:47:45 Core 12010.05.0300:00:00 exchange buy 0.10 EURUSD at 1.33310 (1.33290 / 1.33310 / 1.33290)
2013.01.1612:47:45 Core 1 magic=12345
Buon pomeriggio,
Domanda su mql5 - come lavoro con i trigger stopLoss e takeProfit?
Mando un ordine, lo modifico, viene eseguito e scompare. Non sono in grado di cambiare sl o tp dopo perché OrderSelect non ha nessun ordine trovato. Poi viene attivato un trigger e viene creato un nuovo ordine che implementa automaticamente StopLoss / TakeProfit.
Mando l'ordine, lo modifico, viene eseguito e scompare. Allora non c'è possibilità di cambiare sl, tp - OrderSelect apparirà con un errore L'ordine non è stato trovato. Poi viene attivato un trigger e viene creato un nuovo ordine che esegue automaticamente uno StopLoss / TakeProfit.
L'ideologia mql5 consiste nell'aprire (cambiare, chiudere) una posizione per il simbolo selezionato dopo l'attivazione dell'ordine. Quindi dopo l'attivazione dell'ordine (se non ha portato alla chiusura della posizione) dovremmo lavorare con la posizione. Per esempio, usando PositionSelect(). E per cambiare i livelli di stopLoss e takeProfit, la posizione ha la sua variante di richiesta di trade.
Allora perché stopLoss non chiude la posizione?
Inoltre, il suo volume è sempre uguale a 0,10 lotti, anche dopo aver raggiunto unostop loss.
Forux: Тогда почему stopLoss не закрывает позицию? Кроме того ее объем постоянно равен 0.10 лотам, да же после отыгрывания stop loss
E come si fa a determinare che la posizione non sia chiusa dopo l'attivazione dello SL e che il suo volume rimanga lo stesso?
PositionGetDouble(POSITION_VOLUME);
E aggiornate le informazioni sulla posizione come prescritto nel manuale prima di usare nuovamente PositionGetDouble(POSITION_VOLUME)?
Se ho capito bene cosa si intendeva allora sì, facendo quanto segue
Prova questo:
if(PositionSelect(_Symbol)) Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME)); else Print("Сведения о позиции не обнаружены");Prova così:
Grazie mille :)