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

 
( NormalizeDouble ( AccountFreeMargin ()/ SymbolInfoDouble ( Symbol (), SYMBOL_TRADE_CONTRACT_SIZE ), 2 )-Lots*(CountTrades()+ 1 ));

로트 계산 공식을 작성했는데 오류가 있을 수 있는 부분을 알려주세요. 어떤 종류의 부정확으로 인해 주문이 열리지 않습니다.

공식은 1-100 이상의 레버리지로 $100 이상의 예금에 대해 여전히 유효합니다. 그리고 레버리지가 없는 보증금이 $1,000이면 Freemargin/contract = 0.01이고 거래 조건이 충족되지 않기 때문에 이 값에서 더 이상 뺄 수 없기 때문에 공식이 작동하지 않는 것으로 나타납니다.


다른 한편, FR 마진이 이미 미결 포지션 을 고려하고 있다면 왜 빼나요? 그러면 다음과 같이 보일 것입니다-

 lot=NormalizeDouble ( AccountFreeMargin ()/ SymbolInfoDouble ( Symbol (), SYMBOL_TRADE_CONTRACT_SIZE ), 2 )

내가 가서 테스트할게

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
geratdc : 로트 계산 공식을 썼습니다. 어디에서 오류가 발생할 수 있습니까? 어떤 종류의 부정확으로 인해 주문이 열리지 않습니다.
      Лот= NormalizeDouble ( 0.65 * AccountBalance ()* AccountLeverage ()/           // Использую такую формулу
                             MarketInfo ( _Symbol , MODE_LOTSIZE ), 2 );
 
STARIJ :

인사말)) 그리고 0.65는 무엇입니까? 그거 어디서 났어

레버리지(숄더)에 대해 생각했지만, 레버리지를 고려하여 이론적으로 이미 잔액이 표시되어 있다는 결론에 도달했습니다. 아니면 내가 틀렸습니까?


그리고 0.65는 35% 드로다운 크톨리를 위한 예비비입니까? 그래서 margincall이 호출되지 않습니까? 그건 그렇고, 좋은 생각입니다. 그렇지 않으면 이와 같이 많이 픽업하게 될 것입니다. 그러면 손실이 포지션과 카펫을 통해 갈 것입니다.

에! 빼기 뺀 후 공식이 적용됨, 멋짐)) 로트가 0.02 더 짧았고, 3개 포지션이 드로다운에 들어갔을 때 비상 로트는 0.1, 즉 5배로 계산되었습니다! 내가 필요한 것을 테스트하고 보호 계수를 설정할 수도 있습니다 공개 비상 명령으로 손실의 지속적인 증가에 이미 민감한 기능이 있지만 실질적으로 문제는 없을 것입니다.

동료, 소중한 생각 감사합니다! 나는 테스트를 거 야!


거래 조건도 확인하기로 했습니다. 이 코드가 마음에 드시나요?


 // Проверка Баланса
   if (cn== 0 && TradeCheck== true && AccountBalance ()/ SymbolInfoDouble ( Symbol (), SYMBOL_TRADE_CONTRACT_SIZE )< SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MIN ))
     {
       Print ( "Баланс счёта не обеспечивает торговые требования" );
       SendMail ( "EA BJH" , "Баланс счёта не обеспечивает торговые требования" );
       ExpertRemove ();   // Снять советник с графика
     }
// Проверка Lots
   else if (cn== 0 && TradeCheck== true && AccountBalance ()/Lots< SymbolInfoDouble ( Symbol (), SYMBOL_TRADE_CONTRACT_SIZE ))
     {
       Print ( "Lots не обеспечивает торговые требования" );
       SendMail ( "EA BJH" , "Lots не обеспечивает торговые требования" );
       ExpertRemove ();   // Снять советник с графика
     }
파일:
1.gif  10 kb
 
geratdc : 동료, 소중한 생각 감사합니다! 나는 테스트를 거 야!

뒤집으면 - SELL 대신 BUY, BUY 대신 SELL - 더 좋을 것입니다.

동료를 시도하십시오!

로봇은 사실을 진술하는 대신 권장 사항을 제시해야 합니다. 마스터, 돈을 추가하십시오. 그것들은 이미 겪었습니다 ...

 
STARIJ :

뒤집으면 - SELL 대신 BUY, BUY 대신 SELL - 더 좋을 것입니다.

동료를 시도하십시오!

로봇은 사실을 진술하는 대신 권장 사항을 제시해야 합니다. 마스터, 돈을 추가하십시오. 그것들은 이미 겪었습니다 ...


예, 모든 것이 좋습니다. 긴급 명령을 발동하기 위해 특별히 남겨진 설정이 있었습니다. 어떤 로트가 픽업될 것인지 확인하는 것이 필요했습니다.

lot= NormalizeDouble ( AccountFreeMargin ()/ SymbolInfoDouble ( Symbol (), SYMBOL_TRADE_CONTRACT_SIZE ), 2 );

지금은 이 옵션을 그대로 두십시오. 나는 잔액을 통해 계산하곤 했는데, 무료 마진 측면에서 더 정확할 것이라고 생각하지만 결과는 동일합니다. 나중에 테스트 결과를 보겠습니다.

 
geratdc : 확인

인터넷이 켜졌습니다! 메일에 쓸 수 있나요?

 
STARIJ :

그래야만 하는 걸까? 레벨 -0.75 및 +0.75

단 하나의 변수. 처음에는 0. 다음에는 +1 -1 +1 -1


예, 그런 것입니다. 어드바이저에 작성하는 방법만 작성하면 시작될 때 레벨 사이의 간격에 있을 때 우리가 싸운 마지막 레벨의 값을 취하도록 합니까?

 
AlGuru : 그러나 우리가 레벨 사이의 간격에 있을 때 그것이 시작될 때 우리가 싸운 마지막 것의 가치를 취하도록 어드바이저에 쓰는 방법은 무엇입니까?

거부감 - 어때요? 그가 우리를 공격했나요? 거부된 시기 - 출시 전? 발사일 뿐이라면 어떻게 반격할 수 있겠습니까? 보내기 전에 읽으십시오 - 여기에 모든 것이 명확합니다.

 
STARIJ :

거부감 - 어때요? 그가 우리를 공격했나요? 거부된 시기 - 출시 전? 발사일 뿐이라면 어떻게 반격할 수 있겠습니까? 보내기 전에 읽으십시오 - 여기에 모든 것이 명확합니다.


글쎄, 그들은 반격하지 않았지만 라인에서 리바운드를 만들었습니다. 어드바이저가 다른 기계/터미널에 설치되어 있거나 컴퓨터가 종료된 경우 터미널을 다시 시작하는 경우 그(어드바이저)는 즉시 작업을 시작하여 마지막 가격 수준을 계산하고 원하는 값을 설정합니다. 가격이 원하는 수준에 도달할 때까지 기다리지 않았습니다. 나는 내가 명확하게 설명했기를 바랍니다.

 
AlGuru : 글쎄, 그들은 반격하지 않았지만 라인에서 튀어 올랐다. 어드바이저가 다른 기계/터미널에 설치되어 있거나 컴퓨터가 종료된 경우 터미널을 다시 시작하는 경우 그(어드바이저)는 즉시 작업을 시작하여 마지막 가격 수준을 계산하고 원하는 값을 설정합니다. 가격이 원하는 수준에 도달할 때까지 기다리지 않았습니다. 나는 내가 명확하게 설명했기를 바랍니다.

다른 기계나 터미널은 무엇과 관련이 있습니까? 또는 종료 - 다시 시작하십시오. 컴퓨터를 켜거나 어드바이저를 시작한다는 뜻인가요? 리바운드가 필요한 이유, 그리고 수평 라인과 역 교차에주의를 기울이면. 그리고 기다리면 켜면 한 번의 기회를 건너 뛰는 것입니다. 먼저 버리고 모든 작업을 수행한 후에는 원래대로 되돌릴 수 있습니다. 그런 다음 선이 어디에서 왔는지, 언제 표시되는지, 누가 배치했는지 또는 고문이 계산하는 방법입니다. 다른 컴퓨터에 설치하거나 컴퓨터가 꺼지기 전에 가격이 많이 올라갈 수 있습니다. 수준이 EA 자체에서 계산되는 경우 이는 다른 문제입니다. 그리고 이제 보십시오: 가격이 상위 수준에서 반등하고 한 시간 동안 수준 사이를 돌아다녔습니다. 그런 다음 컴퓨터를 켜고 고문을 시작했습니다. 분명히, 이 반동에 행동 시간을 돌릴 필요가 있습니다. 한 시간이 지났습니다. 모든 것, 반등이 잊혀졌습니다. ... 얼마나 많은 질문이 발생하는지 확인하십시오! 그리고 명확하게 말하십시오. 당신은 이해, 문제의 본질을 알고 있습니다. 밖에서 보면 어둠입니다. 프로그래밍의 기술은 독립적으로 많은 질문을 하고 그에 대한 답을 찾는 능력입니다. 대본을보십시오 - 아마도 합리적인 곡물이있을 것입니다.

 //+-------------------------------------------------------+
//| Проверка                                     PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart ()
{
   bool ДостигнутПервыйУровень= false ,
       ДостигнутВторойУровень= false ;
   int Переменная 1 = 0 , Переменная 2 = 0 ;
   double Уровень;
   int x;

   Alert ( "----- Снизу вверх --------" );
   for (x= 13 ; x< 27 ; x++)
  {
    Уровень= round ( sin (x)* 10 )/ 10 ;

     if (Уровень> 0.75 )
    {
      Переменная 1 = 1 ;
      Переменная 2 = 0 ;
    }

     if (Уровень<- 0.75 )
    {
      Переменная 1 = 0 ;
      Переменная 2 = 1 ;
    }

     Alert ( "  " , x, "       " , Уровень, "        " , Переменная 1 , "        " , Переменная 2 );
  }
   Alert ( "Номер  Уров  Пер1  Пер2" );
}
사유: