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

 
artmedia70 :
그리고 이 함수에서 마지막으로 닫힌 함수의 Stoploss를 어디에서 읽습니까? 거기에는 아무것도 없습니다.

여기. 직접 지적했습니다.
 OrderSelect ( 1 ,SELECT_BY_POS,MODE_HISTORY);
      take=OrderTakeProfit();
       ts=take;
 
borilunad :
모두 자! 아침은 더 현명하다! 나에게는 벌써 새벽 1시! 잘 자! 그리고 Artyom은 이미 늦잠을 잤습니다!

예, 이미 밤에 생각하기 시작했기 때문에 나는 5 일 동안 흐름을하고 있습니다. 안녕히 주무세요.
 
주식회사! 로그에 오류 130이 표시됩니다. 잘못된 중지입니까? 그러나 새로운 손절매는 1.3282입니다. 손절매는 현재 1.3275(주문 개시 가격 )이고 현재 호가는 1.3297입니다. 실수는 어디에 있습니까?
 

안녕하세요. 사전 정의된 변수 "Point"에서 전략 테스터 로그의 끝에 0이 정의되지 않은 이유는 무엇입니까?

Пример:

static double lBUY;

lBUY=100*Point; //Так-же можно написать 10,20,180 или 520.

if(lBUY==0.01)

{

Alert("НУЛИ НЕ ПИШУТСЯ В КОНЦЕ Point ",lBUY);

}

 
artmedia70 :
저는 시베리아 사람입니다. 크라스노야르스크 근처.


SibirYAK, 거의 zamlYAK))
 
webip :

예, 이미 밤에 생각하기 시작했기 때문에 나는 5 일 동안 흐름을하고 있습니다.

밤에 생각하지 않는 사람을 말하는 것이 더 쉽습니다. 반대의 경우도 마찬가지입니다. 저도 같은 상황입니다. 또한 밤에는 아무도 방해하지 않습니다. 그건 그렇고, 나는 뇌가 밤에 더 잘 생각한다는 것을 읽은 적이 있습니다. 이것은 과학자들이 배운 것입니다 ...
 
semiromid :

안녕하세요. 사전 정의된 변수 "Point"에서 전략 테스터 로그의 끝에 0이 정의되지 않은 이유는 무엇입니까?

Пример:

static double lBUY;

lBUY=100*Point; //Так-же можно написать 10,20,180 или 520.

if(lBUY==0.01)

{

Alert("НУЛИ НЕ ПИШУТСЯ В КОНЦЕ Point ",lBUY);

}



그리고 Alert는 실제로 무엇을 제공합니까?
 
artmedia70 :
DoubleToStr(숫자, 비트 깊이)


정말 감사합니다! 나는 양초의 특성(더 많이, 더 적게 등)을 비교하기 위해 이것을 필요로 했습니다. 나사를 조이고 작동합니다. 나는 그가 어떻게 문자열 데이터 유형을 그런 식으로 비교하는지 이해할 수 없습니까? 또는 double to string은 숫자를 문자열로 변환하지 않습니까? :-디


추신. 인디케이터에서는 안되고 스크립트에서만... 문제는 차트의 프로그램에서는 막대 특성이 소수점 5자리로 전송되는데 High[i]를 호출하면 소수점 4자리만 나온다는 것입니다. 밖으로.

쓰기:

Alert("doubletostr 높음 = ", DoubleToStr(높음[1],5));
if (DoubleToStr(High[2],5)>(DoubleToStr(High[3],5)))
{
Alert("더 보기");
}
if (DoubleToStr(High[2],5)<(DoubleToStr(High[3],5)))
{
Alert("덜");

}

쟁기는 결과를 다섯 자리로 쓰고 더 많거나 적게 계산합니다. 문제는 지표의 문자열 배열이 차트에 표시되지 않는다는 것입니다. 그래서...

...쓰기:

Alert("Normalizedouble 높음 = ", NormalizeDouble(High[1],5));

쟁기질하지 않음 - 결과 - > 1.1234

나는 개발자를 이해하지 못합니다. 왜 그렇게 복잡하게 만드나요? 그래프에 너무 많은 문자가 표시되면 호출된 함수의 5개 문자를 긁지 않는 이유는 무엇입니까? 간단한 탈출구가 있습니까?

 

저는 마지막 시장 위치가 이익으로 마감된 경우 True 를 반환하고 손실로 마감되지 않은 경우 False 를 반환해야 하는 함수를 작업 중입니다. 이 함수가 True 를 반환하면 모든 포지션이 닫힙니다(이연 및 시장 포지션 모두).

다음은 일어난 일입니다.

 //+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
