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

 
Wanderer1000 :
MetaTrader 4를 설치하고 데모 계정을 개설했습니다. 주문을 열고 닫으려고 했습니다. 이제 "이전 주문을 닫고 새 주문을 열려면 2개의 양초 차이가 필요합니다"와 같은 정보를 사용하여 가격이 상승할 때 판매 주문을, 가격이 하락할 때 구매 주문을 시작하도록 터미널 자체를 만드는 방법은 무엇입니까?
조언자 작성 , 아마도)
 
nadya :

좋은 저녁이에요. 문제는 거래의 일부를 닫을 때 고문이 새 티켓으로 새 거래를 여는 것입니다. 그리고 새로운 질서의 마법은 그대로 남아 있습니까?


 

모든 거래가 구매 전용인 이유를 설명할 수 있나요??? SELL에 대한 단일 거래가 아니라 SELL에 대한 if() 앞의 플래그 표시기는 어떤 이유로 항상 1과 같습니다. WHY???? 설정에서 길고 짧습니다.

또한 왜 모든 내 조언자에서 조언자가 입력할 수 있었던 위치를 건너뛰나요? 그것은 안에 있고 그것은 안에 있지 않습니다!

다음은 코드입니다( 변수 선언 이 잘렸습니다):
double upfr,dnfr=0.0;//마지막 도형의 수준
정수 플래그 = 0;

int start() //프랙탈이 깨졌을 때 열리고 s개의 양초 후에 닫힙니다.
{
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)!=0)
{
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4);
}
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)==0)
{
upfr=0;
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)!=0)
{
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)==0)
{
dnfr=0;
}
// 피어싱으로 주문 열기
H=iHigh(Symbol(),PERIOD_H1,1);
L=iLow(Symbol(),PERIOD_H1,1);
tOpen=iTime(Symbol(),PERIOD_H1,1);
if(H>upfr && flag==0) //업 프랙탈과 업 프랙탈 수준을 초과한 경우
{
t닫기=t열기+s*시간*60;
OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,NULL,NULL);
플래그=1;
}
if(L<dnfr)
인쇄(L," -L dnfr- ",dnfr," 플래그- ", 플래그);
if(L<dnfr && flag==0)//프랙탈이 다운되고 프랙탈 수준이 낮아진 경우
{
t닫기=t열기+s*시간*60;
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,NULL,NULL);
플래그=1;
}
//시간 경과 후 주문 마감
if(Time[1]>=tClose && flag==1)// 예약된 시간이 경과한 경우
{
Print("닫기 기능");
또는 닫기();
플래그=0;
upfr=0;
dnfr=0;
}
리턴(0);
}

파일:
 

이에 직면한...

어드바이저 삭제 시 보류 중인 주문을 삭제 해야 합니다.

두 가지 옵션이 있습니다

1. 그냥 다 제거..

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2. 선택적으로...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

그래서, 걸림돌은 데모에 있는 것입니다. 두 경우 모두 쾅 작동합니다. 하지만 실제 생활에서는 ... 어떤 이유로 인해 하나의 보류 중인 로트만 제거됩니다... 문제는 그 이유를 누가 압니까?

 
DOCTORS :

이에 직면한...

어드바이저 삭제 시 보류 중인 주문을 삭제해야 합니다.

두 가지 옵션이 있습니다

1. 단순히 모든 것을 제거합니다.

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2. 선택적으로...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

그래서, 걸림돌은 데모에 있는 것입니다. 두 경우 모두 쾅 작동합니다. 하지만 실제 생활에서는 ... 어떤 이유로 인해 하나의 보류 중인 로트만 제거됩니다... 문제는 그 이유를 누가 압니까?

IMHO "실패":

특수 함수 deinit() 의 실행 시간은 2.5초로 제한됩니다. 특수 deinit() 함수에 포함된 코드가 지정된 시간보다 오래 실행되면 클라이언트 터미널은 특수 deinit() 함수 및 프로그램 전체의 작업을 강제로 종료합니다.

 
ilunga :

IMHO "실패":

특수 함수 deinit()의 실행 시간은 2.5초로 제한됩니다. 특수 deinit() 함수에 포함된 코드가 지정된 시간보다 오래 실행되면 클라이언트 터미널은 특수 deinit() 함수 및 프로그램 전체의 작업을 강제로 종료합니다.

:(

저것들. 희망 없다? 대략적으로 말하자면, 처음에는 보류 중인 계정을 닫는 스크립트를 시작합니다. 그런 다음 올빼미를 닫습니다... 멋진 자동 거래...

그리고 한 가지 더 질문 - https://forum.mql4.com/ru/42300/page588 보류 중인 어시스턴트 설치

그러다가 기간을 변경하면 어떤 이유로 주문이 삭제됩니다...

 
DOCTORS :

:(

저것들. 희망 없다? 대략적으로 말하자면, 처음에는 보류 중인 계정을 닫는 스크립트를 시작합니다. 그런 다음 올빼미를 닫습니다... 멋진 자동 거래...

그리고 한 가지 더 질문 - https://forum.mql4.com/ru/42300/page588 보류 중인 어시스턴트 설치

그러다가 기간을 변경하면 어떤 이유로 주문이 삭제됩니다...

스크립트를 사용하거나 다른 방법으로 조언자에게 작업을 완료하도록 명령을 제공합니다(예: 전역 변수 를 통해).

기간 변경 = EA 다시 로드

 
ilunga :

스크립트를 사용하거나 다른 방법으로 조언자에게 작업을 완료하도록 명령을 제공합니다(예: 전역 변수를 통해).

기간 변경 = EA 다시 로드

가변 작업 - 대단히 감사합니다!
흠.. 기간 변경을 우회할 수 있는 방법은 없나요?
 
포럼 사용자, 주문 수정을 도와주세요.
 
이러한 질문: 시각적 테스트 모드에서 표시기 선은 테스트가 끝날 때만 그려집니다. 이것은 모든 사람에게 해당되는 것입니까 아니면 내가 뭔가 잘못하고 있습니까?