시장에 게시된 Expert Advisors에서 최소 스톱을 확인합니다. - 페이지 3

 
Ihor Herasko :

죄송합니다. 귀하의 코드에서 StopLevel 변수의 값에 대해 말하는 곳을 보지 못했습니다. 결과로 나온 코드에서는 그러한 변수의 값이 변경되지 않습니다. 스톱 및 이익 가치에 변화가 있습니다. 결과적으로 한 번 증가하면 이러한 값을 초기 값으로 가져오는 것이 불가능합니다. 따라서 정지 수준이 이미 오래전에 감소한 동안 큰 정지, 이익을 운전할 것입니다.

다양한 브로커(수십, 수백)에 대한 정보가 없습니다. 내가 거래해야 하는 브로커와 함께(고객이 거기에 계정을 가지고 있기 때문에) 스프레드의 그림 2를 볼 수 있습니다. 어딘가에 또 다른 가치가 있을지도 모릅니다.

제 생각에는 이것은 중개인이 정보를 제공하는 근본적으로 잘못된 접근입니다. 정지 수준 제한을 얻기 위한 표준 메커니즘이 있습니다. 친절하시고 이용해주세요. 그런 다음 요청에 따라 0을 얻지만 실제로는 0이 아닙니다. 그런 다음 필요에 따라 스프레드의 크기에 따라 매 틱마다 이미 변경합니다. 따라서 Stop Level 값을 올바르게 표시하는 브로커에만 실계좌를 개설합니다.

OnInitLevels라는 함수명을 바탕으로 결론을 내렸습니다. 단일 작업과 연결됩니다.

여기 당신 말이 맞아, 우리의 기능은 비슷하지 않지만 의미는 동일합니다.

외부 변수가 있고 내부 변수가 있습니다. 내부 변수를 변경하고 외부 변수는 그대로 유지하고 스톱이 점점 더 춤을 추면 모든 내부 변수가 다시 작성되면 모든 것이 정상입니다.

하지만 최소 정지 = 스프레드 할당 *2 MetaquotsDEMO 서버가 말하는 대로 시도하겠습니다.

 
Vitalii Ananev :

내가 그랬어

어드바이저는 3가지 방법으로 스톱을 조정할 수 있습니다. 수동으로 손절매(StopLoss)를 설정하거나 0으로 설정하십시오.

StopLoss가 0이면 그 크기는 시장 상황 에 따라 계산되지만 변수 StopLimit에 의해 제한됩니다.

그리고 OnInit()에서 이러한 매개변수는 정확성을 검사합니다. 10포인트 미만으로 정지를 설정하는 것은 의미가 없기 때문입니다.

예, 하지만 예를 들어 MetaquotsDemo 서버와 같이 stop = 8이라면?
 

그랬다

 int OnInitLevels( string symToWorkmodify)
  {
   int stoplevel;
   stoplevel= SymbolInfoInteger (symToWorkmodify, SYMBOL_TRADE_STOPS_LEVEL );
   double ask= SymbolInfoDouble (symToWorkmodify, SYMBOL_ASK );
   double bid= SymbolInfoDouble (symToWorkmodify, SYMBOL_BID );
   double point= SymbolInfoDouble (symToWorkmodify, SYMBOL_POINT );
   int SPREAD=(ask-bid)/point;
   if (stoplevel== 0 )stoplevel=SPREAD* 2 ;
   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<stoplevel)StopLosss=( int )stoplevel; else StopLosss=StopLoss;
   if (TakeProfit> 0 && TakeProfit<stoplevel)TakeProfits=( int )stoplevel; else TakeProfits=TakeProfit;
   if (TrailingStop> 0 && TrailingStop<stoplevel)TrallingStops=( int )stoplevel; else TrallingStops=TrailingStop;
   if (TakeProfitALL> 0 && TakeProfitALL<stoplevel)TakeProfitsAver=( int )stoplevel; else TakeProfitsAver=( int )TakeProfitALL;
   if (TrailingStop> 0 && TrailingStop<stoplevel)TrallingStops=( int )stoplevel; else TrallingStops=TrailingStop;

   return ( 0 );
  }

