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

 
안녕하세요! 명령(있는 경우), 0 또는 1 중 임의의 숫자 선택을 알려주세요. 미리 감사드립니다.
 
hoz :


음, 우선 필요한 곳에 대괄호를 삽입하는 데 익숙해지십시오. 그런 것:

일반적으로 고정된 시간 범위가 아니라 시간 범위가 있어야 합니다. 가치. 당신의 논리는 전혀 옳지 않습니다. 1시간이나 3시간이 아니라 1시간에서 3시간!!!
감사합니다. 오류를 이해했습니다.
 
stater :
안녕하세요! 명령(있는 경우), 0 또는 1 중 임의의 숫자 선택을 알려주세요. 미리 감사드립니다.
정수 x = MathRand() % 2;
 

Expert Advisor를 테스트할 때 코드 실행 오류가 드러났습니다.
- 루프 연산자 for(i=0;i<OrdersTotal();i++)의 실행은 다음 틱에 의해 중단됩니다(아래에 굵은 글꼴로 강조 표시됨).
- 구매 주문은 무작위로 선택되어 마감됩니다.

원인을 찾고 해결하는 방법을 알려주실 수 있나요?
프로그램 코드와 테스터 로그의 보고서가 제공됩니다.

프로그램 코드.

//+----------------------------------------------- --------------------+
//| 폴리곤1.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//|루프 문을 테스트합니다. |
//+----------------------------------------------- --------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#속성 링크 ""
//+----------------------------------------------- --------------------+
//|선언된 변수 |
//+----------------------------------------------- --------------------+
int Mn=357;//매직넘버
int i; //반복 카운터 표시자
이중 PriTP;//TP 시리즈
int 틱; // 틱 카운터
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----주문 설정
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Point,Ask+350*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,
Ask+250*포인트,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point,
Ask-750*포인트,NULL,Mn,0,CLR_NONE);//
//----
PriTP=입찰;//PriTP
Print("Kc0:"," OrdersTotal=",OrdersTotal());//메시지
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----틱 카운터
틱++;//틱
//----구매 주문 닫기
for(i=0;i<OrdersTotal();i++)//루프 초기화
{
Print("X1:"," Tick=",Tick," i=",i);//메시지
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//주문 i 선택
{
if(OrderSymbol()==Symbol())//기호
{
if(OrderMagicNumber()==Mn)//식별번호
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//현재 선택한 주문의 작업 유형
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//닫기 위치
}//닫기 if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//닫힘 if(OrderMagicNumber()==Mn)
}//닫힘 if(OrderSymbol()==Symbol()
}//닫힌 경우(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//(i=0;i<OrdersTotal();i++)에 대해 닫힘
//----
리턴(0);
}

테스터 로그의 항목입니다.

2013.03.01 12:12:57 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =4 i=0
2013.03.01 12:12:09 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: Tick=3 i=1
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #4 매수 2.50 EURUSD에서 1.25773 sl: 1.25616 tp: 1.25923 가격 1.2
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: =3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #2 매수 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.66023 at price81.2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =2 i=0
2013.03.01 12:11:21 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #5 매수 3.50 EURUSD에서 1.25773 sl: 1.25616 tp: 1.66923 가격 1.2
2013.03.01 12:11:21 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #3 매수 1.50 EURUSD에서 1.25773 sl: 1.25616 tp: 1.66923 가격 1.2
2013.03.01 12:11:21 2012.09.03 00:00 폴리곤1 EURUSD,M15: Кс1: 틱=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #1 매수 0.50 EURUSD에서 1.25773 sl: 1.25416 tp: 1.66123 가격 1.2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =1 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс0: OrdersTotal=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #7 매도 스톱 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #6 매수 제한 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #5 매수 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #4 매수 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #3 매수 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #2 매수 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #1 매수 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok
2013.03.01 12:11:21 폴리곤1 테스트 시작
2013.03.01 12:11:21 Polagon1 EURUSD,M15: 성공적으로 로드됨

감사합니다. 쉬르킨

 
Shurkin :

Expert Advisor를 테스트할 때 코드 실행 오류가 드러났습니다.
- 루프 연산자 for(i=0;i<OrdersTotal();i++)의 실행은 다음 틱에 의해 중단됩니다(아래에 굵은 글꼴로 강조 표시됨).
- 구매 주문은 무작위로 선택되어 마감됩니다.

감사합니다. 쉬르킨


1. init() 함수에서 주문을 열 수 없습니다.(테스터에서는 계속 작동하지만 데모에서는 작동하지 않습니다)

2. 주문을 마감할 때 처음부터 끝까지 계산해야 하며 그 반대의 경우도 마찬가지입니다.

 
Shurkin :

Expert Advisor를 테스트할 때 코드 실행 오류가 드러났습니다.
- 루프 연산자 for(i=0;i<OrdersTotal();i++)의 실행은 다음 틱에 의해 중단됩니다(아래에 굵은 글꼴로 강조 표시됨).
- 구매 주문은 무작위로 선택되어 마감됩니다.

원인을 찾고 해결하는 방법을 알려주실 수 있나요?
프로그램 코드와 테스터 로그의 보고서가 제공됩니다.

프로그램 코드.

