오류, 버그, 질문 - 페이지 809

 

손절매 결정 문제로 돌아가 OnTradeTransaction 이벤트에서 이익을 얻습니다. 구조의 모든 필드를 표시하는 다음 로그가 있습니다(MetaQuotes의 예에서 가져옴). 이것은 더 이상 테스터가 아니라 온라인 콘테스트입니다. 구매 내용은 다음과 같습니다.

 ON 거래 0건(EURUSD,H1) 11:14:23 OrderSendWrapper:0.10 EURUSD BUY
JK 0 건의 거래 (EURUSD,H1) 11:14:23 _OrderSend 가격=1.23575 vol=0.10
GM 거래 0건(EURUSD,H1) 11:14:24 TRADE_TRANSACTION_REQUEST
OH 거래 0건(EURUSD,H1) 11:14:24 ------------RequestDescription
PK 0 거래(EURUSD,H1) 11:14:24 TRADE_ACTION_DEAL
DJ 0 거래 (EURUSD,H1) 11:14:24 기호: EURUSD
FN 0 거래 (EURUSD,H1) 11:14:24 매직 넘버: 0
PD 0 거래 (EURUSD,H1) 11:14:24 주문 티켓: 11670896
PL 0 거래(EURUSD,H1) 11:14:24 주문 유형: ORDER_TYPE_BUY
JF 거래 0건(EURUSD,H1) 11:14:24 주문 완료: ORDER_FILLING_FOK
FM 0 거래(EURUSD,H1) 11:14:24 주문 시간 유형: ORDER_TIME_GTC
NG 0 거래 (EURUSD,H1) 11:14:24 주문 만료: 1970.01.01 00:00
HI 0 거래 (EURUSD,H1) 11:14:24 가격: 1.23579
EG 0 거래(EURUSD,H1) 11:14:24 편차 포인트: 10
DR 0 거래(EURUSD,H1) 11:14:24 손절매: 1.2354
PJ 0 거래 (EURUSD,H1) 11:14:24 이익실현: 1.2361
ON 0 거래 (EURUSD,H1) 11:14:24 스탑 리밋: 0
MK 0 거래 (EURUSD,H1) 11:14:24 거래량: 0.1
IQ 0 거래(EURUSD,H1) 11:14:24 
FG 0 거래 (EURUSD,H1) 11:14:24	
MF 0 거래(EURUSD,H1) 11:14:24 ------------결과설명
JL 0 거래(EURUSD,H1) 11:14:24 Retcode 10009
ME 거래 0건(EURUSD,H1) 11:14:24 요청 ID: 1
RL 0 거래(EURUSD,H1) 11:14:24 주문 티켓: 11670896
NK 0 거래 (EURUSD,H1) 11:14:24 거래 티켓: 10809619
QS 거래 0건(EURUSD,H1) 11:14:24 거래량: 0.1
LJ 거래 0건(EURUSD,H1) 11:14:24 가격: 1.23579
RR 0 거래(EURUSD,H1) 11:14:24 문의: 1.23579
PI 0 거래(EURUSD,H1) 11:14:24 입찰가: 1.23566
GE 거래 0건(EURUSD,H1) 11:14:24 
DS 0 거래(EURUSD,H1) 11:14:24	
GE 거래 0건(EURUSD,H1) 11:14:24 대기 중인 주문 티켓 11670896
LR 0 거래(EURUSD,H1) 11:14:24	
LG 0 거래 (EURUSD,H1) 11:14:24 ------------거래 설명
FQ 0 거래(EURUSD,H1) 11:14:24 TRADE_TRANSACTION_ORDER_ADD
HF 0 거래 (EURUSD,H1) 11:14:24 기호: EURUSD
HM 0 거래 (EURUSD,H1) 11:14:24 거래 티켓: 0
DK 0 거래(EURUSD,H1) 11:14:24 거래 유형: DEAL_TYPE_BUY
DQ 0 거래 (EURUSD,H1) 11:14:24 주문 티켓: 11670896
DI 0 거래(EURUSD,H1) 11:14:24 주문 유형: ORDER_TYPE_BUY
CR 0 거래(EURUSD,H1) 11:14:24 주문 상태: ORDER_STATE_STARTED
RI 0 거래(EURUSD,H1) 11:14:24 주문 시간 유형: ORDER_TIME_GTC
JS 0 거래 (EURUSD,H1) 11:14:24 주문 만료: 1970.01.01 00:00
DE 0 거래(EURUSD,H1) 11:14:24 가격: 1.23579
QN 0 트랜잭션(EURUSD,H1) 11:14:24 가격 트리거: 0
PG 0 거래 (EURUSD,H1) 11:14:24 손절매: 1.2354
LM 0 거래 (EURUSD,H1) 11:14:24 이익실현: 1.2361
EF 0 거래 (EURUSD,H1) 11:14:24 거래량: 0.1
JI 거래 0건(EURUSD,H1) 11:14:24	
NS 0 거래 (EURUSD,H1) 11:14:24 ------------TransactionDescription
HH 거래 0건(EURUSD,H1) 11:14:24 TRADE_TRANSACTION_ORDER_DELETE
DR 0 거래(EURUSD,H1) 11:14:24 기호: EURUSD
LJ 0 거래 (EURUSD,H1) 11:14:24 거래 티켓: 0
PN 거래 0건(EURUSD,H1) 11:14:24 거래 유형: DEAL_TYPE_BUY
PD 0 거래 (EURUSD,H1) 11:14:24 주문 티켓: 11670896
PL 0 거래(EURUSD,H1) 11:14:24 주문 유형: ORDER_TYPE_BUY
NJ 0건의 거래(EURUSD,H1) 11:14:24 주문 상태: ORDER_STATE_FILLED
PM 0 거래(EURUSD,H1) 11:14:24 주문 시간 유형: ORDER_TIME_GTC
HG 0 거래 (EURUSD,H1) 11:14:24 주문 만료: 1970.01.01 00:00
JI 0 거래 (EURUSD,H1) 11:14:24 가격: 1.23579
OJ 0 거래 (EURUSD,H1) 11:14:24 가격 트리거: 0
NS 0 거래(EURUSD,H1) 11:14:24 손절매: 1.2354
JJ 0 거래 (EURUSD,H1) 11:14:24 이익실현: 1.2361
FS 0 거래 (EURUSD,H1) 11:14:24 거래량: 0
HE 0 거래 (EURUSD,H1) 11:14:24	
HN 거래 0건(EURUSD,H1) 11:14:24 ------------거래 설명
FI 거래 0건(EURUSD,H1) 11:14:24 TRADE_TRANSACTION_HISTORY_ADD
HN 0 거래 (EURUSD,H1) 11:14:24 기호: EURUSD
HE 0 거래 (EURUSD,H1) 11:14:24 거래 티켓: 0
DS 0 거래(EURUSD,H1) 11:14:24 거래 유형: DEAL_TYPE_BUY
DI 0 거래 (EURUSD,H1) 11:14:24 주문 티켓: 11670896
DQ 0 거래(EURUSD,H1) 11:14:24 주문 유형: ORDER_TYPE_BUY
RF 0 거래(EURUSD,H1) 11:14:24 주문 상태: ORDER_STATE_FILLED
LQ 0 거래(EURUSD,H1) 11:14:24 주문 시간 유형: ORDER_TIME_GTC
DK 0 거래 (EURUSD,H1) 11:14:24 주문 만료: 1970.01.01 00:00
FM 0 거래 (EURUSD,H1) 11:14:24 가격: 1.23579
CF 0 거래(EURUSD,H1) 11:14:24 가격 트리거: 0
RO 0 거래 (EURUSD,H1) 11:14:24 손절매: 1.2354
NE 0 거래(EURUSD,H1) 11:14:24 이익실현: 1.2361
RO 0 거래 (EURUSD,H1) 11:14:24 거래량: 0
DQ 0 거래(EURUSD,H1) 11:14:24	
DJ 0 거래 (EURUSD,H1) 11:14:24 ------------거래 설명
LQ 0 거래(EURUSD,H1) 11:14:24 TRADE_TRANSACTION_DEAL_ADD
FK 0 거래 (EURUSD,H1) 11:14:24 기호: EURUSD
DR 0 거래(EURUSD,H1) 11:14:24 거래 티켓: 10809619
PF 0 거래(EURUSD,H1) 11:14:24 거래 유형: DEAL_TYPE_BUY
PL 0 거래 (EURUSD,H1) 11:14:24 주문 티켓: 11670896
PD 0 거래(EURUSD,H1) 11:14:24 주문 유형: ORDER_TYPE_BUY
GN 0 거래(EURUSD,H1) 11:14:24 주문 상태: ORDER_STATE_STARTED
FE 0 거래(EURUSD,H1) 11:14:24 주문 시간 유형: ORDER_TIME_GTC
NO 0 거래 (EURUSD,H1) 11:14:24 주문 만료: 1970.01.01 00:00
HQ 0 거래 (EURUSD,H1) 11:14:24 가격: 1.23579
MR 0 거래(EURUSD,H1) 11:14:24 가격 트리거: 0
LK 0 거래 (EURUSD,H1) 11:14:24 손절매: 1.2354
HR 0 거래(EURUSD,H1) 11:14:24 이익실현: 1.2361
QJ 거래 0건(EURUSD,H1) 11:14:24 거래량: 0.1
NR 0 거래(EURUSD,H1) 11:14:24	

