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

 
 

다음을 구현하는 방법을 알려주십시오.

사용자 정의 선은 차트에 그려지며 "n"숫자로 두십시오. 가격이 라인 중 하나에 접근할 때 가격 값을 얻는 방법은 무엇입니까?

미리 감사드립니다!

 

안녕하세요 여러분) 도와주세요 - 목표는 (가격이 (100 포인트) ""그럼 우리가 구매합니다"" "라인"보다 높은 경우) 표현 방법입니다(가격은 모든 값에서 100포인트 높음) 그리고 또 다른 질문은 현재 이동 평균 의 가격을 찾는 방법입니다???

미리 감사드립니다)

 
Tema97 :

안녕하세요 여러분) 도와주세요 - 목표는 (가격이 (100 포인트) ""그럼 우리가 구매합니다"" "라인"보다 높은 경우) 표현 방법입니다(가격은 모든 값에서 100포인트 높음) 그리고 또 다른 질문은 현재 이동 평균의 가격을 찾는 방법입니다???

미리 감사드립니다)

Tema, 문서를 읽으십시오. iMa는 그래픽 개체뿐만 아니라 거기에 설명되어 있습니다. ObjectGetDouble 함수 (적절한 매개변수 포함) 가 있는 라인의 가격을 가져옵니다.
 

개설을 위한 거래 조건을 유지하면서 주문이 마감된 후 다시 개설하지 않는 방법을 초보자에게 알려주십시오.

예: 스토캐스틱이 레벨 50을 상향 돌파하면 매수를 엽니다. 스토캐스틱이 역전되거나 레벨 80에 도달하거나 이익을 취하면 닫힙니다. 그러나 동시에 개장을 위한 거래 조건은 보존됩니다! 저것들. 스토캐스틱이 50 이상으로 유지되고 매수가 다시 열립니다!

이중 S_1=iStochastic(NULL,0,K,D,느림,MODE_SMA,price_field,MODE_MAIN,0);

이중 S_2=iStochastic(NULL,0,K,D,느림,MODE_SMA,price_field,MODE_MAIN,1);

if(S_1>50)

{

Opn_B=참;

}

if(S_1<S_2||S_1>80)

{

Cls_B=참;

}

MQL 튜토리얼에 제시된 간단한 Expert Advisor의 계획에 거래 기준을 삽입합니다. 이 문제를 방지하려면 어떤 함수를 사용해야 하는지 알려주세요. 고맙습니다!

 
if (S_1 > 50 && S_2 < 50 )

아래에서 위로 레벨 50을 넘기 위한 조건입니다.

 
AlexeyVik :

아래에서 위로 레벨 50을 넘기 위한 조건입니다.

정말 감사합니다! 나는 지금 시도 할거야.
 
이 차트를 닫지 않고 차트에서 "연결된" 지표(또는 Expert Advisor)를 "분리"하는 방법은 무엇입니까?
 
실시간으로 작동하는 차트에 AccountEquity() 표시기를 넣을 수 있습니까? 어디서 얻나요?
 

안녕하세요! 말해 주세요. MQL4 Tutorial에서 제시하는 Expert Advisor에서 거래 기준을 변경합니다. 어떤 기준에서든 손절매를 설정하려고 할 때 프로그램은 오류 130을 생성합니다: 구매 시 잘못된 중지. 이유를 설명해 주세요.

// M15의 숫자 값

외부 이중 정지 손실 = 0; // 열린 주문에 대한 SL

extern double 이익실현 = 0; // 열린 주문에 대한 TR

외부 정수 K = 5;

외부 정수 D = 3;

extern int 감속 = 3;

외부 정수 price_field = 0;


외부 정수 Level_1 = 80; // 확률적 수준

외부 정수 Level_2 = 20;

extern int Period_MA_2=31; // MA 기간 2

외부 이중 Rastvor = 28.0; // MA 사이의 거리

extern 이중 로트 = 0.01; // 하드 코딩된 숫자 제비

extern 이중 Prots = 0.07; // 무료 자기자본 비율

bool 작업=true; // 전문가 고문이 작동합니다.

문자열 기호; // 금융의 이름. 도구

//------------------------------------------------ --------------- 2 --

정수 시작()