진행자님의 말씀을 기다리겠습니다.

 
Vitalii Ananev :

내가 그랬어

어드바이저는 3가지 방법으로 스톱을 조정할 수 있습니다. 수동으로 손절매(StopLoss)를 설정하거나 0으로 설정하십시오.

StopLoss가 0이면 그 크기는 시장 상황 에 따라 계산되지만 변수 StopLimit에 의해 제한됩니다.

그리고 OnInit()에서 이러한 매개변수는 정확성을 검사합니다. 10포인트 미만으로 정지를 설정하는 것은 의미가 없기 때문입니다.

이것은 제공될 수 없습니다. 귀하의 수표에는 계정의 거래 조건에 대한 링크가 없습니다.
 
Alexander Bereznyak :
이것은 제공될 수 없습니다. 귀하의 수표에는 계정의 거래 조건에 대한 링크가 없습니다.
여기 그들은 천장에서 온 것입니다. 나는 여기에 고문의 전체 코드를 작성하지 않을 것입니다. 이 문제에 대한 나의 접근 방식에 동의하는 것은 당신에게 달려 있으며, 나는 당신에게 그것을 강요하지 않습니다.
 
Vladislav Andruschenko :
예, 하지만 예를 들어 MetaquotsDemo 서버와 같이 stop = 8이라면?
정지 레벨 = 8을 의미합니까? 예제에서는 거래 조건에 기반하지 않는 최소 손절매 크기를 설정했습니다. 그리고 Expert Advisor에서 구현된 거래 전략과 편의를 위해.
 
Vitalii Ananev :
정지 레벨 = 8을 의미합니까? 예제에서는 거래 조건에 기반하지 않는 최소 손절매 크기를 설정했습니다. 그리고 Expert Advisor에서 구현된 거래 전략과 편의를 위해.

예, 모든 것이 명확합니다. 전략 등

전략 등에 관한 것이 아닙니다.

당신이 시장에 전문가를 넣을 때 - 당신의 전략은 체크를 위해 잘려지고, 그들은 전략에 대해 100포인트가 아니라 1포인트를 멈춘다!!!

그것은 오류 130으로 밝혀졌습니다. 나는 그것에 대해 물었습니다 :-)

 
Vitalii Ananev :
정지 레벨 = 8을 의미합니까? 예제에서는 거래 조건에 기반하지 않는 최소 손절매 크기를 설정했습니다. 그리고 Expert Advisor에서 구현된 거래 전략과 편의를 위해.
편의가 실수로 계정의 거래 조건과 충돌할 수 있습니다.
 
Vladislav Andruschenko :

예, 모든 것이 명확합니다. 전략 등

그것은 전략 등에 관한 것이 아닙니다.

당신이 시장에 전문가를 넣을 때 - 당신의 전략은 체크를 위해 잘려지고, 그들은 전략에 대해 100포인트가 아니라 1포인트를 멈춘다!!!

그것은 오류 130으로 밝혀졌습니다. 나는 그것에 대해 물었습니다 :-)

그래서 저는 스탑 레벨이 유동적이라면 Alexander가 제안한 대로 스프레드에 바인딩하거나 스탑 로스 의 크기를 설정하는 것이 불가능한 경계 조건을 설정하는 경우에 대해 이야기했습니다.
 
Vitalii Ananev :
그래서 저는 스탑 레벨이 유동적이라면 Alexander가 제안한 대로 스프레드에 바인딩하거나 스탑 로스 의 크기를 설정하는 것이 불가능한 경계 조건을 설정하는 경우에 대해 이야기했습니다.

나는 지금까지 스프레드 * 2를 확인했습니다. 그들이 말하는 것을 봅시다.