그리고 여기에서 이익실현으로 닫힙니다.

 DJ 0 거래 (EURUSD,H1) 11:20:38 ------------TransactionDescription
JN 거래 0건(EURUSD,H1) 11:20:38 TRADE_TRANSACTION_ORDER_ADD
DH 0 거래 (EURUSD,H1) 11:20:38 기호: EURUSD
PP 0 거래 (EURUSD,H1) 11:20:38 거래 티켓: 0
PH 0 거래(EURUSD,H1) 11:20:38 거래 유형: DEAL_TYPE_BUY
LR 0 거래(EURUSD,H1) 11:20:38 주문 티켓: 11670968
HG 0 거래(EURUSD,H1) 11:20:38 주문 유형: ORDER_TYPE_SELL
MO 거래 0건(EURUSD,H1) 11:20:38 주문 상태: ORDER_STATE_STARTED
HF 0 거래(EURUSD,H1) 11:20:38 주문 시간 유형: ORDER_TIME_GTC
PN 0 거래 (EURUSD,H1) 11:20:38 주문 만료: 1970.01.01 00:00
JE 0 거래 (EURUSD,H1) 11:20:38 가격: 1.2361
MS 0 거래 (EURUSD,H1) 11:20:38 가격 트리거: 0
MJ 0 거래 (EURUSD,H1) 11:20:38 손절매: 0
IR 0 거래 (EURUSD,H1) 11:20:38 이익실현: 0
QD 0 거래 (EURUSD,H1) 11:20:38 거래량: 0.1
거래 0건(EURUSD,H1) 11:20:38	
NP 0 거래 (EURUSD,H1) 11:20:38 ------------거래 설명
LN 0 거래(EURUSD,H1) 11:20:38 TRADE_TRANSACTION_ORDER_DELETE
DE 0 거래 (EURUSD,H1) 11:20:38 기호: EURUSD
PK 0 거래 (EURUSD,H1) 11:20:38 거래 티켓: 0
PM 0 거래(EURUSD,H1) 11:20:38 거래 유형: DEAL_TYPE_BUY
LG 0 거래 (EURUSD,H1) 11:20:38 주문 티켓: 11670968
HR 0 거래(EURUSD,H1) 11:20:38 주문 유형: ORDER_TYPE_SELL
HH 거래 0건(EURUSD,H1) 11:20:38 주문 상태: ORDER_STATE_FILLED
FK 0 거래(EURUSD,H1) 11:20:38 주문 시간 유형: ORDER_TIME_GTC
NQ 0 거래(EURUSD,H1) 11:20:38 주문 만료: 1970.01.01 00:00
HH 0 거래 (EURUSD,H1) 11:20:38 가격: 1.2361
KL 0 거래 (EURUSD,H1) 11:20:38 가격 트리거: 0
GG 0 거래 (EURUSD,H1) 11:20:38 손절매: 0
GI 0 거래 (EURUSD,H1) 11:20:38 이익실현: 0
RS 0 거래(EURUSD,H1) 11:20:38 거래량: 0
DJ 0 거래 (EURUSD,H1) 11:20:38	
HO 0 거래 (EURUSD,H1) 11:20:38 ------------거래 설명
JI 거래 0건(EURUSD,H1) 11:20:38 TRADE_TRANSACTION_HISTORY_ADD
LN 0 거래 (EURUSD,H1) 11:20:38 기호: EURUSD
HF 0 거래 (EURUSD,H1) 11:20:38 거래 티켓: 0
HR 0 거래(EURUSD,H1) 11:20:38 거래 유형: DEAL_TYPE_BUY
DH 0 거래(EURUSD,H1) 11:20:38 주문 티켓: 11670968
PM 0 거래(EURUSD,H1) 11:20:38 주문 유형: ORDER_TYPE_SELL
PF 0 거래(EURUSD,H1) 11:20:38 주문 상태: ORDER_STATE_FILLED
NQ 0 거래(EURUSD,H1) 11:20:38 주문 시간 유형: ORDER_TIME_GTC
FK 0 거래 (EURUSD,H1) 11:20:38 주문 만료: 1970.01.01 00:00
PO 0 거래 (EURUSD,H1) 11:20:38 가격: 1.2361
CF 0 거래 (EURUSD,H1) 11:20:38 가격 트리거: 0
OM 0 거래 (EURUSD,H1) 11:20:38 손절매: 0
OG 0 거래 (EURUSD,H1) 11:20:38 이익실현: 0
JN 거래 0건(EURUSD,H1) 11:20:38 거래량: 0
LP 거래 0건(EURUSD,H1) 11:20:38	
PE 거래 0건(EURUSD,H1) 11:20:38 ------------거래 설명
MR 0 거래(EURUSD,H1) 11:20:38 TRADE_TRANSACTION_POSITION
JH 거래 0건(EURUSD,H1) 11:20:38 기호: EURUSD
JP 0 거래 (EURUSD,H1) 11:20:38 거래 티켓: 0
FH 0 거래(EURUSD,H1) 11:20:38 거래 유형: DEAL_TYPE_BUY
HQ 0 거래 (EURUSD,H1) 11:20:38 주문 티켓: 0
DK 0 거래(EURUSD,H1) 11:20:38 주문 유형: ORDER_TYPE_BUY
GQ 0 거래(EURUSD,H1) 11:20:38 주문 상태: ORDER_STATE_STARTED
RH 0 거래(EURUSD,H1) 11:20:38 주문 시간 유형: ORDER_TIME_GTC
JL 0 거래 (EURUSD,H1) 11:20:38 주문 만료: 1970.01.01 00:00
HG 0 거래 (EURUSD,H1) 11:20:38 가격: 1.23579
QP 0 거래 (EURUSD,H1) 11:20:38 가격 트리거: 0
LI 0 거래 (EURUSD,H1) 11:20:38 손절매: 1.2354
HO 0 거래(EURUSD,H1) 11:20:38 이익실현: 1.2361
QD 0 거래 (EURUSD,H1) 11:20:38 거래량: 0.1
거래 0건(EURUSD,H1) 11:20:38	
NP 0 거래 (EURUSD,H1) 11:20:38 ------------거래 설명
FO 거래 0건(EURUSD,H1) 11:20:38 TRADE_TRANSACTION_DEAL_ADD
LE 0 거래 (EURUSD,H1) 11:20:38 기호: EURUSD
EH 0 거래 (EURUSD,H1) 11:20:38 거래 티켓: 10809689
RQ 0 거래(EURUSD,H1) 11:20:38 거래 유형: DEAL_TYPE_SELL
DF 0 거래 (EURUSD,H1) 11:20:38 주문 티켓: 11670968
HN 거래 0건(EURUSD,H1) 11:20:38 주문 유형: ORDER_TYPE_BUY
CD 0 거래(EURUSD,H1) 11:20:38 주문 상태: ORDER_STATE_STARTED
NK 거래 0건(EURUSD,H1) 11:20:38 주문 시간 유형: ORDER_TIME_GTC
FQ 0 트랜잭션(EURUSD,H1) 11:20:38 주문 만료: 1970.01.01 00:00
PI 0 거래(EURUSD,H1) 11:20:38 가격: 1.2361
CL 0 거래(EURUSD,H1) 11:20:38 가격 트리거: 0
OG 0 거래 (EURUSD,H1) 11:20:38 손절매: 0
OI 0 거래 (EURUSD,H1) 11:20:38 이익실현: 0
KQ 0 거래 (EURUSD,H1) 11:20:38 거래량: 0.1