{

정수

K_레벨,

Total, // 창의 주문 수

Tip=-1, // 유형이 선택되었습니다. 주문(B=0,S=1)

티켓; // 주문 번호

더블 S_1,

에스_2,

MA_1_t, // 값. MA_1 현재

MA_2_t, // 값. MA_2 현재

로트, // 수량 선택한 순서대로 로트

Lts, // 수량 많은 오픈 주문

Min_Lot, // 최소 랏 수

단계, // 로트 크기 변경 단계

무료, // 현재 무료 자금

One_Lot, // 한 로트의 비용

Price, // 선택한 주문의 가격

SL, // 선택한 주문의 SL

TP; // 선택한 주문의 TP

부울

Ans =false, // 종료 후 서버 응답

Cls_B=false, // Buy 마감 기준

Cls_S=false, // Sell 마감 기준

Opn_B=false, // 매수 개시 기준

Opn_S=거짓; // Sell 열기 기준

//------------------------------------------------ --------------- 삼 --

// 전처리

if(Bars < Period_MA_2) // 막대가 충분하지 않음

{

Alert("창에 막대가 부족합니다. Expert Advisor가 작동하지 않습니다.");

반품; // start()에서 종료

}

if(Work==false) // 치명적인 오류

{

Alert("심각한 오류입니다. Expert Advisor가 작동하지 않습니다.");

반품; // start()에서 종료

}

//------------------------------------------------ --------------- 4 --

// 주문에 대한 회계

기호=기호(); // fin.instr의 이름.

총=0; // 주문 수

for(int i=1; i<=OrdersTotal(); i++) // 순서를 통해 루프

{

if (OrderSelect(i-1,SELECT_BY_POS)==true) // 다음이 있는 경우

{ // 주문 분석:

if (OrderSymbol()!=Symb) 계속; // 핀란드어가 아닙니다. 도구

if (OrderType()>1) // 보류 중입니다.

{

Alert("대기 중인 주문이 감지되었습니다. Expert Advisor가 작동하지 않습니다.");

반품; // start()에서 종료

}

총++; // 시장 카운터 큰 떼거리

if (Total>1) // 하나 이상의 주문

{

Alert("여러 개의 시장 주문입니다. Expert Advisor가 작동하지 않습니다.");

반품; // start()에서 종료

}

티켓=OrderTicket(); // 선택된 번호. 주문.

Tip=주문유형(); // 선택한 주문의 유형입니다.

가격 = OrderOpenPrice(); // 가격이 선택되었습니다. 주문.

SL = 주문 중지 손실(); // 선택된 주문의 SL.

TP=OrderTakeProfit(); // 선택된 주문의 TP.

Lot=OrderLots(); // 랏 수

}

}

//------------------------------------------------ --------------- 5 --

// 거래 기준

S_1=iStochastic(NULL,0,K,D,느림,MODE_SMA,price_field,MODE_MAIN,0);


S_2=iStochastic(NULL,0,K,D,느림,MODE_SMA,price_field,MODE_MAIN,1);


if(S_1 > 50 && S_2 < 50)


{


Opn_B=참;


}


if(S_1<S_2||(S_1 < 80 && S_2 > 80))


{


Cls_B=참;


}

if(S_1 < 50 && S_2 > 50)


{


Opn_S=참;


}


if(S_1>S_2||(S_1 > 20 && S_2 < 20))


{


CLs_S=참;


}

//------------------------------------------------ --------------- 6 --

// 마감 주문

while(true) // 주문 마감 주기.

{

if (Tip==0 && Cls_B==true) // 매수 주문이 열렸습니다..

{ //종료 기준이 있습니다.

Alert("구매를 종료하려고 합니다. ",티켓,". 응답을 기다리는 중입니다..");

새로 고침(); // 데이터 업데이트

Ans=OrderClose(티켓, 로트, 입찰, 2); // 닫기 구매

if (Ans==true) // 알았습니다 :)

{

Alert("구매 주문 마감됨",티켓);

부서지다; // 닫기 루프에서 종료

}

if (Fun_Error(GetLastError())==1) // 오류 처리

계속하다; // 재시도

반품; // start()에서 종료

}

if (Tip==1 && Cls_S==true) // 매도 주문이 열렸습니다..

{ // 닫는 기준이 있습니다.

Alert("판매 종료 시도 ",티켓,". 응답을 기다리는 중입니다..");

새로 고침(); // 데이터 업데이트

Ans=OrderClose(티켓,로트,매도,2); // 닫기 판매

if (Ans==true) // 알았습니다 :)

{

Alert("판매 주문 마감됨",티켓);

부서지다; // 닫기 루프에서 종료

}

if (Fun_Error(GetLastError())==1) // 오류 처리

계속하다; // 재시도

반품; // start()에서 종료

}

부서지다; // 종료하는 동안

}

//------------------------------------------------ --------------- 7 --

// 주문 비용

새로 고침(); // 데이터 업데이트

Min_Lot=시장정보(Symb,MODE_MINLOT); // 최소 수량 제비

무료=AccountFreeMargin(); // 사용 가능한 자금

One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// 1랏의 비용

단계 = MarketInfo(Symb,MODE_LOTSTEP); // 단계 크기 조정

if (Lots > 0) // 로트가 지정된 경우

lts=많음; // 우리는 그들과 함께 일한다

else // % 자유 자본

Lts=MathFloor(무료*Prots/One_Lot/Step)*Step;// 열려면

if(Lts < Min_Lot) Lts=Min_Lot; // 최소값보다 작지 않음

if (Lts*One_Lot > Free) // Lot는 무료보다 비쌉니다.

{

Alert(" ", Lts," lot에 대한 자금이 충분하지 않습니다.");

반품; // start()에서 종료

}

//------------------------------------------------ --------------- 여덟 --

// 오픈 오더

while(true) // 주문 마감 주기.

{

if (Total==0 && Opn_B==true) // 주문을 엽니다. 아니 +

{ // 열린 기준 구입

새로 고침(); // 데이터 업데이트

Alert("구매를 열려고 합니다. 응답을 기다리는 중입니다..");

티켓=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//오픈 구매

if (티켓 > 0) // 성공 :)

{

Alert("구매 주문 오픈",티켓);

반품; // start()에서 종료

}

if (Fun_Error(GetLastError())==1) // 오류 처리

계속하다; // 재시도

반품; // start()에서 종료

}

if (Total==0 && Opn_S==true) // 주문을 엽니다. 아니 +

{ // 열린 기준 팔다

새로 고침(); // 데이터 업데이트

Alert("판매를 열려고 합니다. 응답을 기다리는 중입니다..");

티켓=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel

if (티켓 > 0) // 성공 :)

{

Alert("판매 주문 오픈",티켓);

반품; // start()에서 종료

}

if (Fun_Error(GetLastError())==1) // 오류 처리

계속하다; // 재시도

반품; // start()에서 종료

}

부서지다; // 종료하는 동안

}

//------------------------------------------------ --------------- 아홉 --

반품; // start()에서 종료

}


