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

 
xant :

또 다른 이론적인 질문입니다.

Expert Advisor에서 선언된 변수의 값은 0입니다. EA가 일주일 동안 작동하고 변수가 값을 변경했다고 가정하고 이제 EA 코드를 변경해야 합니다. 나는 변경하고, 다시 컴파일하고, 거래를 시작합니다. 질문은 다음과 같습니다. 전역 변수에는 어떤 값이 있습니까? 0 또는 컴파일 이전에 있던 것?


함수를 사용할 때 컴파일 전의 함수입니다. 값을 변경하려면 터미널의 서비스 탭으로 이동해야 합니다. 거기에서 전역 변수 탭으로 이동하여 수동으로 변수 값을 필요한 값으로 변경합니다(0)
 

리고니치

엄청난! 마침내 나는 내가 필요로 하는 것을 얻었다!

모두 감사합니다. 그리고 심지어 타라스까지! )))

 
질문 하나 더. 전역변수 값은 어느 폴더에 저장되나요? 터미널을 다른 컴퓨터로 전송한다고 말하면 매번 모든 것을 완전히 복사하지 않으려면 전역에서 파일을 전송해야 합니다. 다른 터미널이 값을 선택하도록 변수.
 

미스틱!!!

이것

-------------------------------------------------- --------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR 통화의 경우


인쇄(pp_sell);

-------------------------------------------------- ----------------------------------

마지막 SELL 거래의 이익이 10이므로 예상대로 -10을 인쇄합니다.

그러나 예를 들어 다음과 같이 PRINT AND 변수 사이에 변경되지 않는 일부 조건을 삽입하는 경우

-------------------------------------------------- --------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR 통화의 경우


if ( Hour()>=10 && Hour()<20)

{

if (Stoch_1>Stoch_2) return(0);

또 다른 {

if ( OrdersTotal()==0 )

{ 플레이사운드("ok.wav");

if ( GetTypeLastClosePos()==1) 인쇄(pp_sell);

}

인쇄("___");

}

}

반환(0);

}

-------------------------------------------------- ----------------------------------

그러면 모든 것이 작동하지만 -9를 인쇄합니다 !!!!

비밀이 뭐야?

 
그리고 거래를 재개할 때 1pp의 일정한 차이로 결과가 반복됩니다. !!!! 즉, 마지막 거래의 이익이 얼마이든 상관없이 첫 번째 옵션이 두 번째 옵션보다 1 더 많이 인쇄됩니다!
 
lottamer :


그래, 그래서 지금 이 순간을 잘 알고 있어...

역사에서 마지막 거래의 티켓 요청과 함께 조각을 작성하십시오 ... 그리고 나는 그것에서 논리를 잡을 것입니다 ...



int fLastClosetPos()
{
int Tot=OrdersHistoryTotal(),티켓=-1; 날짜 시간 = 0;
if(tot>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if( 주문선택 (i,SELECT_BY_POS, MODE_HISTORY )==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>시간)
{
time=OrderCloseTime();Ticket=OrderTicket();
}
}
}
그렇지 않으면 계속하십시오.
}
}
반환(티켓);
}

 
lottamer :

미스틱!!!

이것

-------------------------------------------------- --------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR 통화의 경우


인쇄(pp_sell);

-------------------------------------------------- ----------------------------------

마지막 SELL 거래의 이익이 10이므로 예상대로 -10을 인쇄합니다.

그러나 예를 들어 다음과 같이 PRINT AND 변수 사이에 변경되지 않는 일부 조건을 삽입하는 경우

-------------------------------------------------- --------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR 통화의 경우


if ( Hour()>=10 && Hour()<20)

{

if (Stoch_1>Stoch_2) return(0);

또 다른 {

if (OrdersTotal()==0)

{ 플레이사운드("ok.wav");

if ( GetTypeLastClosePos()==1) 인쇄(pp_sell);

}

인쇄("___");

}

}

리턴(0);

}

-------------------------------------------------- ----------------------------------

그러면 모든 것이 작동하지만 -9를 인쇄합니다 !!!!

비밀이 뭐야?