이러한 작업의 공통점은 가격뿐입니다( 종가 는 이전에 지정된 TP 가격과 동일함). 문제는 - 이것이 TP의 발병 사실을 결정할 수 있는 방법입니까? IMHO, 불편하고 모호합니다 (제 기억이 맞다면 정확한 TP 가격이 나오지 않을 수 있으며 TP는 가장 가까운 다른 가격으로 마감됩니다).

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 

안녕하세요! 제가 어리석은 것일 수도 있고, 명백한 것을 이해하지 못하는 것일 수도 있습니다. iMA 표시기를 사용하려고 하며 읽은 예제에 따라 작성하려고 합니다.

기본적으로 이것이 제가 하려고 하는 것입니다. 상단에서 어드바이저의 모든 기능보다

 double       MA[];                 // массив для индикатора iMA
//---- handles for indicators
int          MA_handle;           // указатель на индикатор iMA

그런 다음 OnTick() 함수 내에서 작동하는 함수를 사용합니다. 샘플에서 함수 자체는 맨 아래에 있습니다. 사실, 내가 지금까지 가지고 있는 전체 배열에서

 if (EURNZD_d1 != 0.0 ) countq++;
      EURUSD_d1 = CalculateStrengthPairsTF( "EURUSD" +dop_symb, PERIOD_D1 );
       if (EURUSD_d1 != 0.0 ) countq++;
      EURCAD_d1 = CalculateStrengthPairsTF( "EURCAD" +dop_symb, PERIOD_D1 );
       if (EURCAD_d1 != 0.0 ) countq++;
      EURGBP_d1 = CalculateStrengthPairsTF( "EURGBP" +dop_symb, PERIOD_D1 );
       if (EURGBP_d1 != 0.0 ) countq++;
      EURAUD_d1 = CalculateStrengthPairsTF( "EURAUD" +dop_symb, PERIOD_D1 );
       if (EURAUD_d1 != 0.0 ) countq++;
      EURCHF_d1 = CalculateStrengthPairsTF( "EURCHF" +dop_symb, PERIOD_D1 );
       if (EURCHF_d1 != 0.0 ) countq++;
       if (countq != 0 ) D1_eur = NormalizeDouble ((EURJPY_d1 + EURNZD_d1 + EURUSD_d1 + EURCAD_d1 + EURGBP_d1 + EURAUD_d1 + EURCHF_d1) / countq, 0 );
   }
   int l_count_4 = 0 ;
   AVG_eur = 0 ;
   if (M1_eur != 0.0 ) l_count_4++;
   if (M5_eur != 0.0 ) l_count_4++;
   if (M15_eur != 0.0 ) l_count_4++;
   if (M30_eur != 0.0 ) l_count_4++;
   if (H1_eur != 0.0 ) l_count_4++;
   if (H4_eur != 0.0 ) l_count_4++;
   if (D1_eur != 0.0 ) l_count_4++;
   if (l_count_4 != 0 ) AVG_eur = (M1_eur + M5_eur + M15_eur + M30_eur + H1_eur + H4_eur + D1_eur) / l_count_4;
}