//------------------------------------------------ -------------- 십 --

int Fun_Error(int Error) // 오류 처리 함수

{

스위치(오류)

{ // 피할 수 있는 오류

case 4: Alert("거래 서버가 바쁘다. 다시 시도해보자..");

수면(3000); // 간단한 솔루션

반환(1); // 함수 종료

case 135:Alert("가격이 변경되었습니다. 다시 시도해보세요..");

새로 고침(); // 데이터 업데이트

반환(1); // 함수 종료

case 136:Alert("가격이 없습니다. 새 틱을 기다리는 중입니다..");

while(RefreshRates()==false) // 다음 틱까지

수면(1); // 루프에서 지연

반환(1); // 함수 종료

case 137:Alert("브로커가 사용 중입니다. 다시 시도합니다..");

수면(3000); // 간단한 솔루션

반환(1); // 함수 종료

case 146:Alert("거래 하위 시스템이 사용 중입니다. 다시 시도하십시오..");

수면(500); // 간단한 솔루션

반환(1); // 함수 종료

// 치명적인 오류

사례 2: Alert("일반 오류입니다.");

리턴(0); // 함수 종료

사례 5: Alert("이전 터미널 버전입니다.");

작업=거짓; // 더 이상 작동하지 않음

리턴(0); // 함수 종료

case 64: Alert("계정이 차단되었습니다.");

작업=거짓; // 더 이상 작동하지 않음

리턴(0); // 함수 종료

case 133:Alert("거래가 금지됩니다.");

리턴(0); // 함수 종료

case 134:Alert("작업을 완료하기에 자금이 충분하지 않습니다.");

리턴(0); // 함수 종료

기본값: Alert("오류가 발생했습니다. ",Error); // 다른 옵션

리턴(0); // 함수 종료

}

}

//------------------------------------------------ -------------- 열하나 --

int New_Stop(int Parameter) // 중지 prik를 확인합니다.

{

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// 최소. 거리

if (Parameter < Min_Dist) // 허용보다 작으면

{

매개변수=Min_Dist; // 허용으로 설정합니다.

Alert("스탑 오더 거리가 증가했습니다.");

}

반환(매개변수); // 반환 값

}