포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 901

 
.roman. :

불필요한 계산을 제거했습니다(문제와 관련 없음). 특히 잼을 표시하기 위해 코드에 지문이 추가되었습니다. 주문 기호를 Expert Advisor가 열리는 기호와 비교하더라도 다음을 표시할 수 있습니다(예: 이 경우와 같이 osi 차트에서 유로에 대한 주문 데이터를 가져옴).

                         if (Ask>openPrice)
                           {
                               Print ( "OrderSymbol " ,OrderSymbol(), " OrderTicket " ,OrderTicket(), " OrderOpenPrice " ,OrderOpenPrice());
                           }
                     

이것은 포기할 수 없었습니다. 캥거루에게 물어보세요 2015년 유로 달러 의 시가보다 높을 수 없었습니다...

그리고 선택 후 별도의 if() 조건을 사용하여 선택한 순서에 대한 모든 검사를 수행하는 것이 좋습니다.

 
evillive :

이것은 포기할 수 없었습니다. 캥거루에게 물어보세요 2015년 유로달러의 시가보다 높을 수 없었습니다...

그리고 선택 후 별도의 if() 조건을 사용하여 선택한 순서에 대한 모든 검사를 수행하는 것이 좋습니다.

맞아요, 그럴 수 없었어요. 따라서 Bid<openPrice에서 1.11262에 유로에 대한 주문을 발행했습니다.

즉, if( OrderSelect ())를 통해 주문이 있는지 확인한 다음 중첩된 경우 이미 차트 기호와 주문 기호, 시가 등을 비교하는 것을 제안합니다.

 
.roman. :

맞아요, 그럴 수 없었어요. 따라서 Bid<openPrice에서 1.11262에 유로에 대한 주문을 발행했습니다.

즉, if(OrderSelect())를 통해 주문이 있는지 확인한 다음 중첩된 경우 이미 차트 기호와 주문 기호, 시가 등을 비교하는 것을 제안합니다.

예, 정확히 첫 번째 OrderSelect() 이고 다음 검사는 나머지 매개변수입니다.
 

탬버린으로 춤을 추는 것은 도움이 되지 않습니다.

주문 선택 과 심벌과 마법의 체크를 써도, 3개의 다른 줄로 나누는 것도 한 줄에 차이가 없다. 새 빌드의 변경 사항에 따라 조건을 단계적으로 확인합니다. 즉, 첫 번째 조건이 충족되지 않으면 다음 조건을 확인하지 않습니다. 3줄과 동일합니다. 첫 번째 조건이 충족되면 두 번째 조건을 확인합니다. 그리고 두 번째 조건도 만족해야 세 번째 조건에 대한 검사를 진행합니다.

문제는 코드의 원격 부분에 다른 순서를 선택할 수 있는 사용자 지정 함수에 대한 호출이 있다는 것입니다.

 

주문 작업에 대한 언급이 한 번만 더 있었다면 가장 먼저 눈에 띄었을 것입니다. 그러나 단일 사용자 정의 함수가 사용되지 않는 계산만 있습니다. 다른 쌍에서 주문을 선택하는 정확한 원인은 명확하지 않습니다. 따라서 나는 문서에 표시된 "소프트웨어 환경"에 어리둥절했고 이미 evillive 에서 제안한 대로 코드를 다시 작성했으며 탬버린과 함께 춤출 준비가 되어 있습니다. 다음 변태는 마케팅 정보를 통해 원하는 쌍의 입찰/매도와 강제 비교가 될 것입니다.


UPD.: 문제가 해결되었습니다. 실제로 자체 OrderSelect를 사용하는 중첩 함수가 발견되었습니다. 아이디어 주셔서 감사합니다, AlexeyVik.

 
안녕하세요! 문제를 해결하는 방법을 알려주십시오. 사이클에서 원하는 바 번호를 찾았지만 사이클에서 이전 바 번호도 필요합니다. 이것을 간결하게 구현하는 방법은 무엇입니까? 고맙습니다.
 for (i=limit; i>= 0 ; i--)
{
yesterday_weekday = TimeDayOfWeek(iTime( Symbol (), 0 ,i- 1 ))-TimeDayOfWeek(iTime( Symbol (), 0 ,i));
if (yesterday_weekday == 1 )
yesterday_time=iTime( Symbol (), 0 ,i);
yesterday_shift=iBarShift( Symbol (), 0 ,yesterday_time0); //последний бар 

}
 

다음은 전문가 조언자 입니다(업무용이 아닌 연습용)

그러나 어떤 이유로 두 매개변수가 IF 함수에 설정되어 있으면 히스토리에서 작동하지 않습니다. 두 매개변수가 차례로 설정되면 모든 것이 완벽하게 작동합니다. 여기에 코드가 있습니다. 열려있는 구매 주문, 모든 조건이 일치하더라도 다음 구매 주문은 열리지 않습니다.):

 //+------------------------------------------------------------------+