double CalculateStrengthPairsTF( string a_symbol, int a_timeframe) {
     int DIGITS_ = SymbolInfoInteger (a_symbol, SYMBOL_DIGITS );
   //---
     MqlTick last_tick;
   if ( SymbolInfoTick (a_symbol,last_tick));
   double BID_ = last_tick.bid;
   BID_ = NormalizeDouble ( BID_, DIGITS_);
    MA_handle= iMA (a_symbol,a_timeframe,Period_, 0 ,method_ma,price_applied);
     //--- заполнение массива MA[] текущими значениями индикатора iMA
   //--- в массив будет записано 100 элементов
   CopyBuffer (MA_handle, 0 , 0 , 100 ,MA);
   //--- задаём порядок индексации массива MA[] как в MQL4
   ArraySetAsSeries (MA, true );  
   double iMA_ = NormalizeDouble (MA[ 0 ], DIGITS_);

마지막 0 값만 사용합니다.

'a_timeframe' 오류를 씁니다. enum Owl.mq5 2009 28을 변환할 수 없습니다.

이 이민 변수와 관련하여 문자열 유형의 명령에 있습니다. 알다시피, 파란색으로 빛납니다.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Dimka-novitsek :

'a_timeframe' 오류를 씁니다. enum Owl.mq5 2009 28을 변환할 수 없습니다.

ENUM_TIMEFRAMES 유형으로 선언
 

감사해요!! 이것은 double, string 또는 int와 동일합니까? 뭔가 안 보이네요 실례합니다 이 유형은 어디에 입력해야 하나요?

글쎄요 감사합니다!

 
Valmars :
이것은 순전히 테스트 버그입니다. TRADE_TRANSACTION_DEAL_ADD의 경우 trans.price_tp 필드는 0 또는 모든 쓰레기를 포함할 수 있습니다. 온라인 거래에서는 모든 것이 올바르게 표시됩니다.
고맙습니다. 수정했습니다. 수정 사항은 다음 빌드에서 사용할 수 있습니다.
 
//+----------------------------------------------- --------------------+
//| cs2011.mq5 |
//| 저작권 © 2011 Xupypr |
//+----------------------------------------------- --------------------+
#property copyright "저작권 © 2011, Xupypr"
#속성 버전 "1.1"
//+-----------------------------------+
입력 이중 위험=3; // 시작 로트
입력 정수 TP=2200;
입력 정수 SL=0;
입력 int Fast=30;
int 느린 입력 = 500;
입력 intSign=36;
//+-----------------------------------+
더블 돈, 보증금=5000;
정수 MACD;
//+-----------------------------------+
무효 OnInit()
{
MACD=iMACD(NULL,0,빠름,느림,기호,PRICE_CLOSE);
}
//+-----------------------------------+
무효 OnTick()
{
정적 bool UpSignal, DnSignal;
if(TradeSignalCounter(UpSignal,DnSignal)) TradePerformer(UpSignal,DnSignal);
}
//+-----------------------------------+
bool TradeSignalCounter(bool &UpSignal,bool &DnSignal)
{
if(바(_Symbol,0)<100) 반환(거짓);
정적 정수 반환;
if(IsNewBar() || 회상)
{
이중 Ind[2],Sig[3];
DnSignal=거짓;
UpSignal=거짓;
반환=거짓;
if(CopyBuffer(MACD,0,1,2,Ind)<0) Recount=true;
if(CopyBuffer(MACD,1,1,3,Sig)<0) Recount=true;
if(Recount==true) 반환(거짓);
if(Ind[0]>0 && Ind[1]<0) DnSignal=true;
if(Ind[0]<0 && Ind[1]>0) UpSignal=true;
if(Ind[1]<0 && Sig[0]<Sig[1] && Sig[1]>Sig[2]) DnSignal=true;
if(Ind[1]>0 && Sig[0]>Sig[1] && Sig[1]<Sig[2]) UpSignal=true;
반환(참);
}
반환(거짓);
}
//+-----------------------------------+
bool TradePerformer(bool &UpSignal,bool &DnSignal)
{
if(업시그널)
{
if(PositionOpen(POSITION_TYPE_BUY)) UpSignal=거짓;
}
if(DNSignal)
{
if(PositionOpen(POSITION_TYPE_SELL)) DnSignal=거짓;
}
반환(참);
}
//+-----------------------------------+
더블머니_M()
{
HistorySelect(0,TimeCurrent());
int total=HistoryDealsTotal();
이중 이익 = 0;
for(int i=0;i<total;i++)
{
ulong deal_ticket=HistoryDealGetTicket(i);
if(HistoryDealGetString(deal_ticket,DEAL_SYMBOL)!=_Symbol) 계속;
if(HistoryDealGetInteger(deal_ticket,DEAL_TYPE)>1) 계속;
이익+=HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
이익+=HistoryDealGetDouble(deal_ticket,DEAL_SWAP);
}
돈=예금+이익;
if(PositionSelect(_Symbol))
{
돈+=PositionGetDouble(POSITION_PROFIT);
돈+=PositionGetDouble(POSITION_SWAP);
}
이중 최소=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
이중 제한=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);
이중 랏=위험*돈/예금;
lot=MathMin(Limit,MathMax(Min,Lots));
반환(많은);
}
//+-----------------------------------+
bool PositionOpen(ENUM_POSITION_TYPE 유형)
{
MqlTradeRequest 요청;
MqlTradeResult 결과;
이중 볼륨=Money_M();
이중 이익실현=0, 손절매=0;
if(PositionSelect(_Symbol))
{
이중 볼륨pos=PositionGetDouble(POSITION_VOLUME);
if(PositionGetInteger(POSITION_TYPE)==유형) 볼륨-=볼륨포스;
그렇지 않으면 볼륨+=볼륨포스;
}
for(int i=0;i<10;i++)
{
볼륨=NormalizeDouble(볼륨,1);
if(볼륨<=0) 휴식;
if(유형==POSITION_TYPE_SELL)
{
request.type=ORDER_TYPE_SELL;
request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
if(TP!=0) takeprofit = request.price-TP*_Point;
if(SL!=0) 손절매 = request.price+SL*_Point;
}
if(유형==POSITION_TYPE_BUY)
{
request.type=ORDER_TYPE_BUY;
request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
if(TP!=0) 이익실현 = request.price+TP*_Point;
if(SL!=0) 손절매 = request.price-SL*_Point;
}
request.action = TRADE_ACTION_DEAL;
요청.심볼 = _심볼;
request.volume = MathMin(볼륨,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX));
request.sl = 손절매;
request.tp = 이익을 취하다;
request.deviation=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
request.type_filling=ORDER_FILLING_AON;
request.comment=DoubleToString(Money,2)+"$";
if(!OrderCheck(요청, 확인))
{
if(check.margin_level<100) 볼륨-=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
Print("주문 확인 코드: ",check.retcode);
계속하다;
}
if(!OrderSend(요청, 결과) || result.deal==0)
{
Print("주문 보내기 코드: ",result.retcode);
if(result.retcode==TRADE_RETCODE_TRADE_DISABLED) 중단;
if(result.retcode==TRADE_RETCODE_MARKET_CLOSED) 중단;
if(result.retcode==TRADE_RETCODE_NO_MONEY) 중단;
if(result.retcode==TRADE_RETCODE_TOO_MANY_REQUESTS) 절전(5000);
if(result.retcode==TRADE_RETCODE_FROZEN) 중단;
if(result.retcode==TRADE_RETCODE_CONNECTION) 절전(15000);
if(result.retcode==TRADE_RETCODE_LIMIT_VOLUME) 중단;
}
그렇지 않으면 볼륨-=결과.볼륨;
수면(1000);
}
if(!PositionSelect(_Symbol)) 반환(거짓);
반환(참);
}
//+-----------------------------------+
부울 IsNewBar()
{
정적 날짜 시간
날짜시간Tnew[1];
CopyTime(_Symbol,PERIOD_CURRENT,0,1,Tnew);
if(Tnew[0]!=말함)
{
Told=신규[0];
반환(참);
}
반환(거짓);
}
//+-----------------------------------+

