[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 112

[삭제]  

좋은 저녁이에요!

간단한 질문이 있습니다.

어떤 이유로 Expert Advisor는 초기화 후 start()로 이동할 수 없습니다. ?

누군가가 그러한 문제에 직면했을 수 있습니까?

init()에서; 종료 반환(0); .

답변에 미리 감사드립니다!

 
그리고 그가 "스타트에 가지 않았다"는 것을 어떻게 알았습니까?
 
BBSL :

좋은 저녁이에요!

간단한 질문이 있습니다.

어떤 이유로 Expert Advisor는 초기화 후 start()로 이동할 수 없습니다. ?

누군가가 그러한 문제에 직면했을 수 있습니까?

init()에서; 종료 반환(0); .

답변에 미리 감사드립니다!

따옴표 없음 - 시작 없음. 시작+전문가의 허락을 받으려면 틱이 필요합니다.
[Deleted]  

안녕하세요 여러분!

그런 문제가 있습니다.

집에 있는 컴퓨터에서 그래프를 표시합니다. 다른 컴퓨터로 전송하는 방법 - 어떤 파일을 덮어써야 합니까?

출력 방식은 MT4 폴더 전체를 다시 작성한 후 다른 컴퓨터에 새 이름으로 쓰는 것인데, 복잡해서 맞지 않습니다. 여기서 흥미로운 점은 폴더를 이전 이름으로 다른 컴퓨터에 남겨두면 그래프에 새로운 것이 없다는 것입니다...

누가 알겠습니까, 도와주세요!

 

BBSL , 나는 "start();"를 작성하곤 했습니다. - 같은 글을 쓰셨나요? 콜론이 필요하지 않습니다. 더 이상 중괄호가 없습니다

kiimar, Advisor가 닫혔습니까? 그렇다면 코드를 살펴봐야 합니다.

 
BBSL :

좋은 저녁이에요!

간단한 질문이 있습니다.

어떤 이유로 Expert Advisor는 초기화 후 start()로 이동할 수 없습니다. ?

누군가가 그러한 문제에 직면했을 수 있습니까?

init()에서; 종료 반환(0); .

답변에 미리 감사드립니다!

대답은 훨씬 더 간단합니다. 함수 본문 끝에 return (0) 문이 있다고 해서 이 문이 실행될 것이라는 의미는 아닙니다.
[삭제]  

주문이 TakeProfit 또는 StopLoss에 의해 실행되었는지 확인하는 방법은 무엇입니까? 답변 해주셔서 감사합니다!

 
BBSL :

어떤 이유로 Expert Advisor는 초기화 후 start()로 이동할 수 없습니다. ?

누군가가 그러한 문제에 직면했을 수 있습니까?

init()에 복잡한 계산이나 스와핑 히스토리가 있거나 터미널에 터미널을 멈추거나 ...

일반적으로 코드를 초기화할 시간이 있습니다. 정확히 얼마인지는 말씀드리지 않겠습니다만, 코드 초기화 중에 터미널이 코드를 중단하면 로그에 다음과 같은 오류가 발생합니다. " ... . 전문가의 시간 초과 ...."

터미널이 로그에 오류를 표시하지 않으면 초기화가 성공한 것이며 start() 함수 자체를 확인하기 쉽습니다. 첫 번째 줄에 작성 start() : Print ("new tick");

 
Sayod , 어떤 TF와 어떤 매개변수로 거래했습니까?
 
Jaguar1974 :

주문이 TakeProfit 또는 StopLoss에 의해 실행되었는지 확인하는 방법은 무엇입니까? 답변 해주셔서 감사합니다!


주문 내역을 확인하십시오. 종가가 SL 또는 TP와 같으면 ...을 의미합니다. 그러나 닫힌 주문의 이익을 확인하는 것이 더 쉬울 것이라고 생각합니다. > 0이 테이크를 의미하면 그렇지 않으면 ...

다음은 유사한 코드입니다.

 double history(){
int time = 0 ; double profit = 0 ; //обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера
for ( int i = OrdersHistoryTotal();i>= 0 ;i--){ // Перебираем все закрытые ордера
   if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)){ //если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом)
     if (OrderSymbol() == Symbol ()){ //если выбранный ордер был открыт по нашей валютной паре
       if (time<OrderCloseTime()){ //(сравниваем его с хранящимся в пероеменной time) 
        time=OrderCloseTime(); //если время закрытия ордера больше - ложим его в переменную
        profit=OrderProfit(); //и заодно запоминаем прибыль ордера
      }
    }
  }
}
//по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая.
//теперь мы можем выставлять условия в зависимости от результата процедуры
   
if (profit == 0 &&time == 0 ){ //действия если история чистая

}
if (profit >= 0 ){ //действия если последний ордер был прибыльным, или нулевым

}
if (profit <   0 ){ //действия если последний ордер был убыточным

}
return ( 0 );
}