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

 
mavar :

만세! 오늘 저는 MT5에서 첫 번째 Expert Advisor를 시작했습니다!

시장에 필요한 상황이 왔고 어드바이저가 구매 및 구매 방법을!!! 글쎄, 적어도 나는 그럭저럭 응답할 수 있었다. 코드에서 잘못된 점을 알려주세요. 내 생각에 그는 한 랏만 사서 즉시 중지하고 이익을 취해야 합니다. 그가 무언가를 구입하자마자 Bye_openedtrue 가 되어야 하고 정지에 도달할 때까지 후속 거래를 허용하지 않아야 합니다. 그럼에도 불구 하고 마지막 거래에서 중지하기 위해 마지막 거래의 가격 을 찾는 방법은 무엇입니까?


그런데 제가 뭔가 잘못한 것 같습니다. 제 실수를 지적해주세요.

틱은 해당 위치가 공개 목록에 들어가는 것보다 더 빨리 올 수 있습니다. 따라서 귀하의 수표

 if ( PositionSelect ( _Symbol )== true )

일정 시간 동안 작동하지 않으며 이 시간 동안 여러 입력이 전달됩니다. 주어진 코드 조각이 틱 핸들러에 있다고 가정합니다.

 
pako :

이 스크립트를 scripts 폴더에 놓고 편집기에서 이 스크립트를 열고 컴파일하십시오.

거래소가 열리면 이 스크립트를 차트로 드래그하세요.

도움을 주셔서 감사합니다. 스스로 알아 냈고 모든 것이 효과가있었습니다.
 
모두 좋은 저녁! 후행 코드를 공유하십시오. 고맙습니다.
 
PokrovMT5 :
모두 좋은 저녁! 후행 코드를 공유하십시오. 고맙습니다.

사이트 검색을 이용해주세요 - 어렵지 않습니다: https://www.mql5.com/en/search#!keyword=%D1%82%D1%80%D0%B0%D0%BB

 
barabashkakvn :

사이트 검색을 이용해주세요 - 어렵지 않습니다: https://www.mql5.com/en/search#!keyword=%D1%82%D1%80%D0%B0%D0%BB

고맙습니다!
 
Dima_S :

틱은 해당 위치가 공개 목록에 들어가는 것보다 더 빨리 올 수 있습니다. 따라서 귀하의 수표

일정 시간 동안 작동하지 않으며 이 시간 동안 여러 입력이 전달됩니다. 주어진 코드 조각이 틱 핸들러에 있다고 가정합니다.

Dima, 코드는 틱 처리 블록에 있습니다. 이 문제를 해결하는 방법은 무엇입니까? Quick에서 나는 같은 문제를 겪었습니다. 종종 로봇이 필요한 것보다 더 많이 구매합니다. 나는 이것을 두 번째 지연으로 돌렸고 단순히 조건이 충족될 때 변경되는 별도의 변수를 추가했지만 여기에도 문제가 있었습니다. 때때로 응용 프로그램이 교환에 의해 거부되었고 변수에 이미 "거래" 값이 있었고 로봇은 거래하지 않았습니다.


로봇이 필요한 조건에서 주어진 수의 로트를 구매하고 구매한 모든 로트를 판매할 때까지 지정된 수의 로트 이상을 구매하지 않도록 MQL5의 문제를 올바르게 해결하는 방법은 무엇입니까?

 

교환의 응답을 확실히 기다리기 위해 구매 후 일시 중지를 하시겠습니까?

수면 (1000); //충분한?

 

손절매는 움직이지 않는다

씁니다:

--주문 수정 -> 시가:1.3111 BID:1.3121 sl 1.3109
수정 주문 #3 구매 제한 1.00 at 1.31110 sl: 1.31080 tp: 0.00000 -> 1.31110, sl: 1.31090 tp: 0.00000 [잘못된 정류장]

--주문 수정 <- 결과: 10016

왜???

 void MoveStopLoss()
{
   ulong   ticket     = OrderGetTicket ( 0 );
   double price      = OrderGetDouble ( ORDER_PRICE_OPEN );
   double slossPrev  = OrderGetDouble ( ORDER_SL );
   double sloss      = SymbolInfoDouble (_SYMBOL, SYMBOL_ASK ) - SymbolInfoDouble (_SYMBOL, SYMBOL_POINT )* 15 ;

       if (slossPrev < sloss)
      {
         MqlTradeRequest request={ 0 };
         MqlTradeResult   result={ 0 };
         request.action       = TRADE_ACTION_MODIFY ;         // Тип выполняемого действия
         request.order        = ticket;                     // Тикет ордера (для модификации ордеров)
         request.price        = price;                       // Цена 
         request.sl           = sloss;                       // Уровень Stop Loss ордера
         request.tp           = 0 ;                           // Уровень Stop Loss ордера
         request.type_time    = ORDER_TIME_DAY ;             // Тип ордера по времени действия
   
         Print ( "--Modify order -> " , " price open:" , price, " BID :" , SymbolInfoDouble (_SYMBOL, SYMBOL_BID ), " sl " , request.sl);
         bool ret = OrderSend (request, result);
         Print ( "--Modify order <- результат:" , result.retcode);      
      }
}
 
mq35 :

손절매는 움직이지 않는다

씁니다:

--주문 수정 -> 시가:1.3111 BID:1.3121 sl 1.3109
수정 주문 #3 구매 제한 1.00 at 1.31110 sl: 1.31080 tp: 0.00000 -> 1.31110, sl: 1.31090 tp: 0.00000 [잘못된 정류장]

--주문 수정 <- 결과: 10016

왜???

SL을 정규화하십시오.
 

정규화는 도움이 되지 않습니다. 똑같은 헛소리는 나오지 않아

--주문 생성 -> ASK:1.3121 가격:1.3111 sl 1.3106

구매 한도 1.00 EURUSD at 1.3111 (1.3121) sl: 1.3106 (1.3118 / 1.3121 / 1.3118)
--주문 생성 <- 결과:10009

--주문 수정 -> 시가:1.3111 BID:1.3119 sl 1.3107
주문 수정됨 [#3 구매 한도 1.00 EURUSD at 1.3111]

--주문 수정 <- 결과: 10009

--주문 수정 -> 시가:1.3111 BID:1.312 sl 1.3108
주문 수정됨 [#3 구매 한도 1.00 EURUSD at 1.3111]

--주문 수정 <- 결과: 10009

--주문 수정 -> 시가:1.3111 BID:1.3121 sl 1.3109
수정 주문 #3 구매 제한 1.00 at 1.31110 sl: 1.31080 tp: 0.00000 -> 1.31110, sl: 1.31090 tp: 0.00000 [잘못된 정류장]
--주문 수정 <- 결과: 10016
사유: