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

 
AlexeyVik :

예, 여전히 혼란이 있습니다. N이 datetime형이면 D' 19:00 '은 텍스트 형식입니다. 그것들을 비교할 수 있습니까? 아니요. 시간 비교의 경우 나는 씁니다.

D'19:00'은 리터럴 날짜/시간 상수입니다.
 

프로그래머 여러분, 코드로 과거 지표 판독값을 검색하는 방법을 러시아어로 설명해 주시겠습니까? 예를 들어, 매도할 때 제로 바에서 3 하이 ZigZaga 또는 8번째 상위 프랙탈 이상에서 손절매를 설정해야 합니다.

 
Petiyashaket :

프로그래머 여러분, 코드로 과거 지표 판독값을 검색하는 방법을 러시아어로 설명해 주시겠습니까? 예를 들어, 매도할 때 제로 바에서 3 하이 ZigZaga 또는 8번째 상위 프랙탈 이상에서 손절매를 설정해야 합니다.

막대가 0인 상태 에서 차트의 시작 부분 까지 순환합니다(int x=0). 루프에서 필요한 표시기를 호출합니다(예: 프랙탈). 값이 비어 있지 않으면 x에 1을 추가하고 x가 원하는 값에 도달하면 루프 반복을 기억하고 루프를 종료합니다. 반복 값은 이론적으로 원하는 프랙탈이 있는 막대의 수입니다. 이론적으로 M1에서 실행되는 주기 동안 새로운 막대가 하나 더 나타날 수 있기 때문에 포인터가 잘못된 막대에 있을 것입니다.)))
 
evillive :
막대가 0인 상태에서 차트의 시작 부분까지 순환합니다(int x=0). 루프에서 필요한 표시기를 호출합니다(예: 프랙탈). 값이 비어 있지 않으면 x에 1을 추가하고 x가 원하는 값에 도달하면 루프 반복을 기억하고 루프를 종료합니다. 반복 값은 이론적으로 원하는 프랙탈이 있는 막대의 수입니다. 이론적으로 M1에서 실행되는 주기 동안 새로운 막대가 하나 더 나타날 수 있기 때문에 포인터가 잘못된 막대에 있을 것입니다.)))
시간을 절약해야 합니다. 그리고 마지막 프랙탈이 생성된 시간을 저장하는 배열을 사용하는 것이 좋습니다. 불필요한 사이클의 실패로 인해 작업 속도가 감소합니다.
 
Petiyashaket :

프로그래머 여러분, 코드로 과거 지표 판독값을 검색하는 방법을 러시아어로 설명해 주시겠습니까? 예를 들어, 매도할 때 제로 바에서 3 하이 ZigZaga 또는 8번째 상위 프랙탈 이상에서 손절매를 설정해야 합니다.

"러시아어"와 "프로그래밍 언어"(코드로 설명을 원하는 경우)는 같은 것이 아닙니다.

알고리즘적으로 다음과 같은 경우:

1) "프랙탈 포인트"가 없는 경우 관심 있는 ZigZag가 반환하는 값을 결정합니다. EMPTY_VALUE 또는 0.0일 수 있습니다.

2) 루프에서 iCustom()을 통해 루프에서 확인된 바에 해당 버퍼의 인디케이터 값을 가져와 "빈 값"과의 차이를 확인하고 이러한 차이의 카운터를 유지합니다. 카운터가 귀하의 경우 세 번째와 같을 때 - 이 막대의 숫자(N)는 원하는 막대가 됩니다.

3) 높음[N]\낮음[N] - 원하는 수준이 됩니다.

표준 ZigZag High의 경우 다음과 같은 것을 찾고 있습니다.

 #define ZZ_NULL   0.0

     uint li_N = 0 , li_Bar = 1 ;
     double ld_ZZ = 0 .;
//----
     while (li_Bar < Bars - 1 )
    {
        ld_ZZ = iCustom ( _Symbol , _Period , "ZigZag" , /* внешние параметры индикатора */ , 1 , li_Bar);
         if (ld_ZZ != ZZ_NULL)
        {
            li_N++;
             if (li_N >= 3 ) break ;
        }
        li_Bar++;
    }
     double ld_Price = High[li_Bar];

그러나 그 전에 ZigZag 코드에서 표시되는 버퍼 수를 1에서 3으로 변경해야 합니다.

 #property indicator_buffers 3
 

답변 감사합니다. 다시 답변해 드리겠습니다. :) 이제 문제는 이것입니다.

http://clip2net.com/s/j7xvk9

왜 주문을 수정하지 않는지 이해할 수 없지만 멍청하게 새 예금을 엽니 다.

 
Petiyashaket :

답변 감사합니다. 다시 답변해 드리겠습니다. :) 이제 문제는 이것입니다.

http://clip2net.com/s/j7xvk9

왜 주문을 수정하지 않는지 이해할 수 없지만 멍청하게 새 예금을 엽니 다.

 
evillive : 고마워 :)
   double Up= iFractals ( Symbol (), 0 ,MODE_UPPER, 3 );           //верхний фрактал
   double Down= iFractals ( Symbol (), 0 ,MODE_LOWER, 3 );         //нижний фрактал
//----
   if (Up> 0 &&Down== 0 &&Volume[ 0 ]< 2 ) //если верхний есть а нижнего нет то:
    {
     if ((High[ 3 ]+ 5 * Point -Ask)/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL)) //если цена позволяет выставить отложенный ордер то:
     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {
         for ( int pos= 0 ;pos< OrdersTotal ();pos++) //     скопировал эту строчку хз откуда ибо не понимаю грёбаный счетчик :) тут видимо и косяк
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES); // ищем текущие ордера
         if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_BUYSTOP) // и если все условия совпадают то:
          {
          OrderModify(OrderTicket(),Up+ 5 * Point ,Up-sl,Up+tp, 0 ,CLR_NONE); //переносим байстоп на новый верхний фрактал
          }


 
Petiyashaket :
보여주셔서 감사합니다 :)
수정할 때 로그에 있는 내용에 대해 불평합니까? 제한이 없기 때문에 "멍청하게 새로운 지연을 엽니 다. 그러나 OrderSend 가 있습니다.
 
Petiyashaket :

1) 모든 전략은 동시에 열린 주문의 수로 결정되어야 합니다. 따라서 다음 주문을 열기 전에 이미 몇 개의 주문이 열려 있는지 확인해야 합니다.

2) 하나의 막대는 각각 UPPER 및 LOWER 프랙탈을 가질 수 없습니다.

     if (Up > 0 && Down == 0 )

프로그래머 바보의 범주에 속합니다.

3) 버퍼 인디케이터 의 값을 반환 하기 위한 조건을 작성하기 전에 "비어 있는" 값이 정확히 무엇인지 알아야 합니까? 0인지 확인하셨나요?

4) 건설

     if (Volume[ 0 ] > 2 )

(대부분의 경우) 작동하지만 개발자의 "자유로운 발명"이며 거래자의 작업에 정보가 없기 때문에 부자연 스럽습니다. 대안은 새 막대를 추적하는 것입니다.

5) 다음과 같이 기본부터 시작해야 합니다.

     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {

당신이 쓰는 것을 전혀 이해하지 못한다고 말합니다.

이해하는 가장 좋은 방법은 다른 사람의 코드를 연구하고 자신의 목적에 맞게 수정하는 것입니다. 행운을 빕니다.

사유: