초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 82

 

안녕하세요,

mql5에 대한 질문 - stopLoss 및 takeProfit 트리거로 작업하는 방법을 알려주십시오.

주문을 보내고 수정하면 실행되고 사라집니다. 그가 sl, tp를 변경할 가능성이 더 이상 없습니다. - OrderSelect가 오류 주문을 찾을 수 없는 상태로 중단됩니다. 그런 다음 트리거가 실행되고 stopLoss / takeProfit을 자동으로 구현하는 새 주문이 생성됩니다.  

 
Forux : mql5에 대한 질문 - stopLoss 및 takeProfit 트리거로 작업하는 방법을 알려주실 수 있습니까?

주문을 보내고 수정하면 실행되고 사라집니다. 그가 sl, tp를 변경할 가능성이 더 이상 없습니다. - OrderSelect가 오류 주문을 찾을 수 없는 상태로 중단됩니다. 그런 다음 트리거가 실행되고 stopLoss / takeProfit을 자동으로 구현하는 새 주문이 생성됩니다.  

mql5 이데올로기는 주문이 트리거된 후 선택한 악기(심볼)에 대한 위치가 열립니다(변경, 폐쇄)입니다. 따라서 주문이 실행된 후(포지션 청산으로 이어지지 않은 경우) 해당 포지션으로 작업해야 합니다. 예를 들어 PositionSelect()를 사용합니다. stopLoss 및 takeProfit 수준을 변경하기 위해 포지션에는 자체 버전의 거래 요청 이 있습니다.
 
Yedelkin :
mql5 이데올로기는 주문이 트리거된 후 선택한 악기(심볼)에 대한 위치가 열립니다(변경, 폐쇄)입니다. 따라서 주문이 실행된 후(포지션 청산으로 이어지지 않은 경우) 해당 포지션으로 작업해야 합니다. 예를 들어 PositionSelect()를 사용합니다. stopLoss 및 takeProfit 수준을 변경하기 위해 포지션에는 자체 버전의 거래 요청 이 있습니다.