//|                                                        новый.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()

  {
  
double PC = iClose ( "EURUSD" , PERIOD_H1 , 0 );  

double MA = NormalizeDouble ( iMA ( "EURUSD" , PERIOD_H1 , 12 , 0 , MODE_LWMA , PRICE_MEDIAN , 0 ), 4 ); 


if (Ask == MA && PC-->MA )
OrderSend ( "EURUSD" ,OP_BUY, 1 ,Ask, 3 ,Ask- 30 * Point , Ask+ 30 * Point );

   
return ( 0 );





   
  }
//+------------------------------------------------------------------+
 
inuboh :

다음은 전문가 조언자입니다(업무용이 아닌 연습용)

그러나 어떤 이유로 두 매개변수가 IF 함수에 설정되어 있으면 히스토리에서 작동하지 않습니다. 두 매개변수가 차례로 설정되면 모든 것이 완벽하게 작동합니다. 여기에 코드가 있습니다. 열려있는 구매 주문, 모든 조건이 일치하더라도 다음 구매 주문은 열리지 않습니다.):

이것이 모든 문제의 직접적인 원인이 아니라 순전히 학문적 관심에서 온 것입니다. 왜 OnInit(), OnDeinit()가 동시에 시작()을 시작합니까 ???

그리고 질문에서 이러한 비교 Ask == MA 는 강력하게 권장되지 않으며 역사상 거의 실현되지 않습니다. 글쎄, 표현 PC-->MA 는 무엇을 의미합니까?

그리고 하나의 Bai에 대한 권한과 관련하여 우리는 모든 시장 위치를 살펴보고 원하는 것을 찾을 때 기호, 유형, 마법과 같은 지정된 기준과 비교하여 카운터를 하나 늘립니다. 그런 다음 필요한 경우 이 카운터를 봅니다.

그런 것:

   _ExpertOrdersB= 0 ;
   _ExpertOrdersS= 0 ;

   for ( int z= OrdersTotal ()- 1 ; z>= 0 ; z --)
     {
       if (! OrderSelect (z,SELECT_BY_POS))
        {
         Print ( ". OrderSelect(" + IntegerToString (z)+ ", SELECT_BY_POS ) FAIL!. Error #" + IntegerToString ( GetLastError ()));
        }
       if ((OrderMagicNumber()==magic) && OrderSymbol()== _Symbol )
        {
           switch (OrderType())
           {
             default : break ;
             case 0 :
               _ExpertOrdersB++;
               break ;
             case 1 :
               _ExpertOrdersS++;
               break ;
           }
        }
     }


if ( _ExpertOrdersB < 1) //если нет покупок, то пытаемся купить, при условии, что:
if (Ask == MA && PC-->MA )
OrderSend ( "EURUSD" ,OP_BUY, 1 ,Ask, 3 ,Ask- 30 * Point , Ask+ 30 * Point ); 
 
evillive :

이것이 모든 문제의 직접적인 원인이 아니라 순전히 학문적 관심에서 온 것입니다. 왜 OnInit(), OnDeinit()가 동시에 시작()을 시작합니까 ???

그리고 질문에서 이러한 비교 Ask == MA 는 강력하게 권장되지 않으며 역사상 거의 실현되지 않습니다. 글쎄, 표현 PC-->MA 는 무엇을 의미합니까?

그리고 하나의 Bai에 대한 권한과 관련하여 우리는 모든 시장 위치를 살펴보고 원하는 것을 찾을 때 기호, 유형, 마법과 같은 지정된 기준과 비교하여 카운터를 하나 늘립니다. 그런 다음 필요한 경우 이 카운터를 봅니다.

start()는 "습관"에서 어떻게 든 전달됨)

Ask == MA 가 드문 이벤트인 이유는 무엇입니까? 현재 매도호가가 이동평균선 에 거의 닿지 않습니까?

그리고 PC-->MA 저는 이것을 가지고 있습니다 - 이전 종가가 이동 평균선 위에 있는 경우(다른 방법을 찾지 못했습니다).

따라서 처음에는 Ask == MA만 켠 다음 IF 함수에서 PC-->MA만 켜면 모든 것이 잘 작동하지만 이들을 결합하면 작동하지 않습니다!

 
evillive :

이것이 모든 문제의 직접적인 원인이 아니라 순전히 학문적 관심에서 온 것입니다. 왜 OnInit(), OnDeinit()가 동시에 시작()을 시작합니까 ???

그리고 질문에서 이러한 비교 Ask == MA 는 강력하게 권장되지 않으며 역사상 거의 실현되지 않습니다. 글쎄, 표현 PC-->MA 는 무엇을 의미합니까?

그리고 하나의 Bai에 대한 권한과 관련하여 우리는 모든 시장 위치를 살펴보고 원하는 것을 찾을 때 기호, 유형, 마법과 같은 지정된 기준과 비교하여 카운터를 하나 늘립니다. 그런 다음 필요한 경우 이 카운터를 봅니다.

그런 것:

PC--> MA는 PC-1> MA와 동일하다는 것을 이해했습니다.