MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 549

 

그리고 코드의 다음 축약 구조는 정확합니다. a < b && ( c > d1 || c > d2 || c > d3) ?

이것은 쓰기를 피하기 위한 것입니다: (a < b && c > d1) || (a < b && c > d2) 등 여러 번.

 
HeAic :

그리고 코드의 다음 축약 구조는 정확합니다. a < b && ( c > d1 || c > d2 || c > d3) ?

이것은 쓰기를 피하기 위한 것입니다: (a < b && c > d1) || (a < b && c > d2) 등 여러 번.

물론 그럴 것이다. 그런 큰 구조를 작성할 때 내가 하는 유일한 일은 대괄호로 우선 순위를 명시적으로 나타내는 것입니다.

(a < b)  && ( c > d1 || c >d2 || c > d3)

MT4/5 컴파일러의 경우 기존 우선 순위가 식의 결과를 다른 방식으로 계산하는 것을 허용하지 않기 때문에 지정된 대괄호 없이도 가능합니다. 그러나 이와 같은 대괄호는 두 가지 이점을 제공합니다.

  1. 표현식은 우선순위에 대한 질문 없이 시각적으로 더 쉽게 인식할 수 있습니다(각 컴파일러에 대해 동일한 우선순위를 기억하지 마십시오).
  2. 다른 우선 순위를 가질 수 있는 다른 컴파일러로 코드를 이식하는 경우 코드는 현재 컴파일러와 동일한 방식으로 작동합니다.
 
Alexey Viktorov :

감사합니다

S_sk= SymbolInfoInteger ( "EURUSD" , SYMBOL_SELECT );

false를 반환했습니다. Market Watch에 기호가 없습니다. 기호를 추가하는 방법은 무엇입니까?

 
lil_lil :

감사합니다

false를 반환했습니다. Market Watch에 기호가 없습니다. 기호를 추가하는 방법은 무엇입니까?

SymbolSelect()

모든 것이 설명서에 있습니다. 함수 이름 및 F1 커서

 
Artyom Trishkin :

SymbolSelect()

모든 것이 설명서에 있습니다. 함수 이름 및 F1 커서

고맙습니다.

 

이유가 뭔지 말해줘? MT5에서 지정가 주문을 설정하는 스크립트를 작성했습니다. 터미널의 차트에 주문을 드롭하면 result.retcode가 10009( 주문 완료 )를 반환하지만 주문이 설정되지 않습니다.

 
iv1986 :

이유가 뭔지 말해줘? MT5에서 지정가 주문을 설정하는 스크립트를 작성했습니다. 터미널에서 차트에 주문을 드롭하면 result.retcode가 10009(주문 완료)를 반환하지만 주문이 설정되지 않습니다.

  1. 코드.
  2. 잡지.
  3. 성명.
이 모든 것이 어디 있습니까?

 
Ihor Herasko :

  1. 코드.
  2. 잡지.
  3. 성명.
이 모든 것이 어디 있습니까?

{MqlTradeRequest 요청={0};
MqlTradeResult 결과={0};
이중 입찰=SymbolInfoDouble(Symbol(),SYMBOL_BID);
이중 질문=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
정수 숫자=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
더블 p=NormalizeDouble(ChartPriceOnDropped(),digits);
if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
{p=MathRound(ChartPriceOnDropped()*0.1)/0.1;
}
intV=75;
if(p<질문)
{
request.action =TRADE_ACTION_PENDING; // 거래 작업 유형
request.symbol = 기호(); // 기호
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE )));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
}
요청 유형 =ORDER_TYPE_BUY_LIMIT; // 주문 유형
request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // 오픈 가격
요청.편차=50; // 허용 가격 편차
요청.sl=p; // 손절매 위치
request.tp =NormalizeDouble(Ask+(Ask-p)*3,숫자); // 이익 포지션 취하기
request.type_filling=ORDER_FILLING_IOC;
request.type_time=ORDER_TIME_DAY;
request.stoplimit=묻다;
OrderSend(요청, 결과);
}
경우(p>입찰가)
{
request.action =TRADE_ACTION_PENDING; // 거래 작업 유형
request.symbol = 기호(); // 기호
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((p-입찰)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
} // 용량
request.type=ORDER_TYPE_SELL_LIMIT; // 주문 유형
request.price =NormalizeDouble(Bid+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // 오픈 가격
요청.편차=50; // 허용 가격 편차
요청.sl=p; // 손절매 위치
request.tp =NormalizeDouble(Bid-(p-Bid)*3,digits); // 이익 포지션 취하기
request.type_time=ORDER_TIME_DAY;
request.type_filling=ORDER_FILLING_IOC;
request.stoplimit=입찰가;
OrderSend(요청, 결과);

}

로그 쓰기: 2018.05.14 10:12:38.187 거래 '992940': 판매 한도 3.00 Si-6.18 at 62066 (62065) sl: 62331 tp: 61267 실행을 위해 배치됨

 
iv1986 :

로그 쓰기: 2018.05.14 10:12:38.187 거래 '992940': 판매 한도 3.00 Si-6.18 at 62066 (62065) sl: 62331 tp: 61267 실행을 위해 배치됨

일반 저널에 기재되어 있습니다. 그리고 잡지 "전문가"는 어떻습니까? 그리고 한 줄뿐만 아니라 전체 로그. 열쇠 구멍을 통해 볼 수 있는 것이 거의 없습니다.

또한 위의 코드에는 반환 코드에 대한 검사가 없습니다. 따라서 어떤 근거로 오류 코드에 대한 결론이 내려지는지 명확하지 않습니다.

조언을 하려면 (당신과 같은 것을 보기 위해) 명확하게 재현 가능한 단계가 필요하지만 여기서는 그렇지 않습니다. 코드에서 문제가 있는 부분을 잘라내어 직접 실행한 다음 정확히 작동하지 않는 부분을 보여줍니다.

추신: 코드를 삽입 하려면 "</>" 아이콘이나 Alt+S를 사용하세요.

 

코드 끝에 또 다른 경고 (result.retcode)가 있습니다.

일반 저널:

2018.05.14 12:08:16.984 스크립트 스크립트 LIMIT(Si-6.18,M15)가 성공적으로 로드되었습니다.

2018.05.14 12:08:17.187 거래 '992940': 구매 한도 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905

2018.05.14 12:08:17.484 거래 '992940': 허용되는 구매 제한 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905

2018.05.14 12:08:17.500 거래 '992940': 구매 제한 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905 실행을 위해 배치됨

2018.05.14 12:08:17.546 거래 '992940': 주문 번호 13235300 구매 제한 3.00 / 3.00 Si-6.18 at 62091, 337.532ms에 완료

2018.05.14 12:08:17.578 스크립트 스크립트 LIMIT(Si-6.18,M15) 제거됨


칼럼 전문가: 2018.05.14 12:08:17.578 한계(Si-6.18,M15) 경보: 10009, 다른 것은 없습니다.