EA의 request.type_filling=ORDER_FILLING_AON 라인에 이유를 알려주세요. 오류는 'ORDER_FILLING_AON'으로 기록됨 - 선언되지 않은 식별자 cs2011.mq5 127 버전 697의 28



Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса - Документация по MQL5
 
FRX154 :

EA의 request.type_filling=ORDER_FILLING_AON 라인에서 이유를 알려주세요. 오류는 'ORDER_FILLING_AON'으로 기록됨 - 선언되지 않은 식별자 cs2011.mq5 127 버전 697의 28

Expert Advisor가 작성된 이후로 언어에 변화가 있었기 때문입니다.

request.type_filling=ORDER_FILLING_AON 대신 이 줄을 입력하십시오.

request.type_filling=ORDER_FILLING_FOK; 그리고 당신은 행복할 것입니다.

0을 넣어도 되지만

request.type_filling=0;

롤도 됩니다.

PS 또는 옵션으로 전체 어드바이저를 변경하지 않도록 모든 것보다 맨 위에 패치를 배치할 수 있습니다.

#define ORDER_FILLING_AON ORDER_FILLING_FOK

이것은 ORDER_FILLING_AON이 여러 번 언급되는 경우이며 모든 것을 포착하지 않으려면 이렇게 할 수 있습니다.

 
어째서인지 다음 그림을 관찰한다: 네비게이터에서 터미널에 있는 칠면조를 해도에 던지고 칠면조에 대한 빈 영역이 해도에 나타나면 칠면조 자체가 표시되지 않고 다음 목록을 열면 차트 칠면조, 그런 다음 "디버깅" 포스트 스크립트와 함께 나타납니다. 버그란 무엇이며 어떻게 처리합니까?
 