bool isCloseByTakeLastOpenPos( int delta)
{
   datetime lastOrderCloseTime = 0 ,               // Время закрытия последнего открытого ордера
            lastOOTHist = - 1 ;                     // Время открытия последнего открытого ордера из истории
   
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderType() > 1 ) continue ;               // Все удалённые отложки нас не интересуют..
  
       if (lastOrderCloseTime < OrderCloseTime())   // Находим время закрытия..
      {
         lastOrderCloseTime = OrderCloseTime();   // ..последней закрытой позиции в истории
         int j = i;
      }
   }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
   {
       if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
       if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
       else
      {
         lastOOTHist = OrderOpenTime();
         Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
      }
   }
   else
   {
     // Comment("FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории");
       Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       return ( false );
   }
  
   for ( int h= OrdersTotal ()- 1 ; h>= 0 ; h--)
   {
       if ( OrderSelect (h, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderMagicNumber() != i_magic)   continue ;
         if (OrderSymbol() != Symbol ())       continue ;
         if (OrderType() > 1 )                 continue ;
         if (lastOOTHist < OrderOpenTime()) return ( false );   // Выбранная рыночная позиция открыта позже закрытой по тейку
      }
       else { Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать рыночный ордер" ); return ( false );}
   }
   
   return ( true );
}

Artyom 은 내가 잼이 있는 곳을 위에서 제안했습니다. 나는 나 자신을 위해 다시 썼다. 지금까지 최종 버전은 아니지만 .. 이미 꽤 명확합니다. 어드바이저를 실행한 후, 나는 나머지 포지션이 클로즈되지 않았기 때문에 클로즈되지 않았다는 것을 즉시 발견했습니다. 그 이유가 무엇인지 궁금해지기 시작했습니다. 함수에서 몇 곳을 주석 처리했고 이 블록에서 다음과 같은 사실을 깨달았습니다.

 if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
   {
       if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
       if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
       else
      {
         lastOOTHist = OrderOpenTime();
         Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
      }
   }
   else
   {
       Comment ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       return ( false );
   }

댓글은 항상 작동합니다.

 Comment ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );

나는 그것을 주석 처리하고 계속 진행했습니다. 이 주석은 다음과 같습니다.

 Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);

일반적으로 닫힌 마지막 위치 가 있는 경우에도 작동하지 않습니다. 무엇이 잘못되었을 수 있습니까?

내 생각은, 비록 내가 틀렸을 수도 있지만 ... 어쩌면 당신은이 블록이 필요합니다

 if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
   {
       if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
       if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
       else
      {
         lastOOTHist = OrderOpenTime();
         Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
      }
   }
   else
   {
     // Comment("FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории");
       Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       return ( false );
   }

for 루프도 넣어? 결국, 그렇지 않으면 누가 버스트가 어느 방향으로 있을지 알 수 있습니다. 결국 변수 j 는 위치의 일련 번호를 포함하며 어느 방향으로 정렬할지 명시적인 표시가 없습니다.

 
hoz :

저는 마지막 시장 위치가 이익으로 마감된 경우 True 를 반환하고 손실로 마감되지 않은 경우 False 를 반환해야 하는 함수를 작업 중입니다. 이 함수가 True 를 반환하면 모든 포지션이 닫힙니다(이연 및 시장 포지션 모두).

다음은 일어난 일입니다.

Artyom 은 내가 잼이 있는 곳을 위에서 제안했습니다. 나는 나 자신을 위해 다시 썼다. 지금까지 최종 버전은 아니지만 .. 이미 꽤 명확합니다. 어드바이저를 실행한 후, 나는 나머지 포지션이 클로즈되지 않았기 때문에 클로즈되지 않았다는 것을 즉시 발견했습니다. 그 이유가 무엇인지 궁금해지기 시작했습니다. 함수에서 몇 곳을 주석 처리했고 이 블록에서 다음과 같은 사실을 깨달았습니다.

댓글은 항상 작동합니다.

나는 그것을 주석 처리하고 계속 진행했습니다. 이 주석은 다음과 같습니다.

일반적으로 마지막 닫힌 위치가 있더라도 작동하지 않습니다. 무엇이 잘못되었을 수 있습니까?

내 생각은, 비록 내가 틀렸을 수도 있지만 ... 어쩌면 당신은이 블록이 필요합니다

for 루프도 넣어? 결국, 그렇지 않으면 누가 버스트가 어느 방향으로 있을지 알 수 있습니다. 결국 변수 j 는 위치의 일련 번호를 포함하며 어느 방향으로 정렬할지 명시적인 표시가 없습니다.

변수 j는 함수의 맨 처음에 음수 값으로 명시적으로 초기화되어야 합니다. 시도 해봐. 더 이상 아무것도 보지 않았습니다.