정규화되지 않은 이중으로 작업하고 있습니다. 이러한 경우 계산상의 부정확성이 누적되어 결국 중요해질 수 있습니다. 왜냐하면 당신은 CONDITIONS NOT CHANGING ANYTHING을 삽입하고 있다고 생각하기 때문에 실제로 컴퓨터가 불필요한 계산을 수행하도록 강요하고 있고 당신의 조건은 그렇지 않습니다   아무것도 변경되지 않습니다.

그리고 PriceOpenLastClosePos() 및 PriceCloseLastPos() 함수가 동일한 위치에 대한 값을 반환한다고 확신하십니까?

 
rigonich :


int fLastClosetPos()

{
int Tot=OrdersHistoryTotal(),티켓=-1; 날짜 시간 = 0;
if(tot>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>시간)
{
time=OrderCloseTime();Ticket=OrderTicket();
}
}
}
그렇지 않으면 계속하십시오.
}
}
반환(티켓);
}


if(OrderCloseTime()>time)... 부터 시작하는 것이 무엇인지 명확하지 않습니다... 하지만 오...

그는 티켓을 인쇄하지만 마지막 티켓만 인쇄합니다. 그리고 끝에서 두 번째로 무엇을 할 것인가? 두 번째 티켓이 어떻게 나오는지 모르겠어?

먼저 Print LastClosetPoz()를 작성합니다.

2번째 (i)를 가집니까? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....??

LastClosetPoz(2) 인쇄 ?? 분명히 실수이지만 논리적 일 것입니다 :)))

나는 Ticket=OrderTicket(); 행에서 OrderTicket 대신 시도합니다. 닫힌 거래의 다른 매개 변수를 넣으십시오 (tei의 발을 닫는 가격 ) - 제공하지 않습니다. 인쇄 단위

 
rigonich :

정규화되지 않은 이중으로 작업하고 있습니다. 이러한 경우 계산상의 부정확성이 누적되어 결국 중요해질 수 있습니다. 왜냐하면 당신은 CONDITIONS NOT CHANGING ANYTHING을 삽입하고 있다고 생각하기 때문에 실제로 컴퓨터가 불필요한 계산을 수행하도록 강요하고 있고 당신의 조건은 그렇지 않습니다   아무것도 변경되지 않습니다.


컴퓨터가 4줄에 오차의 10%나 쌓이는게 뚱뚱하지 않나요??? :))))))))))) (많은 경우 - 10% 미만)

1) 마감된 주문이 고정되고 모든 매개변수가 "떠나지 않는" 경우 저장해야 할 항목은 무엇입니까?

2) 조건은 출력 매개변수의 계산과 아무 관련이 없습니다. 그들은 단지 장벽이었습니다 - 들여보내지 말고 ...

3) 그러면 결과가 한 고문의 작업 내에서 부동하지 않고 다른 고문으로 이동하는 이유는 무엇입니까?

 
lottamer :


if(OrderCloseTime()>time)... 부터 시작하는 것이 무엇인지 명확하지 않습니다... 하지만 오...

그는 티켓을 인쇄하지만 마지막 티켓만 인쇄합니다. 그리고 끝에서 두 번째로 무엇을 할 것인가? 두 번째 티켓이 따를 때 이게 어떻게 되는지 모르겠어?

2번째 (i)를 가집니까? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....??

1. 히스토리에서 마지막 거래의 티켓 요청과 함께 글을 써주세요.. --당신의 질문.

2. 끝에서 두 번째 티켓을 찾으려면 마지막 티켓의 티켓을 기억하고(예를 들어, 변수에서 A라고 가정해 봅시다.) 사이클을 다시 실행하고 이 순서를 "건너뛰기"해야 합니다. 라인

if(OrderSymbol()==Symbol()) to if(OrderSymbol()==Symbol()&& OrderTicket()!=A ), 또는 줄을 추가 if( Ticket()!=A)continue;

그리고 나는 이미 시장 주문과 보류 주문 이 함께 고려되고 후자는 종가가 없기 때문에 주문 인덱스가 계정에서 마감된 것과 항상 일치하지는 않을 것이라고 설명했습니다. 마지막으로 마감된 주문을 찾기 위해 모든 주문은 반복되며 마감 시간이 가장 긴 주문이 검색됩니다.