marketeer :
어째서인지 다음 그림을 관찰한다: 네비게이터에서 터미널에 있는 칠면조를 해도 위에 던지고 칠면조에 대한 빈 영역이 해도에 나타나면 칠면조 자체가 표시되지 않고 다음 목록을 열면 차트 칠면조, 그런 다음 "디버깅" 포스트스크립트와 함께 나타납니다. 버그란 무엇이며 어떻게 처리합니까?
재컴파일
 

좋은 사람들, 도와주세요!

가장 간단한 코드를 사용합니다.

#property copyright "Copyright 2011,"
#property link      " http://www.mql5.com "
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
double Vhod;
       Vhod=linfunc(15);

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
     }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
     }
//+------------------------------------------------------------------+
double  linfunc(int b) // имя функции и список параметров
  {
  double a;
   while((a/b)<1 && !IsStopped())//---------
     {
      a=a+1;
     }
     double f=a+b;
// составной оператор
   return(a+b);           // возвращаемое значение

  }

687 빌드에서 컴파일하고 디버거에서 Vhod=0을 얻습니다.

무슨 뜻인가요??? 동시에, 때때로 나는 Vhod=30을 얻었습니다. (이상하지만 사실)

반환은 말도 안되는 것을 반환합니다 ...

어떤 종류의 결함이나 내가 뭔가를 오해하고 있습니까 ???

사유: