시장에 게시된 Expert Advisors에서 최소 스톱을 확인합니다.

 

안녕하세요 여러분, 친구들입니다!

시장의 이러한 기능이 있습니다 . 최소 정류장에 대한 모든 값을 확인해야 합니다.

변수 값이 min stop보다 작으면 오류 130 이 발생하지 않도록 min stop을 할당합니다.

이제 브로커의 90%에서 스프레드와 minstop이 유동적이며 0을 제공합니다.

모든 변수에 최소 정지 값을 할당하는 코드 구성이 있습니다.

 int OnInitLevels( string symToWorkmodify)
  {
   if (lot< SymbolInfoDouble (symToWorkmodify, SYMBOL_VOLUME_MIN ))lots= SymbolInfoDouble (symToWorkmodify, SYMBOL_VOLUME_MIN ); else
   if (lot> SymbolInfoDouble (symToWorkmodify, SYMBOL_VOLUME_MAX ))lots= SymbolInfoDouble (symToWorkmodify, SYMBOL_VOLUME_MAX ); else lots=lot;
   if (StopLoss> 0 && StopLoss< SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ))StopLosss=( int ) SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ); else StopLosss=StopLoss;
   if (TakeProfit> 0 && TakeProfit< SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ))TakeProfits=( int ) SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ); else TakeProfits=TakeProfit;
   if (TrailingStop> 0 && TrailingStop< SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ))TrallingStops=( int ) SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ); else TrallingStops=TrailingStop;
   if (TakeProfitALL> 0 && TakeProfitALL< SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ))TakeProfitsAver=( int ) SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ); else TakeProfitsAver=( int )TakeProfitALL;
   if (TrailingStop> 0 && TrailingStop< SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ))TrallingStops=( int ) SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL ); else TrallingStops=TrailingStop;
   return ( 0 );
  }

그러나 이제는 모든 곳에서 min stop = 0이기 때문에 더 이상 시장에서 통과하지 않습니다.

누가 이 문제를 다루고 있습니까?

 

물론 작동하지 않습니다.))) SL, TP, TS가 아닌 최소값을 설정해야 하며 Stop Level 값을 설정해야 합니다. 그리고 프로그램을 시작할 때 한 번만이 아니라 매 틱마다:

   digits          = ( int ) SymbolInfoInteger (symbol, SYMBOL_DIGITS );
   point           = SymbolInfoDouble (symbol, SYMBOL_POINT );
   
   tickSize        = SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_SIZE );
   
   ask             = SymbolInfoDouble (symbol, SYMBOL_ASK );
   bid             = SymbolInfoDouble (symbol, SYMBOL_BID );
   spread          = ask - bid;

   stopLevel       = MarketInfo (symbol, MODE_STOPLEVEL ) * point;
   
   if (stopLevel == 0 )
   {
       if (!isECN)
         stopLevel = NormalizeDouble ( 2 * spread, digits);
   }
   else
      stopLevel = NormalizeDouble (stopLevel + tickSize, digits);
isECN - 사용자가 구성할 수 있어야 합니다. 최소 거리에 대한 제한이 없는 "진정한 ECN" 유형의 계정이 있습니다. 즉, 스탑/이익/저축이 스프레드 안에 배치될 수 있습니다.
 

고맙습니다. 하지만 당신은 나와 같은 구성을 가지고 있으며 스프레드 * 2로 min stop = 0을 곱한 것뿐이지만 많은 브로커에서 알다시피 min stop = 3 스프레드, 왜 2를 만드셨습니까?

나는 매 틱마다 최소 정지를 확인합니다.

 
StopLevel은 도움이 되지 않습니다. Ask-Bid 차이를 사용하여 0도 반환되기 때문에 일부 승수가 가능합니다.
 
Alexander Bereznyak :
Ask-Bid 차이를 사용하여 0도 반환되므로 StopLevel은 도움이 되지 않습니다.
이것은 확산을 위한 것이지만 최소 정지를 위한 것입니까?
 
그리고 최소 정지도
 
Alexander Bereznyak :
그리고 최소 정지를 위해 너무
즉, 최소 스톱을 스프레드와 동일하게 만드나요?
 
Vladislav Andruschenko :

안녕하세요 여러분, 친구들입니다!

시장에는 이러한 기능이 있습니다. 최소 정류장에 대한 모든 값을 확인해야 합니다.

변수 값이 min stop보다 작으면 오류 130 이 발생하지 않도록 min stop을 할당합니다.

이제 브로커의 90%에서 스프레드와 minstop이 유동적이며 0을 제공합니다.

모든 변수에 최소 정지 값을 할당하는 코드 구성이 있습니다.

그러나 이제는 모든 곳에서 min stop = 0이기 때문에 더 이상 시장에서 통과하지 않습니다.

누가 이 문제를 다루고 있습니까?

옵션으로 최소 정지 크기에 대한 제한을 직접 도입하십시오. 예를 들어, OnInit()에서 사용자가 2포인트 미만의 정류장을 지정했는지 확인하고 경고를 발행하고 반환 코드 INIT_PARAMETERS_INCORRECT를 반환합니다.

또 다른 옵션은 사용자가 스톱 크기를 전혀 제어할 수 없도록 하는 것이 아니라 거래 조건에 따라 Expert Advisor에서 동적으로 계산하는 것입니다.

 
브로커가 최소 스톱을 0으로 선언하면 다른 것이 남지 않으므로 스프레드가 충분하지 않은 경우 승수를 선택할 수 있습니다.
 
Vitalii Ananev :

옵션으로 최소 정지 크기에 대한 제한을 직접 도입하십시오. 예를 들어, OnInit()에서 사용자가 2포인트 미만의 정류장을 지정했는지 확인하고 경고를 발행하고 반환 코드 INIT_PARAMETERS_INCORRECT를 반환합니다.

또 다른 옵션은 사용자가 스톱 크기를 전혀 제어할 수 없도록 하는 것이 아니라 거래 조건에 따라 Expert Advisor에서 동적으로 계산하는 것입니다.

동의합니다. 제어권을 주지는 않지만 유형별로 이것이 어떻게 요구되는지 알고 있습니다. 중지를 설정하고 싶습니다. 설정을 합니다.

그리고 메시지의 출력에 대해 - 감사합니다 그것에 대해 생각하겠습니다.

 
Alexander Bereznyak :
브로커가 최소 스톱을 0으로 선언하면 다른 것이 남지 않으므로 스프레드가 충분하지 않은 경우 승수를 선택할 수 있습니다.

예, 이것은 시장을 위한 것입니다. 그러나 모든 브로커에 대한 보편성은 없습니다.

그것은 시장에서 받아들여지는 것으로 판명되었습니다 - 당신은 3번의 스프레드를 위해 최소 정지를 해야 합니다,

그러나 사실 이것은 잘못된 것입니다. 브로커가 minstop = 1 스프레드를 가지고 있다면 사용자는 3 스프레드 미만을 넣을 수 없기 때문입니다.

매복.