학습 논리 - 페이지 10 1...3456789101112131415 새 코멘트 Sceptic Philozoff 2010.06.28 17:05 #91 매개변수가 없는 경우 다음과 같을 수 있습니다. bool IsActiveType() { int type = OrderType(); return (type == OP_BUY || type == OP_SELL); } bool IsAnySellType() { int type = OrderType(); return (type == OP_SELL || type == OP_SELLLIMIT || type == OP_SELLSTOP); } { if (IsActiveType()) { //... } if (IsAnySellType()) { //... } } Prival 2010.06.28 17:11 #92 //+----------------------------------------------------------------------------+ //| Возвращает количество позиций. | //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfPositions(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), kp=0; if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) kp++; } } } } } return(kp); } [삭제] 2010.06.28 17:24 #93 Mathemat : 매개변수가 없는 경우 다음과 같을 수 있습니다. bool IsActiveType( int type = - 1 ) { if (type < 0 ) type = OrderType(); return (type == OP_BUY || type == OP_SELL); } Sceptic Philozoff 2010.06.28 17:29 #94 따라서 이것은 매개변수를 사용하는 것이지만 생략할 수 있습니다. [삭제] 2010.06.28 17:34 #95 호출에서 매개변수를 제거하려고 했습니다. 그리고 종교는 내가 기능 설명에서 제거하는 것을 허용하지 않습니다. [삭제] 2010.06.28 17:44 #96 글쎄, 그것은 주문 속성 기능의 기존 명명 시스템으로의 통합입니다: bool OrderIsActiveType(int type = -1) { if (type < 0) type = OrderType(); return (type == OP_BUY || type == OP_SELL); } if (OrderIsActiveType()) { //... } if (OrderIsAnySellType()) { //... } TheXpert 2010.06.28 17:57 #97 그것은 분명하지 않으므로 나에 관해서는 구르지 않습니다. 예, 어떻게 든 본질적으로 동일하지만 매개 변수가 더 명확하면 일반적으로 침묵, IMHO가 필요하지 않습니다. _______ 우리는 이미 깨끗한 일을 하고 있습니다. 변경, 토론 등을 위해 실제 코드를 제공합니다. [삭제] 2010.06.28 18:08 #98 다음은 코드 더미에서 얻은 것입니다. bool SafelyCloseOrder( int orderticket, string operation = "" ) { bool closed = false; LastError = 0 ; string ordercomment = "" ; for ( int attempt = 0 ; attempt <= 10 && !closed; attempt++) if ( OrderSelect (orderticket, SELECT_BY_TICKET, MODE_TRADES)) if (WaitForConnection( 6 , operation)) { ordercomment = OrderComment(); if (OrderType() == OP_BUY) closed = OrderClose(orderticket, OrderLots(), NormalizeDouble (MarketInfo(OrderSymbol(), MODE_BID), MarketInfo(OrderSymbol(), MODE_DIGITS)), Set_slippage, Blue ); else closed = OrderClose(orderticket, OrderLots(), NormalizeDouble (MarketInfo(OrderSymbol(), MODE_ASK), MarketInfo(OrderSymbol(), MODE_DIGITS)), Set_slippage, Red ); LastError = LastError(); if (LastError != 0 ) Print (WindowExpertName() + " " + operation + " " + ErrorDescription(LastError)); if (!closed) { Sleep ( 3000 + attempt * 1000 ); RefreshRates(); } } if (closed) { Alert (WindowExpertName() + " " + operation + " Ордер " + orderticket + " " + ordercomment + " закрыт!" ); PlaySound ( "Case.wav" ); Sleep ( 555 ); } else { Alert (WindowExpertName() + " " + operation + " Не закрывается ордер " + orderticket + " " + ordercomment + "!" ); PlaySound ( "NT_Ball_BAMMM!.WAV" ); Sleep ( 555 ); } return (closed); } Evgeniy Logunov 2010.06.28 18:11 #99 이 옵션은 어떻습니까? // основные битовые маски #define ORD_SELL 1 #define ORD_BUY 2 #define ORD_MARKET 4 #define ORD_LIMIT 8 #define ORD_STOP 16 #define ORD_INVALID 32 // комбинированные битовые маски #define ORD_MARKET_SELL 5 // ORD_SELL | ORD_MARKET #define ORD_MARKET_BUY 6 // ORD_BUY | ORD_MARKET #define ORD_LIMIT_SELL 9 // ORD_SELL | ORD_LIMIT #define ORD_LIMIT_BUY 10 // ORD_BUY | ORD_LIMIT #define ORD_STOP_SELL 17 // ORD_SELL | ORD_STOP #define ORD_STOP_BUY 18 // ORD_BUY | ORD_STOP #define ORD_PENDING 24 // ORD_STOP | ORD_LIMIT // получение битовой маски для текущего ордера int OrderTypeBitmask() { int orderType = OrderType(); int bitmask = ORD_INVALID ; switch (orderType) { case OP_SELL: bitmask = ORD_MARKET_SELL; break ; case OP_BUY: bitmask = ORD_MARKET_BUY; break ; case OP_SELLLIMIT: bitmask = ORD_LIMIT_SELL; break ; case OP_BUYLIMIT: bitmask = ORD_LIMIT_BUY; break ; case OP_SELLSTOP: bitmask = ORD_STOP_SELL; break ; case OP_BUYSTOP: bitmask = ORD_STOP_BUY; break ; } return (bitmask); } // проверка по маске bool CheckMask( int value, int mask) { return ((value & mask) != 0 ); } // пример: for ( int i = OrdersTotal() - 1 ; i >= 0 ; i--) { // выбор ордера, отбрасывание по символу, magic'у и т.п. if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue ; if (OrderSymbol() != Symbol) continue ; ... // обработка ордера int ordType = OrderTypeBitmask(); bool removeOrder = false ; if ((signal == SIG_BUY) && CheckMask(ordType, ORD_SELL)) removeOrder = true ; else if ((signal == SIG_SELL) && CheckMask(ordType, ORD_BUY)) removeOrder = true ; if (!removeOrder) continue ; if (CheckMask(ordType, ORD_MARKET)) RemoveMarketOrder(); else if (CheckMask(ordType, ORD_PENDING)) RemovePendingOrder(); } keekkenen 2010.06.28 18:28 #100 Mathemat : 매개변수가 없는 경우 다음과 같을 수 있습니다. bool IsActiveType() { int type = OrderType(); return (type == OP_BUY || type == OP_SELL); } 이것은 orderselect가 false를 반환할 수 있고 IsActiveType()이 0을 반환한다는 사실 때문에 사용하기에 올바르지 않습니다. OP_BUY, 틀렸어.. 1...3456789101112131415 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
매개변수가 없는 경우 다음과 같을 수 있습니다.
매개변수가 없는 경우 다음과 같을 수 있습니다.
글쎄, 그것은 주문 속성 기능의 기존 명명 시스템으로의 통합입니다:
그것은 분명하지 않으므로 나에 관해서는 구르지 않습니다.
예, 어떻게 든 본질적으로 동일하지만 매개 변수가 더 명확하면 일반적으로 침묵, IMHO가 필요하지 않습니다.
_______
우리는 이미 깨끗한 일을 하고 있습니다. 변경, 토론 등을 위해 실제 코드를 제공합니다.다음은 코드 더미에서 얻은 것입니다.
이 옵션은 어떻습니까?
매개변수가 없는 경우 다음과 같을 수 있습니다.