//+----------------------------------------------- --------------------+
//| 폴리곤1.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//|루프 연산자를 테스트합니다. |
//+----------------------------------------------- --------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#속성 링크 ""
//+----------------------------------------------- --------------------+
//|선언된 변수 |
//+----------------------------------------------- --------------------+
int Mn=357;//매직넘버
int i; //반복 카운터 표시자
이중 PriTP;//TP 시리즈
int 틱; // 틱 카운터
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----주문 설정
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Point,Ask+350*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,
Ask+250*포인트,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point,
Ask-750*포인트,NULL,Mn,0,CLR_NONE);//
//----
PriTP=입찰;//PriTP
Print("Kc0:"," OrdersTotal=",OrdersTotal());//메시지
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----틱 카운터
틱++;//틱
//----구매 주문 닫기
for(i=0;i<OrdersTotal();i++)//루프 초기화
{
Print("X1:"," Tick=",Tick," i=",i);//메시지
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//주문 i 선택
{
if(OrderSymbol()==Symbol())//기호
{
if(OrderMagicNumber()==Mn)//식별번호
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//현재 선택한 주문의 작업 유형
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//닫기 위치
}//닫기 if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//닫힘 if(OrderMagicNumber()==Mn)
}//닫힘 if(OrderSymbol()==Symbol()
}//닫힌 경우(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//(i=0;i<OrdersTotal();i++)에 대해 닫힘
//----
리턴(0);
}

테스터 로그의 항목입니다.

2013.03.01 12:12:57 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =4 i=0
2013.03.01 12:12:09 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: Tick=3 i=1
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #4 매수 2.50 EURUSD에서 1.25773 sl: 1.25616 tp: 1.25923 가격 1.2
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: =3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #2 매수 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.66023 at price81.2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =2 i=0
2013.03.01 12:11:21 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #5 매수 3.50 EURUSD에서 1.25773 sl: 1.25616 tp: 1.66923 가격 1.2
2013.03.01 12:11:21 2012.09.03 00:00 폴리곤1 EURUSD,M15: Kc1: 틱=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #3 매수 1.50 EURUSD에서 1.25773 sl: 1.25616 tp: 1.66923 가격 1.2
2013.03.01 12:11:21 2012.09.03 00:00 폴리곤1 EURUSD,M15: Кс1: 틱=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 마감 #1 매수 0.50 EURUSD에서 1.25773 sl: 1.25416 tp: 1.66123 가격 1.2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: =1 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс0: OrdersTotal=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #7 매도 스톱 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #6 매수 제한 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #5 매수 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #4 매수 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #3 매수 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #2 매수 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 오픈 #1 매수 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok
2013.03.01 12:11:21 폴리곤1 테스트 시작
2013.03.01 12:11:21 Polagon1 EURUSD,M15: 성공적으로 로드됨

감사합니다. 쉬르킨

나는 당신의 발보 전체를 보지 않았습니다(입력 필드 위의 상단에 있는 SRC 버튼을 사용하여 그것을 부착해야 함) - 페이지 전체에 퍼져 있는 코드를 찔러보는 것이 불쾌하지만 가장 먼저 눈을 사로잡은 것은 바로 for(i=0; i< OrdersTotal() ; i++) 줄이었습니다. 닫으려면 역방향 루프를 사용해야 합니다. for(i= OrdersTotal()-1 ; i >=0 ; i -- )
 
Roger :
정수 x = MathRand() % 2;


그리고 갑자기 다른 숫자가 아닌 0 또는 1을 반환하는 이유는 무엇입니까? 결국, 도움말에 따르면 MathRand () 함수 는 0에서 32767 사이의 의사 난수 정수를 반환합니다.
 
hoz :

그리고 갑자기 다른 숫자가 아닌 0 또는 1을 반환하는 이유는 무엇입니까? 결국, 도움말에 따르면 MathRand () 함수 는 0에서 32767 사이의 의사 난수 정수를 반환합니다.

이것은 나눗셈의 나머지입니다 ! 산술 연산과 인쇄물을 살펴보십시오!

붙여넣으면 두 개의 결과만 번갈아 나타납니다.

   int x = MathRand () % 2 ;
   Print ( "x =" ,x);
 
모두를 환영합니다! 어드바이저를 진정시키는 방법을 알려주세요 . 시장 진입 조건이 발생하면 "주문이 성공했습니다!"라는 로그 파일에 쓰기 시작합니다. 이 작업을 1분에 수십 번 수행하며 그 결과 로그 파일이 엄청나게 커집니다. 몇시간동안 매달릴 수 있으니 포즈가 닫힐때까지 안쓰고 한번만 쓰게 만드는법...
 
Allis :
모두를 환영합니다! 어드바이저를 진정시키는 방법을 알려주세요. 시장 진입 조건이 발생하면 "주문이 성공했습니다!"라는 로그 파일에 쓰기 시작합니다. 이 작업을 1분에 수십 번 수행하며 그 결과 로그 파일이 엄청나게 커집니다. 몇시간동안 매달릴 수 있으니 포즈가 닫힐때까지 안쓰고 한번만 쓰게 만드는법...
안녕하세요 알리스 입니다! 틱으로 읽지 않는 곳에 인쇄를 등록해야 합니다! 오류가 있으면 출력해서 내고, 뜨면 펼친 일기장에 1회만 써줍니다!