그러면 stopLoss가 포지션을 닫지 않는 이유는 무엇입니까?  

 2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 01 : 21    order performed sell 0.10 at 1.33260 [ # 3 sell 0.10 EURUSD at 1.33260 ]
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 01 : 21    deal performed [ # 3 sell 0.10 EURUSD at 1.33260 ]
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 01 : 21    deal # 3 sell 0.10 EURUSD at 1.33260 done (based on order # 3 )
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 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 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 02    Cant select order 2 error 4754
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 00    position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 ]
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 00     === add order === 2
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 00    order performed buy 0.10 at 1.33310 [ # 2 buy 0.10 EURUSD at 1.33310 ]
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 00    deal performed [ # 2 buy 0.10 EURUSD at 1.33310 ]
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 00    deal # 2 buy 0.10 EURUSD at 1.33310 done (based on order # 2 )
2013.01 . 16 10 : 33 : 50      Core 1    2010.05 . 03 00 : 00 : 00    exchange buy 0.10 EURUSD at 1.33310 ( 1.33290 / 1.33310 / 1.33290 )

또한, 그 거래량은 스톱 로스를 회수한 후에도 지속적으로 0.10랏과 동일합니다.

 

Forux : Тогда почему stopLoss не закрывает позицию?  Кроме того ее объем постоянно равен 0.10 лотам, да же после отыгрывания  stop loss  

그리고 SL이 발동된 후 포지션이 청산되지 않고 볼륨이 동일하게 유지된다는 것을 어떻게 결정합니까?
 
Yedelkin :
그리고 SL이 발동된 후 포지션이 청산되지 않고 볼륨이 동일하게 유지된다는 것을 어떻게 결정합니까?

위치GetDouble( POSITION_VOLUME ) ;  

 2013.01 . 16 11 : 38 : 36      Core 1   disconnected
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 30    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 28    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 26    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 24    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 22    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 21    order performed sell 0.10 at 1.33260 [ # 3 sell 0.10 EURUSD at 1.33260 ]
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 21    deal performed [ # 3 sell 0.10 EURUSD at 1.33260 ]
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 01 : 21    deal # 3 sell 0.10 EURUSD at 1.33260 done (based on order # 3 )
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 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 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 11    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 09    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 06    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 04    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 02    PositionGetDouble ( POSITION_VOLUME ) = 0.1
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 00    position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 ]
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 00     === add order === 2
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 00    order performed buy 0.10 at 1.33310 [ # 2 buy 0.10 EURUSD at 1.33310 ]
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 00    deal performed [ # 2 buy 0.10 EURUSD at 1.33310 ]
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 00    deal # 2 buy 0.10 EURUSD at 1.33310 done (based on order # 2 )
2013.01 . 16 11 : 38 : 34      Core 1    2010.05 . 03 00 : 00 : 00    exchange buy 0.10 EURUSD at 1.33310 ( 1.33290 / 1.33310 / 1.33290 )
2013.01 . 16 11 : 38 : 34      Core 1     magic= 12345
 
그리고 PositionGetDouble( POSITION_VOLUME ) 을 다시 사용하기 전에 Directory에 명시된 대로 위치 정보를 업데이트합니까?
 
Yedelkin :
그리고 PositionGetDouble( POSITION_VOLUME ) 을 다시 사용하기 전에 Directory에 명시된 대로 위치 정보를 업데이트합니까?

내가 의미하는 바를 올바르게 이해했다면 예, 다음을 수행합니다.  

 PositionSelect ( _Symbol ); // судя по справке обновляет кеш
Print ( "PositionGetDouble(POSITION_VOLUME) = " + PositionGetDouble ( POSITION_VOLUME ));
 
Forux : 내가 의미하는 바를 올바르게 이해했다면 예, 다음을 수행합니다.  
예, 나는 그것에 대해 이야기했습니다. 저것들. 10초 이내에 이러한 구성을 사용하면 여전히 Sl에 의해 마감된 위치의 0이 아닌 볼륨을 반환합니까? 이 경우 아직 이 문제에 대한 아이디어가 없습니다 :(
 

그리고 다음과 같이 시도하십시오.

if(PositionSelect(_Symbol)) 
   Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME));
else 
   Print("Сведения о позиции не обнаружены");
 
Yedelkin :

그리고 다음과 같이 시도하십시오.

정말 감사합니다 :)  

 2013.01 . 16 12 : 47 : 49      Core 1   disconnected
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 30    Сведения о позиции не обнаружены
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 28    Сведения о позиции не обнаружены
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 26    Сведения о позиции не обнаружены
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 24    Сведения о позиции не обнаружены
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 22    Сведения о позиции не обнаружены
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 21    order performed sell 0.10 at 1.33260 [ # 3 sell 0.10 EURUSD at 1.33260 ]
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 21    deal performed [ # 3 sell 0.10 EURUSD at 1.33260 ]
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 01 : 21    deal # 3 sell 0.10 EURUSD at 1.33260 done (based on order # 3 )
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 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 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 11    myPositionGetDouble( POSITION_VOLUME ) == 0.1
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 09    myPositionGetDouble( POSITION_VOLUME ) == 0.1
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 06    myPositionGetDouble( POSITION_VOLUME ) == 0.1
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 04    myPositionGetDouble( POSITION_VOLUME ) == 0.1
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 02    myPositionGetDouble( POSITION_VOLUME ) == 0.1
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 00    position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 ]
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 00     === add order === 2
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 00    order performed buy 0.10 at 1.33310 [ # 2 buy 0.10 EURUSD at 1.33310 ]
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 00    deal performed [ # 2 buy 0.10 EURUSD at 1.33310 ]
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 00    deal # 2 buy 0.10 EURUSD at 1.33310 done (based on order # 2 )
2013.01 . 16 12 : 47 : 45      Core 1    2010.05 . 03 00 : 00 : 00    exchange buy 0.10 EURUSD at 1.33310 ( 1.33290 / 1.33310 / 1.33290 )
2013.01 . 16 12 : 47 : 45      Core 1     magic= 12345 

 

사유: