초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 518 1...511512513514515516517518519520521522523524525...1503 새 코멘트 Mikhail Tkachev 2016.02.20 18:16 #5171 Sergey Gritsay : 다음은 클래스를 사용하는 또 다른 옵션입니다. 검사 결과 정말 감사합니다, 세르게이! 내가 올바르게 이해했다면 : 첫 번째 경우 고정된 시간 프레임이 있는 고유한 기호에 대해 각각 정적 변수의 배열이 생성됩니다. 이 기호에는 다른 기간을 사용할 수 없습니다. 두 번째 - 각 기호+시간 프레임 조합에 대한 클래스입니다. Sergey Gritsay 2016.02.21 01:27 #5172 MikeZv : 정말 감사합니다, 세르게이! 내가 올바르게 이해했다면 : 첫 번째 경우 고정된 시간 프레임이 있는 고유한 기호에 대해 각각 정적 변수의 배열이 생성됩니다. 이 기호에는 다른 기간을 사용할 수 없습니다. 두 번째 - 각 기호+시간 프레임 조합에 대한 클래스입니다. 네 맞습니다만 조금만 생각해보면 어레이 버전에서 1차원 배열을 2차원 배열로 바꿀 수 있습니다. Vitaliy Medvedev 2016.02.22 16:53 #5173 질문입니다. 열고 닫는 조건 없이 주문을 열고 확인하고 닫는 템플릿 코드를 어디선가 본 사람이 있습니까? 조건은 제가 직접 작성해 보려고 하는데 주문 마감, 착오 오류... 특히 주문 마감 조회와 조회가 잘 안되네요. Yury Reshetov 2016.02.22 17:05 #5174 Vitaliy Medvedev : 질문입니다. 열고 닫는 조건 없이 주문을 열고 확인하고 닫는 템플릿 코드를 어디선가 본 사람이 있습니까? 조건은 제가 직접 작성해 보려고 하는데 주문 마감, 착오 오류... 특히 주문 마감 조회와 조회 가 잘 안되네요. 잘 되지 않는 것은 당연합니다. 결국, 마감 조건이 없으면 그러한 주문의 검색 및 확인은 다음과 같은 정신에 있어야합니다. 무언가를 찾고 무엇을 모르고 닫습니다. 먼저 마감할 주문을 선택하기 위한 조건을 결정하면 파악하기가 더 쉬울 것입니다. 결국 오해가 있으면 알려진 조건을 준수하는지 확인하는 것만 남아 있습니다. Vitaliy Medvedev 2016.02.22 19:56 #5175 Yury Reshetov : 잘 되지 않는 것은 당연합니다. 결국, 마감 조건이 없으면 그러한 주문의 검색 및 확인은 다음과 같은 정신에 있어야합니다. 무언가를 찾고 무엇을 모르고 닫습니다. 먼저 마감할 주문을 선택하기 위한 조건을 결정하면 파악하기가 더 쉬울 것입니다. 결국 오해가 있으면 알려진 조건을 준수하는지 확인하는 것만 남아 있습니다. 이것은 모두 분명합니다. 조건을 결정했지만 조건에 따라 주문 을 여는 것 (개방은 여전히 \u200b\u200b넌센스, 개방, 반으로 슬픔으로 밝혀졌습니다 ...), 그리고 더욱이 정확한 주문 마감... 드디어, BYADA! Artyom Trishkin 2016.02.22 21:54 #5176 Vitaliy Medvedev : 이것은 모두 분명합니다. 조건을 결정했지만 조건에 따라 주문 을 여는 것 자체가 (개방은 여전히 넌센스, 개방, 반으로 슬픔으로 밝혀졌습니다 ...), 그리고 더욱이 정확한 주문 마감... 드디어, BYADA! 어떤 주문이 마감되도록 선택되었는지 알고 나면 해당 티켓 번호로 마감합니다. Sergey Gritsay 2016.02.23 03:26 #5177 Vitaliy Medvedev : 이것은 모두 분명합니다. 조건을 결정했지만 조건에 따라 주문 을 여는 것 (개방은 여전히 \u200b\u200b넌센스, 개방, 반으로 슬픔으로 밝혀졌습니다 ...), 그리고 더욱이 정확한 주문 마감... 드디어, BYADA! 내 마음에서 찢는 것처럼 잡아 int Total_orders( int type) { int n= 0 ; int total= OrdersTotal (); for ( int i= 0 ; i<total; i++) { if (! OrderSelect (i, SELECT_BY_POS )) continue ; if ( OrderType ()!=type) continue ; if ( OrderMagicNumber ()!=Magic) continue ; if ( OrderSymbol ()!= _Symbol ) continue ; n++; } return (n); } //+------------------------------------------------------------------+ void OrderOpen( int type, double sl) { double price= 0.0 ; double lot; if (error> 1 ) return ; if (type== WRONG_VALUE ) return ; if (Risk!= 0.0 )lot=LotNormalize(LotVolume(Risk,sl)); else lot=LotNormalize(Lot); do { if (type== OP_BUY ) { RefreshRates (); price= NormalizeDouble ( Ask , _Digits ); if ( AccountFreeMarginCheck ( _Symbol ,type,lot)<= 0 ) return ; } if (type== OP_SELL ) { RefreshRates (); price= NormalizeDouble ( Bid , _Digits ); if ( AccountFreeMarginCheck ( _Symbol ,type,lot)<= 0 ) return ; } int Ticket= OrderSend ( _Symbol ,type,lot,price, 10000 , 0 , 0 ,CommentOrder,Magic); if (Ticket> 0 ) { error=Fun_Error( _Symbol , GetLastError ()); Alert ( __FUNCTION__ , ": open order " ,StrToType(type), " " , _Symbol , " :" ,Ticket); } else error=Fun_Error( _Symbol , GetLastError ()); } while (error== 1 && ! IsStopped ()); } //+------------------------------------------------------------------+ void Order_Close( int type) { double price= 0.0 ; int total= OrdersTotal (); if (error> 1 ) return ; for ( int i=total- 1 ; i>= 0 ; i--) { if (! OrderSelect (i, SELECT_BY_POS )) continue ; if ( OrderType ()!=type) continue ; if ( OrderMagicNumber ()!=Magic) continue ; if ( OrderSymbol ()!= _Symbol ) continue ; do { if ( OrderType ()== OP_BUY ) { RefreshRates (); price= NormalizeDouble ( Bid , _Digits ); } if ( OrderType ()== OP_SELL ) { RefreshRates (); price= NormalizeDouble ( Ask , _Digits ); } int res= OrderClose ( OrderTicket (), OrderLots (),price, 10000 ); if (res) { Alert ( __FUNCTION__ , ": close order " ,StrToType( OrderType ()), " " , OrderSymbol (), " :" , OrderTicket ()); error=Fun_Error( _Symbol , GetLastError ()); } else error=Fun_Error( _Symbol , GetLastError ()); } while (error== 1 && ! IsStopped ()); } } //+------------------------------------------------------------------+ void ModifySL( int Stop_Loss) { if (Stop_Loss<= 0 ) return ; double sl= 0.0 ; bool res; int total= OrdersTotal (); for ( int i= 0 ; i<total; i++) { if (! OrderSelect (i, SELECT_BY_POS )) continue ; if ( OrderMagicNumber ()!=Magic) continue ; if ( OrderSymbol ()!= _Symbol ) continue ; if ( OrderStopLoss ()!= 0 ) continue ; if ( OrderType ()== OP_BUY ) sl= NormalizeDouble ( OrderOpenPrice ()-(New_Stop(Stop_Loss)* _Point ), _Digits ); if ( OrderType ()== OP_SELL ) sl= NormalizeDouble ( OrderOpenPrice ()+(New_Stop(Stop_Loss)* _Point ), _Digits ); res= OrderModify ( OrderTicket (), OrderOpenPrice (),sl, OrderTakeProfit (), 0 ); if (!res) Print ( __FUNCTION__ , ": Error modifying StopLoss order " ,StrToType( OrderType ()), " № - " , GetLastError (), " " , OrderSymbol (), " " , OrderTicket ()); } } //+------------------------------------------------------------------+ void ModifyTP( int Take_Profit) { if (Take_Profit<= 0 ) return ; double tp= 0.0 ; bool res; int total= OrdersTotal (); for ( int i= 0 ; i<total; i++) { if (! OrderSelect (i, SELECT_BY_POS )) continue ; if ( OrderMagicNumber ()!=Magic) continue ; if ( OrderSymbol ()!= _Symbol ) continue ; if ( OrderTakeProfit ()!= 0 ) continue ; if ( OrderType ()== OP_BUY ) tp= NormalizeDouble ( OrderOpenPrice ()+(New_Stop(Take_Profit)* _Point ), _Digits ); if ( OrderType ()== OP_SELL ) tp= NormalizeDouble ( OrderOpenPrice () -(New_Stop(Take_Profit)* _Point ), _Digits ); res= OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),tp, 0 ); if (!res) Print ( __FUNCTION__ , ": Error modifying TakeProfit order " ,StrToType( OrderType ()), " № - " , GetLastError (), " " , OrderSymbol (), " " , OrderTicket ()); } } //+------------------------------------------------------------------+ double LotVolume( double procent, double sl) { double lot= 0.0 ; double tv= MarketInfo ( _Symbol , MODE_TICKVALUE ); double minlot= MarketInfo ( _Symbol , MODE_MINLOT ); double maxlot= MarketInfo ( _Symbol , MODE_MAXLOT ); if (sl!= 0 && tv!= 0 ) lot=( AccountFreeMargin ()*procent)/(sl*tv* 100.0 ); if (lot < minlot)lot = minlot; if (lot > maxlot)lot = maxlot; return (lot); } //+------------------------------------------------------------------+ double LotNormalize( double lot) { double minlot= MarketInfo ( _Symbol , MODE_MINLOT ); double maxlot= MarketInfo ( _Symbol , MODE_MAXLOT ); if (lot < minlot)lot = minlot; if (lot > maxlot)lot = maxlot; if (minlot== 0.001 ) return ( NormalizeDouble (lot, 3 )); if (minlot== 0.01 ) return ( NormalizeDouble (lot, 2 )); if (minlot== 0.1 ) return ( NormalizeDouble (lot, 1 )); return ( NormalizeDouble (lot, 0 )); } //+------------------------------------------------------------------+ string StrToType( int type) { if (type== OP_BUY ) return ( "Buy" ); if (type== OP_SELL ) return ( "Sell" ); return ( NULL ); } //+------------------------------------------------------------------+ int New_Stop( int Parametr) { int Min_Dist=( int ) MarketInfo ( _Symbol , MODE_STOPLEVEL ); if (Parametr<Min_Dist) { Parametr=Min_Dist* 2 +( int ) MarketInfo ( _Symbol , MODE_SPREAD ); Alert ( _Symbol , " Увеличина дистанция стоп-приказа." ); } return (Parametr); } //+------------------------------------------------------------------+ int Fun_Error( string symbol, int Error) { switch (Error) { case 0 : return ( 0 ); case 1 : Alert (symbol, " " ,Error, ":No error returned, but the result is unknown" ); return ( 2 ); case 2 : Alert (symbol, " " ,Error, ":Common error" ); return ( 2 ); case 3 : Alert (symbol, " " ,Error, ":Invalid trade parameters" ); return ( 2 ); case 4 : Alert (symbol, " " ,Error, ":Trade server is busy" ); Sleep ( 3000 ); return ( 1 ); case 5 : Alert (symbol, " " ,Error, ":Old version of the client terminal" ); return ( 2 ); case 6 : Alert (symbol, " " ,Error, ":No connection with trade server" ); Sleep ( 3000 ); return ( 1 ); case 7 : Alert (symbol, " " ,Error, ":Not enough rights" ); return ( 2 ); case 8 : Alert (symbol, " " ,Error, ":Too frequent requests" ); return ( 2 ); case 9 : Alert (symbol, " " ,Error, ":Malfunctional trade operation" ); return ( 2 ); case 64 : Alert (symbol, " " ,Error, ":Account disabled" ); return ( 2 ); case 65 : Alert (symbol, " " ,Error, ":Invalid account" ); return ( 2 ); case 128 : Alert (symbol, " " ,Error, ":Trade timeout" ); return ( 1 ); case 129 : Alert (symbol, " " ,Error, ":Invalid price" ); return ( 2 ); case 130 : Alert (symbol, " " ,Error, ":Invalid stops" ); return ( 2 ); case 131 : Alert (symbol, " " ,Error, ":Invalid trade volume" ); return ( 2 ); case 132 : Alert (symbol, " " ,Error, ":Market is closed" ); Sleep ( 10000 ); return ( 1 ); case 133 : Alert (symbol, " " ,Error, ":Trade is disabled" ); return ( 2 ); case 134 : Alert (symbol, " " ,Error, ":Not enough money" ); return ( 2 ); case 135 : Alert (symbol, " " ,Error, ":Price changed" ); return ( 1 ); case 136 : Alert (symbol, " " ,Error, ":Off quotes" ); Sleep ( 3000 ); return ( 1 ); case 137 : Alert (symbol, " " ,Error, ":Broker is busy" ); Sleep ( 3000 ); return ( 1 ); case 138 : Alert (symbol, " " ,Error, ":Requote" ); return ( 1 ); case 139 : Alert (symbol, " " ,Error, ":Order is locked" ); Sleep ( 10000 ); return ( 1 ); case 140 : Alert (symbol, " " ,Error, ":Buy orders only allowed" ); return ( 2 ); case 141 : Alert (symbol, " " ,Error, ":Too many requests" ); return ( 2 ); case 145 : Alert (symbol, " " ,Error, ":Modification denied because order is too close to market" ); Sleep ( 10000 ); return ( 1 ); case 146 : Alert (symbol, " " ,Error, ":Trade context is busy" ); Sleep ( 3000 ); return ( 1 ); case 147 : Alert (symbol, " " ,Error, ":Expirations are denied by broker" ); return ( 2 ); case 148 : Alert (symbol, " " ,Error, ":The amount of open and pending orders has reached the limit set by the broker" ); return ( 2 ); case 149 : Alert (symbol, " " ,Error, ":An attempt to open an order opposite to the existing one when hedging is disabled" ); return ( 2 ); case 150 : Alert (symbol, " " ,Error, ":An attempt to close an order contravening the FIFO rule" ); return ( 2 ); default : Alert (symbol, ":Error - № " ,Error); return ( 2 ); } return ( 0 ); } Vitaliy Medvedev 2016.02.23 06:31 #5178 Sergey Gritsay : 내 마음에서 찢는 것처럼 잡아 오 ... 그리고 젠장! 나야.. 별로 안했어..! Mdya ... 이제 아무 것도 제대로 작동하지 않는 이유를 이해합니다. 당신에게 거대한 인간, 감사합니다! [삭제] 2016.02.23 09:44 #5179 Sergey Gritsay : 내 마음에서 찢는 것처럼 잡아 왜 이러는지 알 수 있을까요? 정수 합계 = OrdersTotal (); Sergey Gritsay 2016.02.23 10:02 #5180 Vasyl Nosal : 왜 이러는지 알 수 있을까요? 정수 합계 = OrdersTotal (); 루프를 실행하는 동안 OrdersTotal ()의 값이 발생하기 때문입니다. 변경될 수 있으며 순서를 건너뛸 수 있습니다. 그렇지 않으면 주기의 본문에 버그가 있습니다. 1...511512513514515516517518519520521522523524525...1503 새 코멘트 사유: 취소 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
다음은 클래스를 사용하는 또 다른 옵션입니다.
검사 결과
첫 번째 경우 고정된 시간 프레임이 있는 고유한 기호에 대해 각각 정적 변수의 배열이 생성됩니다. 이 기호에는 다른 기간을 사용할 수 없습니다.
두 번째 - 각 기호+시간 프레임 조합에 대한 클래스입니다.
정말 감사합니다, 세르게이! 내가 올바르게 이해했다면 :
첫 번째 경우 고정된 시간 프레임이 있는 고유한 기호에 대해 각각 정적 변수의 배열이 생성됩니다. 이 기호에는 다른 기간을 사용할 수 없습니다.
두 번째 - 각 기호+시간 프레임 조합에 대한 클래스입니다.
질문입니다. 열고 닫는 조건 없이 주문을 열고 확인하고 닫는 템플릿 코드를 어디선가 본 사람이 있습니까? 조건은 제가 직접 작성해 보려고 하는데 주문 마감, 착오 오류... 특히 주문 마감 조회와 조회 가 잘 안되네요.
잘 되지 않는 것은 당연합니다. 결국, 마감 조건이 없으면 그러한 주문의 검색 및 확인은 다음과 같은 정신에 있어야합니다. 무언가를 찾고 무엇을 모르고 닫습니다.
먼저 마감할 주문을 선택하기 위한 조건을 결정하면 파악하기가 더 쉬울 것입니다. 결국 오해가 있으면 알려진 조건을 준수하는지 확인하는 것만 남아 있습니다.
잘 되지 않는 것은 당연합니다. 결국, 마감 조건이 없으면 그러한 주문의 검색 및 확인은 다음과 같은 정신에 있어야합니다. 무언가를 찾고 무엇을 모르고 닫습니다.
먼저 마감할 주문을 선택하기 위한 조건을 결정하면 파악하기가 더 쉬울 것입니다. 결국 오해가 있으면 알려진 조건을 준수하는지 확인하는 것만 남아 있습니다.
이것은 모두 분명합니다. 조건을 결정했지만 조건에 따라 주문 을 여는 것 (개방은 여전히 \u200b\u200b넌센스, 개방, 반으로 슬픔으로 밝혀졌습니다 ...),
그리고 더욱이 정확한 주문 마감... 드디어, BYADA!
이것은 모두 분명합니다. 조건을 결정했지만 조건에 따라 주문 을 여는 것 자체가 (개방은 여전히 넌센스, 개방, 반으로 슬픔으로 밝혀졌습니다 ...),
그리고 더욱이 정확한 주문 마감... 드디어, BYADA!
이것은 모두 분명합니다. 조건을 결정했지만 조건에 따라 주문 을 여는 것 (개방은 여전히 \u200b\u200b넌센스, 개방, 반으로 슬픔으로 밝혀졌습니다 ...),
그리고 더욱이 정확한 주문 마감... 드디어, BYADA!
내 마음에서 찢는 것처럼 잡아
내 마음에서 찢는 것처럼 잡아
오 ... 그리고 젠장! 나야.. 별로 안했어..! Mdya ... 이제 아무 것도 제대로 작동하지 않는 이유를 이해합니다.
당신에게 거대한 인간, 감사합니다!
내 마음에서 찢는 것처럼 잡아
왜 이러는지 알 수 있을까요?
정수 합계 = OrdersTotal ();
왜 이러는지 알 수 있을까요?
정수 합계 = OrdersTotal ();