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

 
fxsaber :

이것은 여러 번 작성되었습니다. 어떤 이유로 작동하지 않습니다.

나는 그들이 화살표가 거래 직후에 항상 나타나지 않을 수 있다고 썼다는 것을 더 일찍 보았다. 나는 또한이 응용 프로그램을 열었습니다. 그러나 이러한 간격이 기록 탭의 목록에 있기 위해서는 아직 메시지를 보지 못했습니다.

추신 그리고 그렇습니다. 버그를 재현하는 데 필요한 모든 데이터와 증거를 제공한 후 어떤 이유로 일주일 내내 완전히 무시했지만 처음부터 버그가 있다는 데 동의하지 않고 반응했습니다.

 
Anatoli Kazharski :

나는 그들이 화살표가 거래 직후에 항상 나타나지 않을 수 있다고 썼다는 것을 더 일찍 보았다. 나는 또한이 응용 프로그램을 열었습니다. 그러나 이러한 간격이 기록 탭의 목록에 있기 위해서는 아직 메시지를 보지 못했습니다.

탭을 여러 번 전환해야 기록이 정확해집니다. 이것은 디버깅하는 동안 매우 성가시다.

 
fxsaber :

탭을 여러 번 전환해야 기록이 정확해집니다. 이것은 디버깅하는 동안 매우 성가시다.

예, 거래 전략을 개발하고 디버깅할 때 어떤 경우에는 크게 방해합니다.

탭을 전환하면 기록 목록의 내용이 어떻게 든 변경되었다는 사실을 알지 못했습니다.


 
Anatoli Kazharski :

탭을 전환하면 기록 목록의 내용이 어떻게 든 변경되었다는 사실을 알지 못했습니다.

마우스 오른쪽 버튼을 클릭하고 거래/주문을 변경합니다.

 
Anatoli Kazharski :

예, 거래 전략을 개발하고 디버깅할 때 어떤 경우에는 크게 방해합니다.

탭을 전환하면 기록 목록의 내용이 어떻게 든 변경되었다는 사실을 알지 못했습니다.


이렇게 먹습니다. 나는 속도 슬라이더와 일시 중지로 자신을 저장합니다.
 
fxsaber :

마우스 오른쪽 버튼을 클릭하고 거래/주문을 변경합니다.

예, 이러한 작업은 거래 내역 목록을 복원합니다.


 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
 
계정의 모든 실제 기호는 "EURUSD.hello"처럼 보입니다. 사용자 정의 "EURUSD"를 생성한 후 Signals 서비스 측면에서 복사할 때 문제가 있습니까?
 

다음 값을 추가하십시오.

ENUM_DEAL_REASON

식별자

설명

DEAL_REASON_LIMIT

지정가 주문을 발동한 결과 거래가 실행되었습니다.

DEAL_REASON_MARKET

시장가 주문을 발동하여 거래가 체결되었습니다.

DEAL_REASON_STOP

거래는 중지 주문 트리거의 결과로 실행되었습니다.


이것은 중복되는 것처럼 보일 것입니다. 그러나 주문이 부분적으로 실행되어 거래가 발생하는 상황이 있습니다. DEAL_ORDER는 발견되지만 기록 테이블에는 없을 것입니다. 주문은 아직 살아 있습니다.

저것들. 거래를 일으킨 주문 유형을 찾기 위해 주문 내역을 참조하는 것이 항상 도움이 되는 것은 아닙니다. "죽은 사람과 살아 있는 사람" 사이의 주문 검색에 소란을 피우지 않으려면 ENUM_ORDER_REASON 및 E NUM_POSITION_REASON 과의 호환성을 유지하기 위해 기존 플래그 다음에 실행 플래그를 더 추가하는 것이 좋습니다. 이 경우 호환성을 위해 E NUM_POSITION_REASON 에 동일한 플래그를 추가하는 것이 바람직합니다.

