주문 닫기가 작동하지 않음 - 페이지 2 12345 새 코멘트 Daniel Petrovai 2014.02.25 11:01 #11 chuale : 안녕 모두, 이제 OrderTicket() 및 OrderLots()를 사용하지 않고 OrderClose에 티켓과 랏을 삽입하지만 주문도 닫지 않습니다. 도와주세요. 당신이 잘못한 몇 가지가 있습니다. 이 EA가 M1 시간 프레임에 JPY 쌍에서 작동하기를 원한다고 가정합니다. 새 바에만 주문하고 새 바에만 주문을 마감하시겠습니까, 아니면 새 바에 입장하고 조건이 충족되면 종료하시겠습니까? 제 생각은 다음과 같습니다. 먼저 OrdersTotal()을 사용하여 주문을 계산합니다. 그런 다음 변수를 계산하십시오. 시장에 주문이 있는 경우 마감해야 하는지 확인하십시오 . 시장에 주문이 없으면 진입 조건이 충족되는지 확인하십시오. 질문이 있으면 알려주세요. //+------------------------------------------------------------------+ //| chuale_test1.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.abc.com" #property version "1.00" #property strict extern double TakeProfit= 500 ; extern double Lots= 0.1 ; extern double StopLoss= 300 ; double bar1; double bar2; double bar3; int total,ticket; datetime previousTime; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { //--- //--- return ( 0 ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //--- return ( 0 ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { total= OrdersTotal (); /* counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; IndicatorCounted() is actually for indicators not EA */ bar1=( iClose ( Symbol (), PERIOD_M1 , 2 )- iClose ( Symbol (), PERIOD_M1 , 3 ))* 100 ; bar2=( iClose ( Symbol (), PERIOD_M1 , 1 )- iClose ( Symbol (), PERIOD_M1 , 2 ))* 100 ; bar3=( iClose ( Symbol (), PERIOD_M1 , 0 )- iClose ( Symbol (), PERIOD_M1 , 1 ))* 100 ; /* Comment("Bar1 = "+DoubleToString(bar1,Digits)+"\n"+ "Bar2 = "+DoubleToString(bar2,Digits)+"\n"+ "Bar3 = "+DoubleToString(bar3,Digits)+"\n" ); */ //Close any orders if conditions are met if (total> 0 ) { if (bar3<- 1 ) OrderClose (ticket, OrderLots (), Bid , 3 ,Green); if (bar3> 1 ) OrderClose (ticket, OrderLots (), Ask , 3 ,Red); } if ( Time [ 0 ]==previousTime) return ( 0 ); //EA will not go past this point unless it is a new bar previousTime= Time [ 0 ]; // If it was a new bar , it's old now but continue to the end // if no order open and new bar if (total< 1 ) { if (bar2> 1 ) // if condition met { //place buy order ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 , Ask -StopLoss* Point , Ask +TakeProfit* Point , "Chua EA" , 12345 , 0 ,Green); if (ticket< 0 ) Print ( "Error OP_BUY order failed. error : " +GetLastError()); // if returned ticket is -1 OrderSent failed return ( 0 ); } // or if conditions for sell met if (bar2<- 1 ) { ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 , Bid +StopLoss* Point , Bid +-TakeProfit* Point , "Chua EA" , 12345 , 0 ,Red); if (ticket< 0 ) Print ( "Error OP_SELL order failed. error : " +GetLastError()); return ( 0 ); //return to start } } return ( 0 ); } //+------------------------------------------------------------------+ 파일: chuale_test1.mq4 4 kb Lee Jia 2014.02.25 12:32 #12 GumRai : 티켓은 지역 변수이므로 다음 틱에는 동일한 값이 없습니다. Globalscope로 만들기 위해 함수 외부에 넣습니다. Tjipke de Vries 2014.02.25 12:33 #13 total= OrdersTotal (); ???? ..... 쓸모 없는 당신이 가지고있는 거래를 올바르게 확인하십시오 오른쪽 기호와 오른쪽 magicnumber 찾기 주문 루프를 사용하면 마감할 올바른 거래를 선택할 수 있습니다. OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 3 ,Green); . 당신의 방법으로 PC를 다시 시작하는 순간 티켓 값을 잃게 됩니다. if (total> 0 ) { if (bar3<- 1 ) OrderClose (ticket, OrderLots (), Bid , 3 ,Green); if (bar3> 1 ) OrderClose (ticket, OrderLots (), Ask , 3 ,Red); } 실패..... Keith Watford 2014.02.25 12:55 #14 chuale : 왜 내 게시물을 인용하고 댓글을 추가하지 않았습니까? Lee Jia 2014.02.25 13:06 #15 예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요? Keith Watford 2014.02.25 13:24 #16 chuale : 예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요? OrderTicket()을 사용하는 경우 먼저 OrderSelect()를 사용 하고 닫고 싶은 거래인지 확인하십시오. Daniel Petrovai 2014.02.25 21:04 #17 chuale : 예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요? 안녕하세요 Chuale님, 다음은 기호 및 매직 번호로 주문을 선택하고 주문을 마감하는 쉬운 방법입니다. //+------------------------------------------------------------------+ //| chuale_test1.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.abc.com" #property version "1.00" #property strict extern double TakeProfit= 500 ; extern double Lots= 0.1 ; extern double StopLoss= 300 ; extern int MagicNumber = 12345 ; extern int Slip = 3 ; double bar1; double bar2; double bar3; int myTrades,ticket; datetime previousTime; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { //--- //--- return ( 0 ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //--- return ( 0 ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { myTrades = CountTrades(); //Count trades function counts this EA trades only // bar1=( iClose ( Symbol (), PERIOD_M1 , 2 )- iClose ( Symbol (), PERIOD_M1 , 3 ))* 100 ; bar2=( iClose ( Symbol (), PERIOD_M1 , 1 )- iClose ( Symbol (), PERIOD_M1 , 2 ))* 100 ; bar3=( iClose ( Symbol (), PERIOD_M1 , 0 )- iClose ( Symbol (), PERIOD_M1 , 1 ))* 100 ; //Close any orders if conditions are met if (myTrades> 0 ) { if (bar3<- 1 ) CloseThisSymbolAll(); if (bar3> 1 ) CloseThisSymbolAll(); } if ( Time [ 0 ]==previousTime) return ( 0 ); //EA will not go past this point unless it is a new bar previousTime= Time [ 0 ]; // If it was a new bar , it's old now but continue to the end // if no order open and new bar if (myTrades< 1 ) { if (bar2> 1 ) // if condition met { //place buy order ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 , Ask -StopLoss* Point , Ask +TakeProfit* Point , "Chua EA" , MagicNumber , 0 ,Green); if (ticket< 0 ) Print ( "Error OP_BUY order failed. error : " +GetLastError()); // if returned ticket is -1 OrderSent failed return ( 0 ); } // or if conditions for sell met if (bar2<- 1 ) { ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 , Bid +StopLoss* Point , Bid +-TakeProfit* Point , "Chua EA" , MagicNumber , 0 ,Red); if (ticket< 0 ) Print ( "Error OP_SELL order failed. error : " +GetLastError()); return ( 0 ); //return to start } } return ( 0 ); } //======================================================================== int CountTrades() { int count= 0 ; int trade; for (trade= OrdersTotal ()- 1 ;trade>= 0 ;trade--) { OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ); if ( OrderSymbol ()!= Symbol () || OrderMagicNumber () != MagicNumber) continue ; if ( OrderSymbol ()== Symbol () && OrderMagicNumber () == MagicNumber) if ( OrderType ()== OP_SELL || OrderType ()== OP_BUY ) count++; } return (count); } //======================================================================== void CloseThisSymbolAll() { int trade; for (trade= OrdersTotal ();trade>= 0 ;trade--) { OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ); if ( OrderSymbol ()!= Symbol ()) continue ; if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) { if ( OrderType ()== OP_BUY ) OrderClose ( OrderTicket (), OrderLots (), Bid ,Slip,Blue); if ( OrderType ()== OP_SELL ) OrderClose ( OrderTicket (), OrderLots (), Ask ,Slip,Red); } //Sleep(1000); } } //======================================================================== Daniel Petrovai 2014.02.25 23:17 #18 chuale : 예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요? 안녕하세요, Chuale님. USDJPY에 대한 귀하의 아이디어를 가지고 놀고 있었고 약간의 변경 없이는 긍정적인 결과를 얻을 수 없었습니다. 다음은 M1 차트의 USDJPY에 대한 결과 샘플입니다. 다른 쌍에 사용하려고 했습니까? bar3 < -1 또는 bar3 > 1의 종료는 긍정적인 결과를 반환하지 않았습니다. Daniel Petrovai 2014.02.25 23:53 #19 deVries : ???? ..... 쓸모 없는 당신이 가지고있는 거래를 올바르게 확인하십시오 오른쪽 기호와 오른쪽 magicnumber 찾기 주문 루프를 사용하면 마감할 올바른 거래를 선택할 수 있습니다. . 당신의 방법으로 PC를 다시 시작하는 순간 티켓 값을 잃게 됩니다. 실패 ..... 그것이 주문을 마감하는 가장 좋은 방법이 아니라는 의미라면 동의하지만 그 사람이 OrderSelect를 사용하기 를 원하지 않고(또는 방법을 모르는 경우) 시장에 미결 주문을 남기지 않으면 작동합니다. 우리는 여기에서 서로를 도우려고 노력하지만 귀하의 답변은 조금 도움이 되지 않았습니다. 귀하는 그에게 주문 선택 기능을 사용하는 방법을 보여주지 않았고 귀하의 의견으로 인해 그의 EA가 더 잘 작동하지 않습니다. 다음에 도움을 주고 싶다면 올바른 방법으로 하고 올바른 코드를 입력하여 다른 사람들이 실제로 무언가를 배울 수 있도록 하십시오. Lee Jia 2014.02.26 01:36 #20 thrdel : 당신이 잘못한 몇 가지가 있습니다. 이 EA가 M1 시간 프레임에 JPY 쌍에서 작동하기를 원한다고 가정합니다. 새 바에만 주문하고 새 바에만 주문을 마감하시겠습니까, 아니면 새 바에 입장하고 조건이 충족되면 종료하시겠습니까? 제 생각은 다음과 같습니다. 먼저 OrdersTotal()을 사용하여 주문을 계산합니다. 그런 다음 변수를 계산하십시오. 시장에 주문이 있는 경우 마감해야 하는지 확인하십시오. 시장에 주문이 없으면 진입 조건이 충족되는지 확인하십시오. 질문이 있으면 알려주세요. 12345 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕 모두,
이제 OrderTicket() 및 OrderLots()를 사용하지 않고 OrderClose에 티켓과 랏을 삽입하지만 주문도 닫지 않습니다. 도와주세요.
당신이 잘못한 몇 가지가 있습니다. 이 EA가 M1 시간 프레임에 JPY 쌍에서 작동하기를 원한다고 가정합니다. 새 바에만 주문하고 새 바에만 주문을 마감하시겠습니까, 아니면 새 바에 입장하고 조건이 충족되면 종료하시겠습니까? 제 생각은 다음과 같습니다.
먼저 OrdersTotal()을 사용하여 주문을 계산합니다.
그런 다음 변수를 계산하십시오.
시장에 주문이 있는 경우 마감해야 하는지 확인하십시오 .
시장에 주문이 없으면 진입 조건이 충족되는지 확인하십시오.
질문이 있으면 알려주세요.
티켓은 지역 변수이므로 다음 틱에는 동일한 값이 없습니다.
Globalscope로 만들기 위해 함수 외부에 넣습니다.
total= OrdersTotal ();???? ..... 쓸모 없는
당신이 가지고있는 거래를 올바르게 확인하십시오
오른쪽 기호와 오른쪽 magicnumber 찾기
주문 루프를 사용하면 마감할 올바른 거래를 선택할 수 있습니다.
.
당신의 방법으로
PC를 다시 시작하는 순간 티켓 값을 잃게 됩니다.
실패.....
왜 내 게시물을 인용하고 댓글을 추가하지 않았습니까?
예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요?
OrderTicket()을 사용하는 경우 먼저 OrderSelect()를 사용 하고 닫고 싶은 거래인지 확인하십시오.
예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요?
안녕하세요 Chuale님,
다음은 기호 및 매직 번호로 주문을 선택하고 주문을 마감하는 쉬운 방법입니다.
예, 지금 닫을 수 있습니다. 감사합니다. 이제 티켓 번호가 틱에 따라 계속 변경된다는 것을 알고 있습니다. 그래서 열린 주문의 티켓 번호를 얻는 방법은 무엇입니까? OrderTicket()을 사용해야 합니다. 맞나요?
안녕하세요, Chuale님.
USDJPY에 대한 귀하의 아이디어를 가지고 놀고 있었고 약간의 변경 없이는 긍정적인 결과를 얻을 수 없었습니다. 다음은 M1 차트의 USDJPY에 대한 결과 샘플입니다.
다른 쌍에 사용하려고 했습니까?
bar3 < -1 또는 bar3 > 1의 종료는 긍정적인 결과를 반환하지 않았습니다.
???? ..... 쓸모 없는
당신이 가지고있는 거래를 올바르게 확인하십시오
오른쪽 기호와 오른쪽 magicnumber 찾기
주문 루프를 사용하면 마감할 올바른 거래를 선택할 수 있습니다.
.
당신의 방법으로
PC를 다시 시작하는 순간 티켓 값을 잃게 됩니다.
실패 .....
그것이 주문을 마감하는 가장 좋은 방법이 아니라는 의미라면 동의하지만 그 사람이 OrderSelect를 사용하기 를 원하지 않고(또는 방법을 모르는 경우) 시장에 미결 주문을 남기지 않으면 작동합니다.
우리는 여기에서 서로를 도우려고 노력하지만 귀하의 답변은 조금 도움이 되지 않았습니다. 귀하는 그에게 주문 선택 기능을 사용하는 방법을 보여주지 않았고 귀하의 의견으로 인해 그의 EA가 더 잘 작동하지 않습니다.
다음에 도움을 주고 싶다면 올바른 방법으로 하고 올바른 코드를 입력하여 다른 사람들이 실제로 무언가를 배울 수 있도록 하십시오.
당신이 잘못한 몇 가지가 있습니다. 이 EA가 M1 시간 프레임에 JPY 쌍에서 작동하기를 원한다고 가정합니다. 새 바에만 주문하고 새 바에만 주문을 마감하시겠습니까, 아니면 새 바에 입장하고 조건이 충족되면 종료하시겠습니까? 제 생각은 다음과 같습니다.
먼저 OrdersTotal()을 사용하여 주문을 계산합니다.
그런 다음 변수를 계산하십시오.
시장에 주문이 있는 경우 마감해야 하는지 확인하십시오.
시장에 주문이 없으면 진입 조건이 충족되는지 확인하십시오.
질문이 있으면 알려주세요.