POSITION_REASON_LIMIT  == DEAL_REASON_LIMIT
POSITION_REASON_MARKET == DEAL_REASON_MARKET
POSITION_REASON_STOP   == DEAL_REASON_STOP
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 

다음 스레드 https://www.mql5.com/ru/forum/216697/page3 에서 OrderCalcMargin에 대한 질문이 제기되었습니다.


테스트: 다른 개시 가격 으로 대체하여 마진을 계산하는 2가지 옵션을 확인해 보겠습니다.

 #define TOSTRING(A) #A+ " = " +(string)(A)
void OnStart ()
  {
   double margin_1= 999 ,price_1;

   Print (TOSTRING(price_1= SymbolInfoDouble ( Symbol (), SYMBOL_ASK )));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING(MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print (TOSTRING(price_1= SymbolInfoDouble ( Symbol (), SYMBOL_BID )));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING(MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print (TOSTRING(price_1= 10.0 ));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING(MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print (TOSTRING(price_1= 1.0 ));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
   Print ( "price_1= " ,price_1, " margin_1= " , NormalizeDouble (margin_1, 8 ), " " ,TOSTRING(MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1)));
  }

// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin)
  {
   double MarginInit,MarginMain;

   const bool Res= SymbolInfoMarginRate (symbol,action,MarginInit,MarginMain);

   margin=Res ? MarginInit*price*volume* SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_VALUE )/
          ( SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_SIZE )* AccountInfoInteger ( ACCOUNT_LEVERAGE )) : 0 ;

   return (Res);
  }

다음은 로그입니다.

LF       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= SymbolInfoDouble ( Symbol (), SYMBOL_ASK ) = 88.712
KP       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 88.712 margin_1= 26.19 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
CR       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 88.712 margin_1= 26.19399834 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
ED       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= SymbolInfoDouble ( Symbol (), SYMBOL_BID ) = 88.7
PR       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 88.7 margin_1= 26.19 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
KS       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 88.7 margin_1= 26.1904551 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
EP       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 10.0 = 10.0
HK       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 10.0 margin_1= 26.19 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
HH       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 10.0 margin_1= 2.95270069 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
KN       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 1.0 = 1.0
FS       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 1.0 margin_1= 26.19 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
PR       0        04 : 28 : 05.464     test (AUDJPY,H1)        price_1= 1.0 margin_1= 0.29527007 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true

OrderCalcMargin 함수는 마진을 계산할 때 개시 가격을 고려하지 않습니다

이는 시세 및 시세에 대해 다시 계산해야 하는 호가 환율과 관련이 있는 것으로 보입니다.

견적 통화가 USD인 경우(계정 통화도 USD임), 계산된 마진은 개시 가격에 따라 변경됩니다.

GBPUSD에 대한 로그

KK       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= SymbolInfoDouble ( Symbol (), SYMBOL_ASK ) = 1.32354
CR       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.32354 margin_1= 44.12 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
DD       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.32354 margin_1= 44.118 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
GD       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= SymbolInfoDouble ( Symbol (), SYMBOL_BID ) = 1.32341
LS       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.32341 margin_1= 44.11 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
NQ       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.32341 margin_1= 44.11366667 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
DG       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 10.0 = 10.0
LM       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 10.0 margin_1= 333.33 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
NO       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 10.0 margin_1= 333.33333333 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
HM       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.0 = 1.0
ED       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.0 margin_1= 33.33 OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true
OD       0        05 : 25 : 15.763     test (GBPUSD,H1)        price_1= 1.0 margin_1= 33.33333333 MyOrderCalcMargin( ORDER_TYPE_BUY , _Symbol , 0.1 ,price_1,margin_1) = true

이것은 버그입니까 아니면 이와 같아야합니까?

OrderCalcMargin и проблема с ним связанная.
OrderCalcMargin и проблема с ним связанная.
  • 2017.10.04
  • www.mql5.com
Один советник работает на счёте MetaQuotes-Demo на семи валютных парах и на трёх парах реальном счёте робо. Итого 10 экземпляров советника запущено...